Whalebird-desktop-client-ma.../src/renderer/store/Authorize.ts

44 lines
1.2 KiB
TypeScript
Raw Normal View History

import { Module, ActionTree } from 'vuex'
2019-04-14 16:11:24 +02:00
import { RootState } from '@/store'
import { MyWindow } from '~/src/types/global'
2020-04-11 11:22:49 +02:00
const win = (window as any) as MyWindow
export type AuthorizeState = {}
const state = (): AuthorizeState => ({})
2019-04-14 16:11:24 +02:00
const actions: ActionTree<AuthorizeState, RootState> = {
submit: (_, request: { code: string | null; sns: 'mastodon' | 'pleroma' | 'misskey' }) => {
return new Promise((resolve, reject) => {
let req = {
sns: request.sns
}
if (request.code) {
req = Object.assign(req, {
code: request.code.trim()
})
}
win.ipcRenderer.send('get-access-token', req)
win.ipcRenderer.once('response-get-access-token', (_, id: string) => {
win.ipcRenderer.removeAllListeners('error-get-access-token')
resolve(id)
})
win.ipcRenderer.once('error-get-access-token', (_, err: Error) => {
console.error(err)
win.ipcRenderer.removeAllListeners('response-get-access-token')
reject(err)
})
})
}
}
2019-04-14 16:11:24 +02:00
const Authorize: Module<AuthorizeState, RootState> = {
namespaced: true,
state: state,
mutations: {},
actions: actions
}
export default Authorize