forked from Mirrors/elk
fix: account server in GoToSocial
This commit is contained in:
parent
ba5b89d5b8
commit
5247b36b6d
4 changed files with 14 additions and 6 deletions
|
@ -43,7 +43,7 @@ export function fetchAccountById(id?: string | null): Promise<mastodon.v1.Accoun
|
|||
const cached = cache.get(key)
|
||||
if (cached)
|
||||
return cached
|
||||
const domain = currentInstance.value?.uri
|
||||
const domain = currentInstance.value ? getInstanceDomain(currentInstance.value) : null
|
||||
const promise = useMastoClient().v1.accounts.fetch(id)
|
||||
.then((r) => {
|
||||
if (r.acct && !r.acct.includes('@') && domain)
|
||||
|
@ -63,7 +63,7 @@ export async function fetchAccountByHandle(acct: string): Promise<mastodon.v1.Ac
|
|||
const cached = cache.get(key)
|
||||
if (cached)
|
||||
return cached
|
||||
const domain = currentInstance.value?.uri
|
||||
const domain = currentInstance.value ? getInstanceDomain(currentInstance.value) : undefined
|
||||
|
||||
async function lookupAccount() {
|
||||
const client = useMastoClient()
|
||||
|
|
|
@ -17,7 +17,7 @@ export function getServerName(account: mastodon.v1.Account) {
|
|||
if (account.acct?.includes('@'))
|
||||
return account.acct.split('@')[1]
|
||||
// We should only lack the server name if we're on the same server as the account
|
||||
return currentInstance.value?.uri || ''
|
||||
return currentInstance.value ? getInstanceDomain(currentInstance.value) : ''
|
||||
}
|
||||
|
||||
export function getFullHandle(account: mastodon.v1.Account) {
|
||||
|
@ -38,7 +38,7 @@ export function toShortHandle(fullHandle: string) {
|
|||
|
||||
export function extractAccountHandle(account: mastodon.v1.Account) {
|
||||
let handle = getFullHandle(account).slice(1)
|
||||
const uri = currentInstance.value?.uri ?? currentServer.value
|
||||
const uri = currentInstance.value ? getInstanceDomain(currentInstance.value) : currentServer.value
|
||||
if (currentInstance.value && handle.endsWith(`@${uri}`))
|
||||
handle = handle.slice(0, -uri.length - 1)
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ export function mastoLogin(masto: ElkMasto, user: Pick<UserLogin, 'server' | 'to
|
|||
|
||||
const server = user.server
|
||||
const url = `https://${server}`
|
||||
const instance: ElkInstance = reactive(getInstanceCache(server) || { uri: server })
|
||||
const instance: ElkInstance = reactive(getInstanceCache(server) || { uri: server, accountDomain: server })
|
||||
setParams({
|
||||
url,
|
||||
accessToken: user?.token,
|
||||
|
|
|
@ -47,7 +47,11 @@ export const instances = useLocalStorage<Record<string, mastodon.v1.Instance>>(S
|
|||
export const nodes = useLocalStorage<Record<string, any>>(STORAGE_KEY_NODES, {}, { deep: true })
|
||||
const currentUserId = useLocalStorage<string>(STORAGE_KEY_CURRENT_USER, mock ? mock.user.account.id : '')
|
||||
|
||||
export type ElkInstance = Partial<mastodon.v1.Instance> & { uri: string }
|
||||
export type ElkInstance = Partial<mastodon.v1.Instance> & {
|
||||
uri: string
|
||||
/** support GoToSocial */
|
||||
accountDomain?: string | null
|
||||
}
|
||||
export const getInstanceCache = (server: string): mastodon.v1.Instance | undefined => instances.value[server]
|
||||
|
||||
export const currentUser = computed<UserLogin | undefined>(() => {
|
||||
|
@ -63,6 +67,10 @@ export const currentUser = computed<UserLogin | undefined>(() => {
|
|||
const publicInstance = ref<ElkInstance | null>(null)
|
||||
export const currentInstance = computed<null | ElkInstance>(() => currentUser.value ? instances.value[currentUser.value.server] ?? null : publicInstance.value)
|
||||
|
||||
export function getInstanceDomain(instance: ElkInstance) {
|
||||
return instance.accountDomain || instance.uri
|
||||
}
|
||||
|
||||
export const publicServer = ref('')
|
||||
export const currentServer = computed<string>(() => currentUser.value?.server || publicServer.value)
|
||||
|
||||
|
|
Loading…
Reference in a new issue