some recategorization of options...

This commit is contained in:
Henry Jameson 2018-09-09 19:36:13 +03:00
parent f1c16327b6
commit 2db991fc7f
8 changed files with 78 additions and 47 deletions

View file

@ -60,10 +60,10 @@ export default {
}, },
logo () { return this.$store.state.config.logo }, logo () { return this.$store.state.config.logo },
style () { return { 'background-image': `url(${this.background})` } }, 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' }, chat () { return this.$store.state.chat.channel.state === 'joined' },
suggestionsEnabled () { return this.$store.state.config.suggestionsEnabled }, suggestionsEnabled () { return this.$store.state.interface.suggestionsEnabled },
showInstanceSpecificPanel () { return this.$store.state.config.showInstanceSpecificPanel } showInstanceSpecificPanel () { return this.$store.state.interface.showInstanceSpecificPanel }
}, },
methods: { methods: {
activatePanel (panelName) { activatePanel (panelName) {

View file

@ -5,7 +5,7 @@ const LoginForm = {
}), }),
computed: { computed: {
loggingIn () { return this.$store.state.users.loggingIn }, loggingIn () { return this.$store.state.users.loggingIn },
registrationOpen () { return this.$store.state.config.registrationOpen } registrationOpen () { return this.$store.state.interface.registrationOpen }
}, },
methods: { methods: {
submit () { submit () {

View file

@ -5,11 +5,11 @@ const registration = {
registering: false registering: false
}), }),
created () { 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') this.$router.push('/main/all')
} }
// Seems like this doesn't work at first page open for some reason // 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') this.$router.push('/registration')
} }
}, },

View file

@ -44,8 +44,7 @@ const settings = {
return this.$store.state.users.currentUser return this.$store.state.users.currentUser
}, },
currentSaveStateNotice () { currentSaveStateNotice () {
console.log(this.$store.state.config._internal.currentSaveStateNotice && this.$store.state.config._internal.currentSaveStateNotice.error) return this.$store.state.interface.settings.currentSaveStateNotice
return this.$store.state.config._internal.currentSaveStateNotice
} }
}, },
watch: { watch: {

View file

@ -5,15 +5,17 @@
{{$t('settings.settings')}} {{$t('settings.settings')}}
</div> </div>
<template v-if="currentSaveStateNotice"> <transition name="fade">
<div @click.prevent class="alert error" v-if="currentSaveStateNotice.error"> <template v-if="currentSaveStateNotice">
Errr <div @click.prevent class="alert error" v-if="!currentSaveStateNotice.error">
</div> Errr
</div>
<div @click.prevent class="alert success" v-if="!currentSaveStateNotice.error"> <div @click.prevent class="alert success" v-if="!currentSaveStateNotice.error">
Succ Succ
</div> </div>
</template> </template>
</transition>
</div> </div>
<div class="panel-body"> <div class="panel-body">
<tab-switcher> <tab-switcher>

View file

@ -14,6 +14,7 @@ import Registration from './components/registration/registration.vue'
import UserSettings from './components/user_settings/user_settings.vue' import UserSettings from './components/user_settings/user_settings.vue'
import FollowRequests from './components/follow_requests/follow_requests.vue' import FollowRequests from './components/follow_requests/follow_requests.vue'
import interfaceModule from './modules/interface.js'
import statusesModule from './modules/statuses.js' import statusesModule from './modules/statuses.js'
import usersModule from './modules/users.js' import usersModule from './modules/users.js'
import apiModule from './modules/api.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: { modules: {
interface: interfaceModule,
statuses: statusesModule, statuses: statusesModule,
users: usersModule, users: usersModule,
api: apiModule, api: apiModule,
@ -92,10 +94,11 @@ window.fetch('/api/statusnet/config.json')
.then((data) => { .then((data) => {
const {name, closed: registrationClosed, textlimit, server} = data.site const {name, closed: registrationClosed, textlimit, server} = data.site
store.dispatch('setOption', { name: 'name', value: name }) console.log(store)
store.dispatch('setOption', { name: 'registrationOpen', value: (registrationClosed === '0') }) store.dispatch('setInstanceOption', { name: 'name', value: name })
store.dispatch('setOption', { name: 'textlimit', value: parseInt(textlimit) }) store.dispatch('setInstanceOption', { name: 'registrationOpen', value: (registrationClosed === '0') })
store.dispatch('setOption', { name: 'server', value: server }) store.dispatch('setInstanceOption', { name: 'textlimit', value: parseInt(textlimit) })
store.dispatch('setInstanceOption', { name: 'server', value: server })
var apiConfig = data.site.pleromafe var apiConfig = data.site.pleromafe

View file

@ -4,7 +4,6 @@ import StyleSetter from '../services/style_setter/style_setter.js'
const browserLocale = (window.navigator.language || 'en').split('-')[0] const browserLocale = (window.navigator.language || 'en').split('-')[0]
const defaultState = { const defaultState = {
name: 'Pleroma FE',
colors: {}, colors: {},
collapseMessageWithSubject: false, collapseMessageWithSubject: false,
hideAttachments: false, hideAttachments: false,
@ -26,11 +25,7 @@ const defaultState = {
}, },
muteWords: [], muteWords: [],
highlight: {}, highlight: {},
interfaceLanguage: browserLocale, interfaceLanguage: browserLocale
_internal: {
currentSaveStateNotice: {},
noticeClearTimeout: null
}
} }
const config = { const config = {
@ -46,36 +41,15 @@ const config = {
} else { } else {
del(state.highlight, user) 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: { actions: {
setPageTitle ({state}, option = '') {
document.title = `${option} ${state.name}`
},
setHighlight ({ commit, dispatch }, { user, color, type }) { setHighlight ({ commit, dispatch }, { user, color, type }) {
commit('setHighlight', {user, color, type}) commit('setHighlight', {user, color, type})
}, },
settingsSaved ({ commit, dispatch }, { success, error }) {
commit('settingsSaved', { success, error })
},
setOption ({ commit, dispatch }, { name, value }) { setOption ({ commit, dispatch }, { name, value }) {
commit('setOption', {name, value}) commit('setOption', {name, value})
switch (name) { switch (name) {
case 'name':
dispatch('setPageTitle')
break
case 'theme': case 'theme':
StyleSetter.setPreset(value, commit) StyleSetter.setPreset(value, commit)
break break

53
src/modules/interface.js Normal file
View file

@ -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