Use ipcRenderer through window to mock ipc method

This commit is contained in:
AkiraFukushima 2019-12-04 22:35:53 +09:00
parent d18f8859f9
commit 456890af85
12 changed files with 145 additions and 125 deletions

View File

@ -1,8 +1,10 @@
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import { ipcMain } from '~/spec/mock/electron'
import { ipcMain, ipcRenderer } from '~/spec/mock/electron'
import Account, { AccountState } from '@/store/Preferences/Account'
import { LocalAccount } from '~/src/types/localAccount'
import { MyWindow } from '~/src/types/global'
;(window as MyWindow).ipcRenderer = ipcRenderer
const account: LocalAccount = {
_id: 'sample',

View File

@ -7,7 +7,9 @@ import TimeFormat from '~/src/constants/timeFormat'
import { LightTheme, DarkTheme } from '~/src/constants/themeColor'
import DefaultFonts from '@/utils/fonts'
import Appearance, { AppearanceState } from '@/store/Preferences/Appearance'
import { ipcMain } from '~/spec/mock/electron'
import { ipcMain, ipcRenderer } from '~/spec/mock/electron'
import { MyWindow } from '~/src/types/global'
;(window as MyWindow).ipcRenderer = ipcRenderer
const state = (): AppearanceState => {
return {

View File

@ -1,7 +1,9 @@
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import { ipcMain } from '~/spec/mock/electron'
import { ipcMain, ipcRenderer } from '~/spec/mock/electron'
import General, { GeneralState } from '@/store/Preferences/General'
import { MyWindow } from '~/src/types/global'
;(window as MyWindow).ipcRenderer = ipcRenderer
const state = (): GeneralState => {
return {

View File

@ -1,8 +1,10 @@
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import { ipcMain } from '~/spec/mock/electron'
import { ipcMain, ipcRenderer } from '~/spec/mock/electron'
import Language, { LanguageState } from '@/store/Preferences/Language'
import DefaultLanguage from '~/src/constants/language'
import { MyWindow } from '~/src/types/global'
;(window as MyWindow).ipcRenderer = ipcRenderer
const state = (): LanguageState => {
return {

View File

@ -1,7 +1,9 @@
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import { ipcMain } from '~/spec/mock/electron'
import { ipcMain, ipcRenderer } from '~/spec/mock/electron'
import Notification, { NotificationState } from '@/store/Preferences/Notification'
import { MyWindow } from '~/src/types/global'
;(window as MyWindow).ipcRenderer = ipcRenderer
const state = (): NotificationState => {
return {

View File

@ -1,6 +1,7 @@
const electron = require('electron')
const path = require('path')
const mod = require('module')
global.ipcRenderer = electron.ipcRenderer
global.shell = electron.shell
global.clipboard = electron.clipboard

View File

@ -1,7 +1,9 @@
import { ipcRenderer } from 'electron'
import { Module, MutationTree, ActionTree } from 'vuex'
import { LocalAccount } from '~/src/types/localAccount'
import { RootState } from '@/store'
import { MyWindow } from '~/src/types/global'
const win = window as MyWindow
export type AccountState = {
accounts: Array<LocalAccount>
@ -30,13 +32,13 @@ const mutations: MutationTree<AccountState> = {
const actions: ActionTree<AccountState, RootState> = {
loadAccounts: ({ commit }): Promise<Array<LocalAccount>> => {
return new Promise((resolve, reject) => {
ipcRenderer.send('list-accounts', 'list')
ipcRenderer.once('error-list-accounts', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-list-accounts')
win.ipcRenderer.send('list-accounts', 'list')
win.ipcRenderer.once('error-list-accounts', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-list-accounts')
reject(err)
})
ipcRenderer.once('response-list-accounts', (_, accounts: Array<LocalAccount>) => {
ipcRenderer.removeAllListeners('error-list-accounts')
win.ipcRenderer.once('response-list-accounts', (_, accounts: Array<LocalAccount>) => {
win.ipcRenderer.removeAllListeners('error-list-accounts')
commit(MUTATION_TYPES.UPDATE_ACCOUNTS, accounts)
resolve(accounts)
})
@ -44,52 +46,52 @@ const actions: ActionTree<AccountState, RootState> = {
},
removeAccount: (_, account: LocalAccount) => {
return new Promise((resolve, reject) => {
ipcRenderer.send('remove-account', account._id)
ipcRenderer.once('error-remove-account', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-remove-account')
win.ipcRenderer.send('remove-account', account._id)
win.ipcRenderer.once('error-remove-account', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-remove-account')
reject(err)
})
ipcRenderer.once('response-remove-account', (_, _id: string) => {
ipcRenderer.removeAllListeners('error-remove-account')
win.ipcRenderer.once('response-remove-account', (_, _id: string) => {
win.ipcRenderer.removeAllListeners('error-remove-account')
resolve()
})
})
},
forwardAccount: (_, account: LocalAccount) => {
return new Promise((resolve, reject) => {
ipcRenderer.send('forward-account', account)
ipcRenderer.once('error-forward-account', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-forward-account')
win.ipcRenderer.send('forward-account', account)
win.ipcRenderer.once('error-forward-account', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-forward-account')
reject(err)
})
ipcRenderer.once('response-forward-account', () => {
ipcRenderer.removeAllListeners('error-forward-account')
win.ipcRenderer.once('response-forward-account', () => {
win.ipcRenderer.removeAllListeners('error-forward-account')
resolve()
})
})
},
backwardAccount: (_, account: LocalAccount) => {
return new Promise((resolve, reject) => {
ipcRenderer.send('backward-account', account)
ipcRenderer.once('error-backward-account', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-forward-account')
win.ipcRenderer.send('backward-account', account)
win.ipcRenderer.once('error-backward-account', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-forward-account')
reject(err)
})
ipcRenderer.once('response-backward-account', () => {
ipcRenderer.removeAllListeners('error-backward-account')
win.ipcRenderer.once('response-backward-account', () => {
win.ipcRenderer.removeAllListeners('error-backward-account')
resolve()
})
})
},
removeAllAccounts: () => {
return new Promise((resolve, reject) => {
ipcRenderer.send('remove-all-accounts')
ipcRenderer.once('error-remove-all-accounts', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-remove-all-accounts')
win.ipcRenderer.send('remove-all-accounts')
win.ipcRenderer.once('error-remove-all-accounts', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-remove-all-accounts')
reject(err)
})
ipcRenderer.once('response-remove-all-accounts', () => {
ipcRenderer.removeAllListeners('error-remove-all-accounts')
win.ipcRenderer.once('response-remove-all-accounts', () => {
win.ipcRenderer.removeAllListeners('error-remove-all-accounts')
resolve()
})
})

View File

@ -1,4 +1,3 @@
import { ipcRenderer } from 'electron'
import DisplayStyle from '~/src/constants/displayStyle'
import Theme from '~/src/constants/theme'
import TimeFormat from '~/src/constants/timeFormat'
@ -8,6 +7,9 @@ import { Module, MutationTree, ActionTree } from 'vuex'
import { RootState } from '@/store'
import { Appearance } from '~/src/types/appearance'
import { BaseConfig } from '~/src/types/preference'
import { MyWindow } from '~/src/types/global'
const win = window as MyWindow
export type AppearanceState = {
appearance: Appearance
@ -44,30 +46,30 @@ const mutations: MutationTree<AppearanceState> = {
const actions: ActionTree<AppearanceState, RootState> = {
loadAppearance: ({ commit }) => {
return new Promise((resolve, reject) => {
ipcRenderer.once('error-get-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-get-preferences')
win.ipcRenderer.once('error-get-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-get-preferences')
reject(err)
})
ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-get-preferences')
win.ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-get-preferences')
commit(MUTATION_TYPES.UPDATE_APPEARANCE, conf.appearance)
resolve(conf)
})
ipcRenderer.send('get-preferences')
win.ipcRenderer.send('get-preferences')
})
},
loadFonts: ({ commit }) => {
return new Promise((resolve, reject) => {
ipcRenderer.once('error-list-fonts', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-list-fonts')
win.ipcRenderer.once('error-list-fonts', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-list-fonts')
reject(err)
})
ipcRenderer.once('response-list-fonts', (_, fonts: Array<string>) => {
ipcRenderer.removeAllListeners('error-list-fonts')
win.ipcRenderer.once('response-list-fonts', (_, fonts: Array<string>) => {
win.ipcRenderer.removeAllListeners('error-list-fonts')
commit(MUTATION_TYPES.UPDATE_FONTS, [DefaultFonts[0]].concat(fonts))
resolve(fonts)
})
ipcRenderer.send('list-fonts')
win.ipcRenderer.send('list-fonts')
})
},
updateTheme: ({ dispatch, commit, state }, themeKey: string) => {
@ -78,17 +80,17 @@ const actions: ActionTree<AppearanceState, RootState> = {
appearance: newAppearance
}
return new Promise((resolve, reject) => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
commit(MUTATION_TYPES.UPDATE_APPEARANCE, conf.appearance)
dispatch('App/loadPreferences', null, { root: true })
resolve(conf.appearance)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
},
updateFontSize: ({ dispatch, commit, state }, fontSize: number) => {
@ -99,17 +101,17 @@ const actions: ActionTree<AppearanceState, RootState> = {
appearance: newAppearance
}
return new Promise((resolve, reject) => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
commit(MUTATION_TYPES.UPDATE_APPEARANCE, conf.appearance)
dispatch('App/loadPreferences', null, { root: true })
resolve(conf.appearance)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
},
updateDisplayNameStyle: ({ dispatch, commit, state }, value: number) => {
@ -120,17 +122,17 @@ const actions: ActionTree<AppearanceState, RootState> = {
appearance: newAppearance
}
return new Promise((resolve, reject) => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
dispatch('App/loadPreferences', null, { root: true })
commit(MUTATION_TYPES.UPDATE_APPEARANCE, conf.appearance)
resolve(conf.appearance)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
},
updateTimeFormat: ({ dispatch, commit, state }, value: number) => {
@ -141,17 +143,17 @@ const actions: ActionTree<AppearanceState, RootState> = {
appearance: newAppearance
}
return new Promise((resolve, reject) => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
dispatch('App/loadPreferences', null, { root: true })
commit(MUTATION_TYPES.UPDATE_APPEARANCE, conf.appearance)
resolve(conf.appearance)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
},
updateCustomThemeColor: ({ dispatch, state, commit }, value: object) => {
@ -163,17 +165,17 @@ const actions: ActionTree<AppearanceState, RootState> = {
appearance: newAppearance
}
return new Promise((resolve, reject) => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
commit(MUTATION_TYPES.UPDATE_APPEARANCE, conf.appearance)
dispatch('App/loadPreferences', null, { root: true })
resolve(conf.appearance)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
},
updateFont: ({ dispatch, state, commit }, value: string) => {
@ -184,17 +186,17 @@ const actions: ActionTree<AppearanceState, RootState> = {
appearance: newAppearance
}
return new Promise((resolve, reject) => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
commit(MUTATION_TYPES.UPDATE_APPEARANCE, conf.appearance)
dispatch('App/loadPreferences', null, { root: true })
resolve(conf.appearance)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
},
updateTootPadding: ({ dispatch, state, commit }, value: number) => {
@ -205,17 +207,17 @@ const actions: ActionTree<AppearanceState, RootState> = {
appearance: newAppearance
}
return new Promise((resolve, reject) => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
commit(MUTATION_TYPES.UPDATE_APPEARANCE, conf.appearance)
dispatch('App/loadPreferences', null, { root: true })
resolve(conf.appearance)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
}
}

View File

@ -1,4 +1,3 @@
import { ipcRenderer } from 'electron'
import { Module, MutationTree, ActionTree, GetterTree } from 'vuex'
import { RootState } from '@/store'
import { Sound } from '~/src/types/sound'
@ -49,14 +48,14 @@ const actions: ActionTree<GeneralState, RootState> = {
loadGeneral: ({ commit }) => {
return new Promise((resolve, reject) => {
commit(MUTATION_TYPES.CHANGE_LOADING, true)
ipcRenderer.send('get-preferences')
ipcRenderer.once('error-get-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-get-preferences')
win.ipcRenderer.send('get-preferences')
win.ipcRenderer.once('error-get-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-get-preferences')
commit(MUTATION_TYPES.CHANGE_LOADING, false)
reject(err)
})
ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-get-preferences')
win.ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-get-preferences')
commit(MUTATION_TYPES.UPDATE_GENERAL, conf.general as General)
commit(MUTATION_TYPES.CHANGE_LOADING, false)
resolve(conf)
@ -73,14 +72,14 @@ const actions: ActionTree<GeneralState, RootState> = {
general: newGeneral
}
return new Promise((resolve, reject) => {
ipcRenderer.send('update-preferences', config)
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.send('update-preferences', config)
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
commit(MUTATION_TYPES.CHANGE_LOADING, false)
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
commit(MUTATION_TYPES.UPDATE_GENERAL, conf.general as General)
commit(MUTATION_TYPES.CHANGE_LOADING, false)
resolve(conf)
@ -97,19 +96,19 @@ const actions: ActionTree<GeneralState, RootState> = {
general: newGeneral
}
return new Promise((resolve, reject) => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
commit(MUTATION_TYPES.CHANGE_LOADING, false)
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
commit(MUTATION_TYPES.UPDATE_GENERAL, conf.general as General)
commit(MUTATION_TYPES.CHANGE_LOADING, false)
dispatch('App/loadPreferences', null, { root: true })
resolve(conf)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
},
updateOther: ({ commit, state, dispatch }, other: {}) => {
@ -122,22 +121,22 @@ const actions: ActionTree<GeneralState, RootState> = {
general: newGeneral
}
return new Promise((resolve, reject) => {
ipcRenderer.once('response-change-auto-launch', () => {
ipcRenderer.once('error-update-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-update-preferences')
win.ipcRenderer.once('response-change-auto-launch', () => {
win.ipcRenderer.once('error-update-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-update-preferences')
commit(MUTATION_TYPES.CHANGE_LOADING, false)
reject(err)
})
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-update-preferences')
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-update-preferences')
commit(MUTATION_TYPES.UPDATE_GENERAL, conf.general as General)
commit(MUTATION_TYPES.CHANGE_LOADING, false)
dispatch('App/loadPreferences', null, { root: true })
resolve(conf)
})
ipcRenderer.send('update-preferences', config)
win.ipcRenderer.send('update-preferences', config)
})
ipcRenderer.send('change-auto-launch', newOther.launch)
win.ipcRenderer.send('change-auto-launch', newOther.launch)
})
}
}

View File

@ -1,9 +1,11 @@
import { ipcRenderer } from 'electron'
import Language from '~/src/constants/language'
import { Module, MutationTree, ActionTree } from 'vuex'
import { RootState } from '@/store'
import { Language as LanguageSet } from '~/src/types/language'
import { BaseConfig } from '~/src/types/preference'
import { MyWindow } from '~/src/types/global'
const win = window as MyWindow
export type LanguageState = {
language: LanguageSet
@ -32,13 +34,13 @@ const mutations: MutationTree<LanguageState> = {
const actions: ActionTree<LanguageState, RootState> = {
loadLanguage: ({ commit }) => {
return new Promise((resolve, reject) => {
ipcRenderer.send('get-preferences')
ipcRenderer.once('error-get-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-get-preferences')
win.ipcRenderer.send('get-preferences')
win.ipcRenderer.once('error-get-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-get-preferences')
reject(err)
})
ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-get-preferences')
win.ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-get-preferences')
commit(MUTATION_TYPES.UPDATE_LANGUAGE, conf.language as LanguageSet)
resolve(conf)
})
@ -46,15 +48,15 @@ const actions: ActionTree<LanguageState, RootState> = {
},
changeLanguage: ({ commit }, key: string) => {
return new Promise(resolve => {
ipcRenderer.send('change-language', key)
ipcRenderer.once('response-change-language', (_, value: string) => {
win.ipcRenderer.send('change-language', key)
win.ipcRenderer.once('response-change-language', (_, value: string) => {
commit(MUTATION_TYPES.CHANGE_LANGUAGE, value)
resolve(value)
})
})
},
relaunch: () => {
ipcRenderer.send('relaunch')
win.ipcRenderer.send('relaunch')
}
}

View File

@ -1,8 +1,10 @@
import { ipcRenderer } from 'electron'
import { Module, MutationTree, ActionTree, GetterTree } from 'vuex'
import { RootState } from '@/store'
import { BaseConfig } from '~/src/types/preference'
import { Proxy, ProxySource, ProxyProtocol, ManualProxy } from '~/src/types/proxy'
import { MyWindow } from '~/src/types/global'
const win = window as MyWindow
export type NetworkState = {
source: ProxySource
@ -92,13 +94,13 @@ const mutations: MutationTree<NetworkState> = {
const actions: ActionTree<NetworkState, RootState> = {
loadProxy: ({ commit }) => {
return new Promise((resolve, reject) => {
ipcRenderer.send('get-preferences')
ipcRenderer.once('error-get-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-get-preferences')
win.ipcRenderer.send('get-preferences')
win.ipcRenderer.once('error-get-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-get-preferences')
reject(err)
})
ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-get-preferences')
win.ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-get-preferences')
commit(MUTATION_TYPES.UPDATE_PROXY, conf.proxy as Proxy)
resolve(conf)
})
@ -127,13 +129,13 @@ const actions: ActionTree<NetworkState, RootState> = {
source: state.source,
manualProxyConfig: state.proxy
}
ipcRenderer.once('response-update-proxy-config', async () => {
win.ipcRenderer.once('response-update-proxy-config', async () => {
dispatch('App/loadProxy', {}, { root: true })
// Originally we have to restart all streamings after user change proxy configuration.
// But streamings are restart after close preferences.
// So we don't have to restart streaming here.
})
ipcRenderer.send('update-proxy-config', proxy)
win.ipcRenderer.send('update-proxy-config', proxy)
}
}

View File

@ -1,8 +1,10 @@
import { ipcRenderer } from 'electron'
import { Module, MutationTree, ActionTree } from 'vuex'
import { RootState } from '@/store'
import { Notify } from '~/src/types/notify'
import { BaseConfig, Notification } from '~/src/types/preference'
import { MyWindow } from '~/src/types/global'
const win = window as MyWindow
export type NotificationState = {
notification: Notification
@ -32,13 +34,13 @@ const mutations: MutationTree<NotificationState> = {
const actions: ActionTree<NotificationState, RootState> = {
loadNotification: ({ commit }) => {
return new Promise((resolve, reject) => {
ipcRenderer.send('get-preferences')
ipcRenderer.once('error-get-preferences', (_, err: Error) => {
ipcRenderer.removeAllListeners('response-get-preferences')
win.ipcRenderer.send('get-preferences')
win.ipcRenderer.once('error-get-preferences', (_, err: Error) => {
win.ipcRenderer.removeAllListeners('response-get-preferences')
reject(err)
})
ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
ipcRenderer.removeAllListeners('error-get-preferences')
win.ipcRenderer.once('response-get-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.removeAllListeners('error-get-preferences')
commit(MUTATION_TYPES.UPDATE_NOTIFICATION, conf.notification)
resolve(conf)
})
@ -53,8 +55,8 @@ const actions: ActionTree<NotificationState, RootState> = {
notification: newNotification
}
return new Promise(resolve => {
ipcRenderer.send('update-preferences', config)
ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
win.ipcRenderer.send('update-preferences', config)
win.ipcRenderer.once('response-update-preferences', (_, conf: BaseConfig) => {
commit(MUTATION_TYPES.UPDATE_NOTIFICATION, conf.notification)
dispatch('App/loadPreferences', null, { root: true })
resolve(conf.notification)