forked from Mirrors/elk
32 lines
776 B
TypeScript
32 lines
776 B
TypeScript
import { login } from 'masto'
|
|
import { currentUser } from '../composables/users'
|
|
import { DEFAULT_SERVER } from '~/constants'
|
|
|
|
export default defineNuxtPlugin(async () => {
|
|
try {
|
|
const accessToken = currentUser.value?.token
|
|
|
|
// TODO: improve upstream to make this synchronous (delayed auth)
|
|
const masto = await login({
|
|
url: `https://${currentUser.value?.server || DEFAULT_SERVER}`,
|
|
accessToken,
|
|
})
|
|
|
|
if (accessToken)
|
|
masto.accounts.verifyCredentials().catch(() => signout())
|
|
|
|
return {
|
|
provide: {
|
|
masto,
|
|
},
|
|
}
|
|
}
|
|
catch {
|
|
// TODO: handle error
|
|
// Show error page when Mastodon server is down
|
|
throw createError({
|
|
fatal: true,
|
|
statusMessage: 'Could not log into account.',
|
|
})
|
|
}
|
|
})
|