thedesk/src/main/Auth.ts
2019-04-25 14:06:36 +09:00

46 lines
1.3 KiB
TypeScript

import { ipcMain, Event, shell } from "electron"
import Mastodon from "megalodon"
export default class Auth {
public static ready() {
let clientId: string
let clientSecret: string
ipcMain.on("new-account-setup", async (event: Event, instance: string) => {
const SCOPES: string = "read write follow"
let url: string | null
Mastodon.registerApp(
"TheDesk",
{
scopes: SCOPES
},
"https://" + instance
).then(appData => {
clientId = appData.clientId
clientSecret = appData.clientSecret
url = appData.url
if (url) {
shell.openExternal(
url,
{
activate: false
},
err => {
if (err) console.log(err)
}
)
} else {
console.log(appData)
}
})
.catch((err: Error) => console.error(err))
})
ipcMain.on("new-account-auth", async (event: Event, code: string, instance: string) => {
Mastodon.fetchAccessToken(clientId, clientSecret, code, "https://" + instance)
.then((tokenData: Partial<{ accessToken: string }>) => {
console.log(tokenData.accessToken)
})
.catch((err: Error) => console.error(err))
})
}
}