2018-09-09 09:36:13 -07:00
|
|
|
import { set, delete as del } from 'vue'
|
|
|
|
|
|
|
|
const defaultState = {
|
2020-05-03 07:36:12 -07:00
|
|
|
settingsModalState: 'hidden',
|
2018-09-09 09:36:13 -07:00
|
|
|
settings: {
|
|
|
|
currentSaveStateNotice: null,
|
2018-12-13 03:04:09 -08:00
|
|
|
noticeClearTimeout: null,
|
|
|
|
notificationPermission: null
|
2018-11-30 05:39:07 -08:00
|
|
|
},
|
|
|
|
browserSupport: {
|
|
|
|
cssFilter: window.CSS && window.CSS.supports && (
|
|
|
|
window.CSS.supports('filter', 'drop-shadow(0 0)') ||
|
2018-12-13 03:22:15 -08:00
|
|
|
window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')
|
2018-11-30 05:39:07 -08:00
|
|
|
)
|
2019-03-03 06:33:40 -08:00
|
|
|
},
|
|
|
|
mobileLayout: false
|
2018-09-09 09:36:13 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
const interfaceMod = {
|
|
|
|
state: defaultState,
|
|
|
|
mutations: {
|
|
|
|
settingsSaved (state, { success, error }) {
|
|
|
|
if (success) {
|
|
|
|
if (state.noticeClearTimeout) {
|
|
|
|
clearTimeout(state.noticeClearTimeout)
|
|
|
|
}
|
|
|
|
set(state.settings, 'currentSaveStateNotice', { error: false, data: success })
|
|
|
|
set(state.settings, 'noticeClearTimeout',
|
2018-12-13 03:04:09 -08:00
|
|
|
setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000))
|
2018-09-09 09:36:13 -07:00
|
|
|
} else {
|
|
|
|
set(state.settings, 'currentSaveStateNotice', { error: true, errorData: error })
|
|
|
|
}
|
2018-12-13 03:04:09 -08:00
|
|
|
},
|
|
|
|
setNotificationPermission (state, permission) {
|
|
|
|
state.notificationPermission = permission
|
2019-03-03 06:33:40 -08:00
|
|
|
},
|
|
|
|
setMobileLayout (state, value) {
|
|
|
|
state.mobileLayout = value
|
2020-05-03 07:36:12 -07:00
|
|
|
},
|
|
|
|
closeSettingsModal (state) {
|
|
|
|
state.settingsModalState = 'hidden'
|
|
|
|
},
|
|
|
|
togglePeekSettingsModal (state) {
|
|
|
|
switch (state.settingsModalState) {
|
|
|
|
case 'minimized':
|
|
|
|
state.settingsModalState = 'visible'
|
|
|
|
return
|
|
|
|
case 'visible':
|
|
|
|
state.settingsModalState = 'minimized'
|
|
|
|
return
|
|
|
|
default:
|
|
|
|
throw new Error('Illegal minimization state of settings modal')
|
|
|
|
}
|
|
|
|
},
|
|
|
|
openSettingsModal (state) {
|
|
|
|
state.settingsModalState = 'visible'
|
2018-09-09 09:36:13 -07:00
|
|
|
}
|
|
|
|
},
|
|
|
|
actions: {
|
2018-09-09 11:21:23 -07:00
|
|
|
setPageTitle ({ rootState }, option = '') {
|
|
|
|
document.title = `${option} ${rootState.instance.name}`
|
2018-09-09 09:36:13 -07:00
|
|
|
},
|
|
|
|
settingsSaved ({ commit, dispatch }, { success, error }) {
|
|
|
|
commit('settingsSaved', { success, error })
|
2018-12-13 03:04:09 -08:00
|
|
|
},
|
|
|
|
setNotificationPermission ({ commit }, permission) {
|
|
|
|
commit('setNotificationPermission', permission)
|
2019-03-03 06:33:40 -08:00
|
|
|
},
|
|
|
|
setMobileLayout ({ commit }, value) {
|
|
|
|
commit('setMobileLayout', value)
|
2020-05-03 07:36:12 -07:00
|
|
|
},
|
|
|
|
closeSettingsModal ({ commit }) {
|
|
|
|
commit('closeSettingsModal')
|
|
|
|
},
|
|
|
|
openSettingsModal ({ commit }) {
|
|
|
|
commit('openSettingsModal')
|
|
|
|
},
|
|
|
|
togglePeekSettingsModal ({ commit }) {
|
|
|
|
commit('togglePeekSettingsModal')
|
2018-09-09 09:36:13 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default interfaceMod
|