refactor: Use invoke for ipc to get unread notification

This commit is contained in:
AkiraFukushima 2020-11-29 23:34:31 +09:00
parent ad94355eda
commit faa5e27a03
3 changed files with 30 additions and 49 deletions

View File

@ -1012,18 +1012,11 @@ ipcMain.handle('list-fonts', async (_: IpcMainInvokeEvent) => {
}) })
// Unread notifications // Unread notifications
ipcMain.on('get-unread-notification', (event: IpcMainEvent, accountID: string) => { ipcMain.handle('get-unread-notification', async (_: IpcMainInvokeEvent, accountID: string) => {
unreadNotification const doc = await unreadNotification.findOne({
.findOne({ accountID: accountID
accountID: accountID })
}) return doc
.then(doc => {
event.sender.send('response-get-unread-notification', doc)
})
.catch(err => {
console.warn(err)
event.sender.send('error-get-unread-notification', err)
})
}) })
ipcMain.on('update-unread-notification', (event: IpcMainEvent, config: UnreadNotificationConfig) => { ipcMain.on('update-unread-notification', (event: IpcMainEvent, config: UnreadNotificationConfig) => {

View File

@ -29,25 +29,20 @@ const mutations: MutationTree<TimelineState> = {
} }
const actions: ActionTree<TimelineState, RootState> = { const actions: ActionTree<TimelineState, RootState> = {
loadUnreadNotification: ({ commit, rootState }): Promise<boolean> => { loadUnreadNotification: async ({ commit, rootState }): Promise<boolean> => {
return new Promise(resolve => { try {
win.ipcRenderer.once('response-get-unread-notification', (_, settings: UnreadNotification) => { const settings: UnreadNotification = await win.ipcRenderer.invoke('get-unread-notification', rootState.Settings.accountID)
win.ipcRenderer.removeAllListeners('error-get-unread-notification') commit(MUTATION_TYPES.UPDATE_UNREAD_NOTIFICATION, settings)
commit(MUTATION_TYPES.UPDATE_UNREAD_NOTIFICATION, settings) return true
resolve(true) } catch (err) {
}) const settings: UnreadNotification = {
win.ipcRenderer.once('error-get-unread-notification', () => { direct: unreadSettings.Direct.default,
win.ipcRenderer.removeAllListeners('response-get-unread-notification') local: unreadSettings.Local.default,
const settings: UnreadNotification = { public: unreadSettings.Public.default
direct: unreadSettings.Direct.default, }
local: unreadSettings.Local.default, commit(MUTATION_TYPES.UPDATE_UNREAD_NOTIFICATION, settings)
public: unreadSettings.Public.default return false
} }
commit(MUTATION_TYPES.UPDATE_UNREAD_NOTIFICATION, settings)
resolve(false)
})
win.ipcRenderer.send('get-unread-notification', rootState.Settings.accountID)
})
}, },
changeUnreadNotification: ({ dispatch, state, rootState }, timeline: { key: boolean }): Promise<boolean> => { changeUnreadNotification: ({ dispatch, state, rootState }, timeline: { key: boolean }): Promise<boolean> => {
const settings: UnreadNotification = Object.assign({}, state.unreadNotification, timeline, { const settings: UnreadNotification = Object.assign({}, state.unreadNotification, timeline, {

View File

@ -184,24 +184,17 @@ const actions: ActionTree<TimelineSpaceState, RootState> = {
commit(MUTATION_TYPES.UPDATE_TOOT_MAX, res.data.max_toot_chars) commit(MUTATION_TYPES.UPDATE_TOOT_MAX, res.data.max_toot_chars)
return true return true
}, },
loadUnreadNotification: ({ commit }, accountID: string) => { loadUnreadNotification: async ({ commit }, accountID: string) => {
return new Promise(resolve => { try {
win.ipcRenderer.once('response-get-unread-notification', (_, settings: UnreadNotification) => { const settings: UnreadNotification = await win.ipcRenderer.invoke('get-unread-notification', accountID)
win.ipcRenderer.removeAllListeners('error-get-unread-notification') commit(MUTATION_TYPES.UPDATE_UNREAD_NOTIFICATION, settings)
commit(MUTATION_TYPES.UPDATE_UNREAD_NOTIFICATION, settings) } catch (err) {
resolve(settings) commit(MUTATION_TYPES.UPDATE_UNREAD_NOTIFICATION, {
}) direct: unreadSettings.Direct.default,
win.ipcRenderer.once('error-get-unread-notification', () => { local: unreadSettings.Local.default,
win.ipcRenderer.removeAllListeners('response-get-unread-notification') public: unreadSettings.Public.default
commit(MUTATION_TYPES.UPDATE_UNREAD_NOTIFICATION, { } as UnreadNotification)
direct: unreadSettings.Direct.default, }
local: unreadSettings.Local.default,
public: unreadSettings.Public.default
} as UnreadNotification)
resolve({})
})
win.ipcRenderer.send('get-unread-notification', accountID)
})
}, },
fetchContentsTimelines: async ({ dispatch, state }) => { fetchContentsTimelines: async ({ dispatch, state }) => {
dispatch('TimelineSpace/Contents/changeLoading', true, { root: true }) dispatch('TimelineSpace/Contents/changeLoading', true, { root: true })