diff options
| author | Henry Jameson <me@hjkos.com> | 2018-09-09 21:21:23 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2018-09-17 17:51:39 +0300 |
| commit | 82fa5d08c4f441fa9df20edab214b99ecb7776b3 (patch) | |
| tree | 019ea9955fbe3cd208b65beb7a4abd4339bde23d | |
| parent | 2db991fc7fb1eda11b94d585d3b56f9d94c81286 (diff) | |
more refactoring
| -rw-r--r-- | src/App.js | 6 | ||||
| -rw-r--r-- | src/components/features_panel/features_panel.js | 10 | ||||
| -rw-r--r-- | src/components/login_form/login_form.js | 2 | ||||
| -rw-r--r-- | src/components/post_status_form/post_status_form.js | 8 | ||||
| -rw-r--r-- | src/components/registration/registration.js | 6 | ||||
| -rw-r--r-- | src/components/settings/settings.js | 35 | ||||
| -rw-r--r-- | src/components/settings/settings.vue | 2 | ||||
| -rw-r--r-- | src/components/user_settings/user_settings.js | 4 | ||||
| -rw-r--r-- | src/main.js | 44 | ||||
| -rw-r--r-- | src/modules/instance.js | 47 | ||||
| -rw-r--r-- | src/modules/interface.js | 21 |
11 files changed, 109 insertions, 76 deletions
@@ -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.interface.name }, + sitename () { return this.$store.state.instance.name }, chat () { return this.$store.state.chat.channel.state === 'joined' }, - suggestionsEnabled () { return this.$store.state.interface.suggestionsEnabled }, - showInstanceSpecificPanel () { return this.$store.state.interface.showInstanceSpecificPanel } + suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled }, + showInstanceSpecificPanel () { return this.$store.state.instance.showInstanceSpecificPanel } }, methods: { activatePanel (panelName) { diff --git a/src/components/features_panel/features_panel.js b/src/components/features_panel/features_panel.js index 80f5c966..945165bb 100644 --- a/src/components/features_panel/features_panel.js +++ b/src/components/features_panel/features_panel.js @@ -3,11 +3,11 @@ const FeaturesPanel = { chat: function () { return this.$store.state.config.chatAvailable && (!this.$store.state.chatDisabled) }, - gopher: function () { return this.$store.state.config.gopherAvailable }, - whoToFollow: function () { return this.$store.state.config.suggestionsEnabled }, - mediaProxy: function () { return this.$store.state.config.mediaProxyAvailable }, - scopeOptions: function () { return this.$store.state.config.scopeOptionsEnabled }, - textlimit: function () { return this.$store.state.config.textlimit } + gopher: function () { return this.$store.state.instance.gopherAvailable }, + whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled }, + mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable }, + scopeOptions: function () { return this.$store.state.instance.scopeOptionsEnabled }, + textlimit: function () { return this.$store.state.instance.textlimit } } } diff --git a/src/components/login_form/login_form.js b/src/components/login_form/login_form.js index 12144324..4405fb92 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.interface.registrationOpen } + registrationOpen () { return this.$store.state.instance.registrationOpen } }, methods: { submit () { diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js index 7babe236..dc92f009 100644 --- a/src/components/post_status_form/post_status_form.js +++ b/src/components/post_status_form/post_status_form.js @@ -120,10 +120,10 @@ const PostStatusForm = { return this.$store.state.users.users }, emoji () { - return this.$store.state.config.emoji || [] + return this.$store.state.instance.emoji || [] }, customEmoji () { - return this.$store.state.config.customEmoji || [] + return this.$store.state.instance.customEmoji || [] }, statusLength () { return this.newStatus.status.length @@ -141,10 +141,10 @@ const PostStatusForm = { return this.hasStatusLengthLimit && (this.statusLength > this.statusLengthLimit) }, scopeOptionsEnabled () { - return this.$store.state.config.scopeOptionsEnabled + return this.$store.state.instance.scopeOptionsEnabled }, formattingOptionsEnabled () { - return this.$store.state.config.formattingOptionsEnabled + return this.$store.state.instance.formattingOptionsEnabled } }, methods: { diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js index e53fa4e5..8f59878d 100644 --- a/src/components/registration/registration.js +++ b/src/components/registration/registration.js @@ -5,16 +5,16 @@ const registration = { registering: false }), created () { - if ((!this.$store.state.interface.registrationOpen && !this.token) || !!this.$store.state.users.currentUser) { + if ((!this.$store.state.instance.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.interface.registrationOpen && this.token) { + if (this.$store.state.instance.registrationOpen && this.token) { this.$router.push('/registration') } }, computed: { - termsofservice () { return this.$store.state.config.tos }, + termsofservice () { return this.$store.state.instance.tos }, token () { return this.$route.params.token } }, methods: { diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js index 6d481820..856ca40e 100644 --- a/src/components/settings/settings.js +++ b/src/components/settings/settings.js @@ -6,25 +6,26 @@ import { filter, trim } from 'lodash' const settings = { data () { - const config = this.$store.state.config + const user = this.$store.state.config + const instance = this.$store.state.instance return { - hideAttachmentsLocal: config.hideAttachments, - hideAttachmentsInConvLocal: config.hideAttachmentsInConv, - hideNsfwLocal: config.hideNsfw, - notificationVisibilityLocal: config.notificationVisibility, - replyVisibilityLocal: config.replyVisibility, - loopVideoLocal: config.loopVideo, - loopVideoSilentOnlyLocal: config.loopVideoSilentOnly, - muteWordsString: config.muteWords.join('\n'), - autoLoadLocal: config.autoLoad, - streamingLocal: config.streaming, - pauseOnUnfocusedLocal: config.pauseOnUnfocused, - hoverPreviewLocal: config.hoverPreview, - collapseMessageWithSubjectLocal: typeof config.collapseMessageWithSubject === 'undefined' - ? config.defaultCollapseMessageWithSubject - : config.collapseMessageWithSubject, - stopGifs: config.stopGifs, + hideAttachmentsLocal: user.hideAttachments, + hideAttachmentsInConvLocal: user.hideAttachmentsInConv, + hideNsfwLocal: user.hideNsfw, + notificationVisibilityLocal: user.notificationVisibility, + replyVisibilityLocal: user.replyVisibility, + loopVideoLocal: user.loopVideo, + loopVideoSilentOnlyLocal: user.loopVideoSilentOnly, + muteWordsString: user.muteWords.join('\n'), + autoLoadLocal: user.autoLoad, + streamingLocal: user.streaming, + pauseOnUnfocusedLocal: user.pauseOnUnfocused, + hoverPreviewLocal: user.hoverPreview, + collapseMessageWithSubjectLocal: typeof user.collapseMessageWithSubject === 'undefined' + ? instance.collapseMessageWithSubject + : user.collapseMessageWithSubject, + stopGifs: user.stopGifs, loopSilentAvailable: // Firefox Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') || diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue index 481cdf09..55ffa591 100644 --- a/src/components/settings/settings.vue +++ b/src/components/settings/settings.vue @@ -7,7 +7,7 @@ <transition name="fade"> <template v-if="currentSaveStateNotice"> - <div @click.prevent class="alert error" v-if="!currentSaveStateNotice.error"> + <div @click.prevent class="alert error" v-if="currentSaveStateNotice.error"> Errr </div> diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js index 0b13a668..70463f2a 100644 --- a/src/components/user_settings/user_settings.js +++ b/src/components/user_settings/user_settings.js @@ -32,10 +32,10 @@ const UserSettings = { return this.$store.state.users.currentUser }, pleromaBackend () { - return this.$store.state.config.pleromaBackend + return this.$store.state.instance.pleromaBackend }, scopeOptionsEnabled () { - return this.$store.state.config.scopeOptionsEnabled + return this.$store.state.instance.scopeOptionsEnabled }, vis () { return { diff --git a/src/main.js b/src/main.js index 1f3c5da9..23bd2cd3 100644 --- a/src/main.js +++ b/src/main.js @@ -15,6 +15,7 @@ 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 instanceModule from './modules/instance.js' import statusesModule from './modules/statuses.js' import usersModule from './modules/users.js' import apiModule from './modules/api.js' @@ -68,9 +69,10 @@ const persistedStateOptions = { ] } -const store = console.log('interfaceModule') || new Vuex.Store({ +const store = new Vuex.Store({ modules: { interface: interfaceModule, + instance: instanceModule, statuses: statusesModule, users: usersModule, api: apiModule, @@ -122,15 +124,15 @@ window.fetch('/api/statusnet/config.json') var formattingOptionsEnabled = (config.formattingOptionsEnabled) var defaultCollapseMessageWithSubject = (config.collapseMessageWithSubject) - store.dispatch('setOption', { name: 'theme', value: theme }) - store.dispatch('setOption', { name: 'background', value: background }) - store.dispatch('setOption', { name: 'logo', value: logo }) - store.dispatch('setOption', { name: 'logoMask', value: logoMask }) - store.dispatch('setOption', { name: 'logoMargin', value: logoMargin }) - store.dispatch('setOption', { name: 'showInstanceSpecificPanel', value: showInstanceSpecificPanel }) - store.dispatch('setOption', { name: 'scopeOptionsEnabled', value: scopeOptionsEnabled }) - store.dispatch('setOption', { name: 'formattingOptionsEnabled', value: formattingOptionsEnabled }) - store.dispatch('setOption', { name: 'defaultCollapseMessageWithSubject', value: defaultCollapseMessageWithSubject }) + store.dispatch('setInstanceOption', { name: 'theme', value: theme }) + store.dispatch('setInstanceOption', { name: 'background', value: background }) + store.dispatch('setInstanceOption', { name: 'logo', value: logo }) + store.dispatch('setInstanceOption', { name: 'logoMask', value: logoMask }) + store.dispatch('setInstanceOption', { name: 'logoMargin', value: logoMargin }) + store.dispatch('setInstanceOption', { name: 'showInstanceSpecificPanel', value: showInstanceSpecificPanel }) + store.dispatch('setInstanceOption', { name: 'scopeOptionsEnabled', value: scopeOptionsEnabled }) + store.dispatch('setInstanceOption', { name: 'formattingOptionsEnabled', value: formattingOptionsEnabled }) + store.dispatch('setInstanceOption', { name: 'collapseMessageWithSubject', value: defaultCollapseMessageWithSubject }) if (chatDisabled) { store.dispatch('disableChat') } @@ -180,7 +182,7 @@ window.fetch('/api/statusnet/config.json') window.fetch('/static/terms-of-service.html') .then((res) => res.text()) .then((html) => { - store.dispatch('setOption', { name: 'tos', value: html }) + store.dispatch('setInstanceOption', { name: 'tos', value: html }) }) window.fetch('/api/pleroma/emoji.json') @@ -191,11 +193,11 @@ window.fetch('/api/pleroma/emoji.json') const emoji = Object.keys(values).map((key) => { return { shortcode: key, image_url: values[key] } }) - store.dispatch('setOption', { name: 'customEmoji', value: emoji }) - store.dispatch('setOption', { name: 'pleromaBackend', value: true }) + store.dispatch('setInstanceOption', { name: 'customEmoji', value: emoji }) + store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: true }) }, (failure) => { - store.dispatch('setOption', { name: 'pleromaBackend', value: false }) + store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: false }) } ), (error) => console.log(error) @@ -207,24 +209,24 @@ window.fetch('/static/emoji.json') const emoji = Object.keys(values).map((key) => { return { shortcode: key, image_url: false, 'utf': values[key] } }) - store.dispatch('setOption', { name: 'emoji', value: emoji }) + store.dispatch('setInstanceOption', { name: 'emoji', value: emoji }) }) window.fetch('/instance/panel.html') .then((res) => res.text()) .then((html) => { - store.dispatch('setOption', { name: 'instanceSpecificPanelContent', value: html }) + store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html }) }) window.fetch('/nodeinfo/2.0.json') .then((res) => res.json()) .then((data) => { const metadata = data.metadata - store.dispatch('setOption', { name: 'mediaProxyAvailable', value: data.metadata.mediaProxy }) - store.dispatch('setOption', { name: 'chatAvailable', value: data.metadata.chat }) - store.dispatch('setOption', { name: 'gopherAvailable', value: data.metadata.gopher }) + store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: data.metadata.mediaProxy }) + store.dispatch('setInstanceOption', { name: 'chatAvailable', value: data.metadata.chat }) + store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: data.metadata.gopher }) const suggestions = metadata.suggestions - store.dispatch('setOption', { name: 'suggestionsEnabled', value: suggestions.enabled }) - store.dispatch('setOption', { name: 'suggestionsWeb', value: suggestions.web }) + store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled }) + store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web }) }) diff --git a/src/modules/instance.js b/src/modules/instance.js new file mode 100644 index 00000000..228cee4c --- /dev/null +++ b/src/modules/instance.js @@ -0,0 +1,47 @@ +import { set } from 'vue' + +const defaultState = { + name: 'Pleroma FE', + registrationOpen: true, + textlimit: 5000, + server: 'http://localhost:4040/', + theme: 'pleroma-dark', + background: 'img.png', + logo: '/static/logo.png', + logoMask: true, + logoMargin: '.2em', + redirectRootNoLogin: '/main/all', + redirectRootLogin: '/main/friends', + showInstanceSpecificPanel: false, + scopeOptionsEnabled: true, + formattingOptionsEnabled: false, + collapseMessageWithSubject: false, + disableChat: false, + // Nasty stuff + pleromaBackend: true, + customEmoji: [], + // Html stuff + instanceSpecificPanelContent: '', + tos: '' +} + +const instance = { + state: defaultState, + mutations: { + setInstanceOption (state, { name, value }) { + set(state, name, value) + } + }, + actions: { + setInstanceOption ({ commit, dispatch }, { name, value }) { + commit('setInstanceOption', {name, value}) + switch (name) { + case 'name': + dispatch('setPageTitle') + break + } + } + } +} + +export default instance diff --git a/src/modules/interface.js b/src/modules/interface.js index 0067ee64..07489685 100644 --- a/src/modules/interface.js +++ b/src/modules/interface.js @@ -1,10 +1,6 @@ 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 @@ -14,11 +10,6 @@ const defaultState = { 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) { @@ -33,19 +24,11 @@ const interfaceMod = { } }, actions: { - setPageTitle ({state}, option = '') { - document.title = `${option} ${state.name}` + setPageTitle ({ rootState }, option = '') { + document.title = `${option} ${rootState.instance.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 - } } } } |
