From c165ee20f9f840087fa56346d716e41163c262fa Mon Sep 17 00:00:00 2001 From: dartcafe Date: Mon, 22 Mar 2021 07:03:57 +0100 Subject: drill down actions to components and move some logic to store Signed-off-by: dartcafe --- src/js/store/modules/settings.js | 75 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) (limited to 'src/js/store/modules/settings.js') diff --git a/src/js/store/modules/settings.js b/src/js/store/modules/settings.js index 53d3441d..f71802ab 100644 --- a/src/js/store/modules/settings.js +++ b/src/js/store/modules/settings.js @@ -36,6 +36,10 @@ const defaultSettings = () => { defaultViewTextPoll: 'list-view', defaultViewDatePoll: 'table-view', }, + session: { + manualViewDatePoll: '', + manualViewTextPoll: '', + }, availableCalendars: [], viewModes: [ 'list-view', @@ -71,12 +75,65 @@ const mutations = { state.user[key] = payload[key] }) }, + setCalendars(state, payload) { state.availableCalendars = payload.calendars }, + addCheckCalendar(state, payload) { state.user.checkCalendars.push(payload.calendar.key) }, + + setViewDatePoll(state, payload) { + state.session.manualViewDatePoll = payload + }, + setViewTextPoll(state, payload) { + state.session.manualViewTextPoll = payload + }, +} + +const getters = { + viewTextPoll(state) { + if (state.session.manualViewTextPoll) { + return state.session.manualViewTextPoll + } else { + if (window.innerWidth > 480) { + return state.user.defaultViewTextPoll + } else { + return 'list-view' + } + } + }, + + getNextViewMode(state, getters) { + if (state.viewModes.indexOf(getters.viewMode) < 0) { + return state.viewModes[1] + } else { + return state.viewModes[(state.viewModes.indexOf(getters.viewMode) + 1) % state.viewModes.length] + } + }, + + viewDatePoll(state) { + if (state.session.manualViewDatePoll) { + return state.session.manualViewDatePoll + } else { + if (window.innerWidth > 480) { + return state.user.defaultViewDatePoll + } else { + return 'list-view' + } + } + }, + + viewMode(state, getters, rootState) { + if (rootState.poll.type === 'textPoll') { + return getters.viewTextPoll + } else if (rootState.poll.type === 'datePoll') { + return getters.viewDatePoll + } else { + return 'table-view' + } + }, } const actions = { @@ -102,6 +159,22 @@ const actions = { } }, + changeView(context) { + if (context.rootState.poll.type === 'datePoll') { + if (context.state.manualViewDatePoll) { + context.commit('setViewDatePoll', '') + } else { + context.commit('setViewDatePoll', context.getters.getNextViewMode) + } + } else if (context.rootState.poll.type === 'textPoll') { + if (context.state.manualViewTextPoll) { + context.commit('setViewTextPoll', '') + } else { + context.commit('setViewTextPoll', context.getters.getNextViewMode) + } + } + }, + async write(context) { const endPoint = 'apps/polls/preferences/write' try { @@ -121,4 +194,4 @@ const actions = { }, } -export default { namespaced, state, mutations, actions } +export default { namespaced, state, mutations, getters, actions } -- cgit v1.2.3