2019-04-04 16:52:08 +02:00
|
|
|
import { Module, MutationTree, ActionTree } from 'vuex'
|
2019-04-14 16:11:24 +02:00
|
|
|
import { RootState } from '@/store'
|
2019-12-04 14:48:55 +01:00
|
|
|
import { MyWindow } from '~/src/types/global'
|
2022-01-01 14:41:28 +01:00
|
|
|
import { Setting, UnreadNotification, Timeline as TimelineSetting, UseMarker } from '~src/types/setting'
|
|
|
|
import { DefaultSetting } from '~/src/constants/initializer/setting'
|
2019-12-04 14:48:55 +01:00
|
|
|
|
2020-04-11 11:22:49 +02:00
|
|
|
const win = (window as any) as MyWindow
|
2019-04-04 16:52:08 +02:00
|
|
|
|
2019-06-06 16:44:50 +02:00
|
|
|
export type TimelineState = {
|
2022-01-01 10:39:33 +01:00
|
|
|
setting: TimelineSetting
|
2019-04-04 16:52:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
const state = (): TimelineState => ({
|
2022-01-01 14:41:28 +01:00
|
|
|
setting: DefaultSetting.timeline
|
2019-04-04 16:52:08 +02:00
|
|
|
})
|
|
|
|
|
|
|
|
export const MUTATION_TYPES = {
|
2022-01-01 10:39:33 +01:00
|
|
|
UPDATE_TIMELINE_SETTING: 'updateTimelineSetting'
|
2019-04-04 16:52:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
const mutations: MutationTree<TimelineState> = {
|
2022-01-01 10:39:33 +01:00
|
|
|
[MUTATION_TYPES.UPDATE_TIMELINE_SETTING]: (state, setting: TimelineSetting) => {
|
|
|
|
state.setting = setting
|
2019-04-04 16:52:08 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-04-14 16:11:24 +02:00
|
|
|
const actions: ActionTree<TimelineState, RootState> = {
|
2022-01-01 10:39:33 +01:00
|
|
|
loadTimelineSetting: async ({ commit, rootState }): Promise<boolean> => {
|
|
|
|
const setting: Setting = await win.ipcRenderer.invoke('get-account-setting', rootState.Settings.accountID)
|
|
|
|
commit(MUTATION_TYPES.UPDATE_TIMELINE_SETTING, setting.timeline)
|
|
|
|
return true
|
2019-04-04 16:52:08 +02:00
|
|
|
},
|
2020-11-29 15:36:36 +01:00
|
|
|
changeUnreadNotification: async ({ dispatch, state, rootState }, timeline: { key: boolean }): Promise<boolean> => {
|
2022-01-01 10:39:33 +01:00
|
|
|
const unread: UnreadNotification = Object.assign({}, state.setting.unreadNotification, timeline)
|
|
|
|
const tl: TimelineSetting = Object.assign({}, state.setting, {
|
|
|
|
unreadNotification: unread
|
2019-04-04 16:52:08 +02:00
|
|
|
})
|
2022-01-01 10:39:33 +01:00
|
|
|
const setting: Setting = {
|
|
|
|
accountID: rootState.Settings.accountID!,
|
|
|
|
timeline: tl
|
|
|
|
}
|
|
|
|
await win.ipcRenderer.invoke('update-account-setting', setting)
|
|
|
|
dispatch('loadTimelineSetting')
|
2020-11-29 15:36:36 +01:00
|
|
|
return true
|
2022-01-01 14:41:28 +01:00
|
|
|
},
|
|
|
|
changeUseMarker: async ({ dispatch, state, rootState }, timeline: { key: boolean }) => {
|
|
|
|
const marker: UseMarker = Object.assign({}, state.setting.useMarker, timeline)
|
|
|
|
const tl: TimelineSetting = Object.assign({}, state.setting, {
|
|
|
|
useMarker: marker
|
|
|
|
})
|
|
|
|
const setting: Setting = {
|
|
|
|
accountID: rootState.Settings.accountID!,
|
|
|
|
timeline: tl
|
|
|
|
}
|
|
|
|
await win.ipcRenderer.invoke('update-account-setting', setting)
|
|
|
|
dispatch('loadTimelineSetting')
|
|
|
|
return true
|
2019-04-04 16:52:08 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-04-14 16:11:24 +02:00
|
|
|
const Timeline: Module<TimelineState, RootState> = {
|
2019-04-04 16:52:08 +02:00
|
|
|
namespaced: true,
|
|
|
|
state: state,
|
|
|
|
mutations: mutations,
|
|
|
|
actions: actions
|
|
|
|
}
|
|
|
|
|
|
|
|
export default Timeline
|