From 2db991fc7fb1eda11b94d585d3b56f9d94c81286 Mon Sep 17 00:00:00 2001 From: Henry Jameson <me@hjkos.com> Date: Sun, 9 Sep 2018 19:36:13 +0300 Subject: [PATCH] some recategorization of options... --- src/App.js | 6 +-- src/components/login_form/login_form.js | 2 +- src/components/registration/registration.js | 4 +- src/components/settings/settings.js | 3 +- src/components/settings/settings.vue | 16 ++++--- src/main.js | 13 +++-- src/modules/config.js | 28 +---------- src/modules/interface.js | 53 +++++++++++++++++++++ 8 files changed, 78 insertions(+), 47 deletions(-) create mode 100644 src/modules/interface.js diff --git a/src/App.js b/src/App.js index be6548f3..251fdfca 100644 --- a/src/App.js +++ b/src/App.js @@ -60,10 +60,10 @@ export default { }, logo () { return this.$store.state.config.logo }, style () { return { 'background-image': `url(${this.background})` } }, - sitename () { return this.$store.state.config.name }, + sitename () { return this.$store.state.interface.name }, chat () { return this.$store.state.chat.channel.state === 'joined' }, - suggestionsEnabled () { return this.$store.state.config.suggestionsEnabled }, - showInstanceSpecificPanel () { return this.$store.state.config.showInstanceSpecificPanel } + suggestionsEnabled () { return this.$store.state.interface.suggestionsEnabled }, + showInstanceSpecificPanel () { return this.$store.state.interface.showInstanceSpecificPanel } }, methods: { activatePanel (panelName) { diff --git a/src/components/login_form/login_form.js b/src/components/login_form/login_form.js index a117b76f..12144324 100644 --- a/src/components/login_form/login_form.js +++ b/src/components/login_form/login_form.js @@ -5,7 +5,7 @@ const LoginForm = { }), computed: { loggingIn () { return this.$store.state.users.loggingIn }, - registrationOpen () { return this.$store.state.config.registrationOpen } + registrationOpen () { return this.$store.state.interface.registrationOpen } }, methods: { submit () { diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js index 73840608..e53fa4e5 100644 --- a/src/components/registration/registration.js +++ b/src/components/registration/registration.js @@ -5,11 +5,11 @@ const registration = { registering: false }), created () { - if ((!this.$store.state.config.registrationOpen && !this.token) || !!this.$store.state.users.currentUser) { + if ((!this.$store.state.interface.registrationOpen && !this.token) || !!this.$store.state.users.currentUser) { this.$router.push('/main/all') } // Seems like this doesn't work at first page open for some reason - if (this.$store.state.config.registrationOpen && this.token) { + if (this.$store.state.interface.registrationOpen && this.token) { this.$router.push('/registration') } }, diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js index 5e28c1af..6d481820 100644 --- a/src/components/settings/settings.js +++ b/src/components/settings/settings.js @@ -44,8 +44,7 @@ const settings = { return this.$store.state.users.currentUser }, currentSaveStateNotice () { - console.log(this.$store.state.config._internal.currentSaveStateNotice && this.$store.state.config._internal.currentSaveStateNotice.error) - return this.$store.state.config._internal.currentSaveStateNotice + return this.$store.state.interface.settings.currentSaveStateNotice } }, watch: { diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue index be7c64a7..481cdf09 100644 --- a/src/components/settings/settings.vue +++ b/src/components/settings/settings.vue @@ -5,15 +5,17 @@ {{$t('settings.settings')}} </div> - <template v-if="currentSaveStateNotice"> - <div @click.prevent class="alert error" v-if="currentSaveStateNotice.error"> - Errr - </div> + <transition name="fade"> + <template v-if="currentSaveStateNotice"> + <div @click.prevent class="alert error" v-if="!currentSaveStateNotice.error"> + Errr + </div> - <div @click.prevent class="alert success" v-if="!currentSaveStateNotice.error"> - Succ - </div> + <div @click.prevent class="alert success" v-if="!currentSaveStateNotice.error"> + Succ + </div> </template> + </transition> </div> <div class="panel-body"> <tab-switcher> diff --git a/src/main.js b/src/main.js index 75c2bab2..1f3c5da9 100644 --- a/src/main.js +++ b/src/main.js @@ -14,6 +14,7 @@ import Registration from './components/registration/registration.vue' import UserSettings from './components/user_settings/user_settings.vue' import FollowRequests from './components/follow_requests/follow_requests.vue' +import interfaceModule from './modules/interface.js' import statusesModule from './modules/statuses.js' import usersModule from './modules/users.js' import apiModule from './modules/api.js' @@ -67,8 +68,9 @@ const persistedStateOptions = { ] } -const store = new Vuex.Store({ +const store = console.log('interfaceModule') || new Vuex.Store({ modules: { + interface: interfaceModule, statuses: statusesModule, users: usersModule, api: apiModule, @@ -92,10 +94,11 @@ window.fetch('/api/statusnet/config.json') .then((data) => { const {name, closed: registrationClosed, textlimit, server} = data.site - store.dispatch('setOption', { name: 'name', value: name }) - store.dispatch('setOption', { name: 'registrationOpen', value: (registrationClosed === '0') }) - store.dispatch('setOption', { name: 'textlimit', value: parseInt(textlimit) }) - store.dispatch('setOption', { name: 'server', value: server }) + console.log(store) + store.dispatch('setInstanceOption', { name: 'name', value: name }) + store.dispatch('setInstanceOption', { name: 'registrationOpen', value: (registrationClosed === '0') }) + store.dispatch('setInstanceOption', { name: 'textlimit', value: parseInt(textlimit) }) + store.dispatch('setInstanceOption', { name: 'server', value: server }) var apiConfig = data.site.pleromafe diff --git a/src/modules/config.js b/src/modules/config.js index cb59acaa..375d0167 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -4,7 +4,6 @@ import StyleSetter from '../services/style_setter/style_setter.js' const browserLocale = (window.navigator.language || 'en').split('-')[0] const defaultState = { - name: 'Pleroma FE', colors: {}, collapseMessageWithSubject: false, hideAttachments: false, @@ -26,11 +25,7 @@ const defaultState = { }, muteWords: [], highlight: {}, - interfaceLanguage: browserLocale, - _internal: { - currentSaveStateNotice: {}, - noticeClearTimeout: null - } + interfaceLanguage: browserLocale } const config = { @@ -46,36 +41,15 @@ const config = { } else { del(state.highlight, user) } - }, - settingsSaved (state, { success, error }) { - if (success) { - if (state.noticeClearTimeout) { - clearTimeout(state.noticeClearTimeout) - } - set(state._internal, 'currentSaveStateNotice', { error: false, data: success }) - set(state._internal, 'noticeClearTimeout', - setTimeout(() => del(state._internal, 'currentSaveStateNotice'), 2000)) - } else { - set(state._internal, 'currentSaveStateNotice', { error: true, errorData: error }) - } } }, actions: { - setPageTitle ({state}, option = '') { - document.title = `${option} ${state.name}` - }, setHighlight ({ commit, dispatch }, { user, color, type }) { commit('setHighlight', {user, color, type}) }, - settingsSaved ({ commit, dispatch }, { success, error }) { - commit('settingsSaved', { success, error }) - }, setOption ({ commit, dispatch }, { name, value }) { commit('setOption', {name, value}) switch (name) { - case 'name': - dispatch('setPageTitle') - break case 'theme': StyleSetter.setPreset(value, commit) break diff --git a/src/modules/interface.js b/src/modules/interface.js new file mode 100644 index 00000000..0067ee64 --- /dev/null +++ b/src/modules/interface.js @@ -0,0 +1,53 @@ +import { set, delete as del } from 'vue' + +const defaultState = { + name: 'Pleroma FE', + registrationOpen: true, + textlimit: 5000, + server: 'http://localhost:4040/', + settings: { + currentSaveStateNotice: null, + noticeClearTimeout: null + } +} + +const interfaceMod = { + state: defaultState, + mutations: { + setInstanceOption (state, { name, value }) { + console.log(state) + console.log(name) + set(state, name, value) + }, + settingsSaved (state, { success, error }) { + if (success) { + if (state.noticeClearTimeout) { + clearTimeout(state.noticeClearTimeout) + } + set(state.settings, 'currentSaveStateNotice', { error: false, data: success }) + set(state.settings, 'noticeClearTimeout', + setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000)) + } else { + set(state.settings, 'currentSaveStateNotice', { error: true, errorData: error }) + } + } + }, + actions: { + setPageTitle ({state}, option = '') { + document.title = `${option} ${state.name}` + }, + settingsSaved ({ commit, dispatch }, { success, error }) { + commit('settingsSaved', { success, error }) + }, + setInstanceOption ({ commit, dispatch }, { name, value }) { + commit('setInstanceOption', {name, value}) + switch (name) { + case 'name': + dispatch('setPageTitle') + break + } + } + } +} + +export default interfaceMod