Whalebird-desktop-client-ma.../src/main/timelines.ts

63 lines
1.9 KiB
TypeScript

import generator, { detector, ProxyConfig } from 'megalodon'
import { LocalAccount } from '~/src/types/localAccount'
import { EnabledTimelines } from '~/src/types/enabledTimelines'
const confirm = async (account: LocalAccount, proxy: ProxyConfig | false) => {
const sns = await detector(account.baseURL, proxy)
const client = generator(sns, account.baseURL, account.accessToken, 'Whalebird', proxy)
let timelines: EnabledTimelines = {
home: true,
notification: true,
mention: true,
direct: true,
favourite: true,
bookmark: true,
local: true,
public: true,
tag: true,
list: true
}
const notification = async () => {
return client.getNotifications({ limit: 1 }).catch(() => {
timelines = { ...timelines, notification: false, mention: false }
})
}
const direct = async () => {
return client.getConversationTimeline({ limit: 1 }).catch(() => {
timelines = { ...timelines, direct: false }
})
}
const favourite = async () => {
return client.getFavourites({ limit: 1 }).catch(() => {
timelines = { ...timelines, favourite: false }
})
}
const bookmark = async () => {
return client.getBookmarks({ limit: 1 }).catch(() => {
timelines = { ...timelines, bookmark: false }
})
}
const local = async () => {
return client.getLocalTimeline({ limit: 1 }).catch(() => {
timelines = { ...timelines, local: false }
})
}
const pub = async () => {
return client.getPublicTimeline({ limit: 1 }).catch(() => {
timelines = { ...timelines, public: false }
})
}
const tag = async () => {
return client.getTagTimeline('whalebird', { limit: 1 }).catch(() => {
timelines = { ...timelines, tag: false }
})
}
await Promise.all([notification(), direct(), favourite(), bookmark(), local(), pub(), tag()])
return timelines
}
export default confirm