forked from Mirrors/elk
refactor: switch to v1 instance api
V2 instance api is too new, and we should support more versions.
This commit is contained in:
parent
d415638bd9
commit
c5573cb10b
2 changed files with 9 additions and 15 deletions
|
@ -40,7 +40,7 @@ const initializeUsers = async (): Promise<Ref<UserLogin[]> | RemovableRef<UserLo
|
||||||
}
|
}
|
||||||
|
|
||||||
const users = await initializeUsers()
|
const users = await initializeUsers()
|
||||||
const instances = useLocalStorage<Record<string, mastodon.v2.Instance>>(STORAGE_KEY_SERVERS, mock ? mock.server : {}, { deep: true })
|
const instances = useLocalStorage<Record<string, mastodon.v1.Instance>>(STORAGE_KEY_SERVERS, mock ? mock.server : {}, { deep: true })
|
||||||
const currentUserId = useLocalStorage<string>(STORAGE_KEY_CURRENT_USER, mock ? mock.user.account.id : '')
|
const currentUserId = useLocalStorage<string>(STORAGE_KEY_CURRENT_USER, mock ? mock.user.account.id : '')
|
||||||
|
|
||||||
export const currentUser = computed<UserLogin | undefined>(() => {
|
export const currentUser = computed<UserLogin | undefined>(() => {
|
||||||
|
@ -53,8 +53,8 @@ export const currentUser = computed<UserLogin | undefined>(() => {
|
||||||
return users.value[0]
|
return users.value[0]
|
||||||
})
|
})
|
||||||
|
|
||||||
const publicInstance = ref<mastodon.v2.Instance | null>(null)
|
const publicInstance = ref<mastodon.v1.Instance | null>(null)
|
||||||
export const currentInstance = computed<null | mastodon.v2.Instance>(() => currentUser.value ? instances.value[currentUser.value.server] ?? null : publicInstance.value)
|
export const currentInstance = computed<null | mastodon.v1.Instance>(() => currentUser.value ? instances.value[currentUser.value.server] ?? null : publicInstance.value)
|
||||||
|
|
||||||
export const publicServer = ref('')
|
export const publicServer = ref('')
|
||||||
export const currentServer = computed<string>(() => currentUser.value?.server || publicServer.value)
|
export const currentServer = computed<string>(() => currentUser.value?.server || publicServer.value)
|
||||||
|
@ -91,7 +91,7 @@ if (process.client) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export const currentUserHandle = computed(() => currentUser.value?.account.id
|
export const currentUserHandle = computed(() => currentUser.value?.account.id
|
||||||
? `${currentUser.value.account.acct}@${currentInstance.value?.domain || currentServer.value}`
|
? `${currentUser.value.account.acct}@${currentInstance.value?.uri || currentServer.value}`
|
||||||
: '[anonymous]',
|
: '[anonymous]',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -111,14 +111,14 @@ async function loginTo(user?: Omit<UserLogin, 'account'> & { account?: mastodon.
|
||||||
|
|
||||||
if (!user?.token) {
|
if (!user?.token) {
|
||||||
publicServer.value = server
|
publicServer.value = server
|
||||||
publicInstance.value = await masto.v2.instance.fetch()
|
publicInstance.value = await masto.v1.instances.fetch()
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
const [me, instance, pushSubscription] = await Promise.all([
|
const [me, instance, pushSubscription] = await Promise.all([
|
||||||
masto.v1.accounts.verifyCredentials(),
|
masto.v1.accounts.verifyCredentials(),
|
||||||
masto.v2.instance.fetch(),
|
masto.v1.instances.fetch(),
|
||||||
// if PWA is not enabled, don't get push subscription
|
// if PWA is not enabled, don't get push subscription
|
||||||
useRuntimeConfig().public.pwaEnabled
|
useRuntimeConfig().public.pwaEnabled
|
||||||
// we get 404 response instead empty data
|
// we get 404 response instead empty data
|
||||||
|
@ -127,7 +127,7 @@ async function loginTo(user?: Omit<UserLogin, 'account'> & { account?: mastodon.
|
||||||
])
|
])
|
||||||
|
|
||||||
if (!me.acct.includes('@'))
|
if (!me.acct.includes('@'))
|
||||||
me.acct = `${me.acct}@${instance.domain}`
|
me.acct = `${me.acct}@${instance.uri}`
|
||||||
|
|
||||||
user.account = me
|
user.account = me
|
||||||
user.pushSubscription = pushSubscription
|
user.pushSubscription = pushSubscription
|
||||||
|
@ -169,7 +169,7 @@ export function setAccountInfo(userId: string, account: mastodon.v1.AccountCrede
|
||||||
export async function pullMyAccountInfo() {
|
export async function pullMyAccountInfo() {
|
||||||
const account = await useMasto().v1.accounts.verifyCredentials()
|
const account = await useMasto().v1.accounts.verifyCredentials()
|
||||||
if (!account.acct.includes('@'))
|
if (!account.acct.includes('@'))
|
||||||
account.acct = `${account.acct}@${currentInstance.value!.domain}`
|
account.acct = `${account.acct}@${currentInstance.value!.uri}`
|
||||||
|
|
||||||
setAccountInfo(currentUserId.value, account)
|
setAccountInfo(currentUserId.value, account)
|
||||||
cacheAccount(account, currentServer.value, true)
|
cacheAccount(account, currentServer.value, true)
|
||||||
|
@ -334,7 +334,7 @@ export function clearUserLocalStorage(account?: mastodon.v1.Account) {
|
||||||
if (!account)
|
if (!account)
|
||||||
return
|
return
|
||||||
|
|
||||||
const id = `${account.acct}@${currentInstance.value?.domain || currentServer.value}`
|
const id = `${account.acct}@${currentInstance.value?.uri || currentServer.value}`
|
||||||
// @ts-expect-error bind value to the function
|
// @ts-expect-error bind value to the function
|
||||||
;(useUserLocalStorage._ as Map<string, Ref<Record<string, any>>>).forEach((storage) => {
|
;(useUserLocalStorage._ as Map<string, Ref<Record<string, any>>>).forEach((storage) => {
|
||||||
if (storage.value[id])
|
if (storage.value[id])
|
||||||
|
|
|
@ -27,12 +27,6 @@ export interface ElkMasto extends mastodon.Client {
|
||||||
|
|
||||||
export type PaginatorState = 'idle' | 'loading' | 'done' | 'error'
|
export type PaginatorState = 'idle' | 'loading' | 'done' | 'error'
|
||||||
|
|
||||||
export interface ServerInfo extends mastodon.v2.Instance {
|
|
||||||
server: string
|
|
||||||
timeUpdated: number
|
|
||||||
customEmojis?: Record<string, mastodon.v1.CustomEmoji>
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface GroupedNotifications {
|
export interface GroupedNotifications {
|
||||||
id: string
|
id: string
|
||||||
type: Exclude<string, 'grouped-reblogs-and-favourites'>
|
type: Exclude<string, 'grouped-reblogs-and-favourites'>
|
||||||
|
|
Loading…
Reference in a new issue