fix: reference conflicts

This commit is contained in:
Anthony Fu 2022-12-13 14:49:22 +01:00
parent 2bee673a14
commit d546390f5c
2 changed files with 21 additions and 22 deletions

View file

@ -48,16 +48,16 @@ function mentionHTML(acct: string) {
}
export function getReplyDraft(status: Status) {
const acountsToMention: string[] = []
const accountsToMention: string[] = []
const userId = currentUser.value?.account.id
if (status.account.id !== userId)
acountsToMention.push(status.account.acct)
acountsToMention.push(...(status.mentions.filter(mention => mention.id !== userId).map(mention => mention.acct)))
accountsToMention.push(status.account.acct)
accountsToMention.push(...(status.mentions.filter(mention => mention.id !== userId).map(mention => mention.acct)))
return {
key: `reply-${status.id}`,
draft: () => {
return getDefaultDraft({
initialText: acountsToMention.map(acct => mentionHTML(acct)).join(' '),
initialText: accountsToMention.map(acct => mentionHTML(acct)).join(' '),
inReplyToId: status!.id,
visibility: status.visibility,
})

View file

@ -20,6 +20,11 @@ export const currentUser = computed<UserLogin | undefined>(() => {
return users.value[0]
})
export const currentUserHandle = computed(() => currentUser.value?.account.id
? `${currentUser.value.account.acct}@${currentUser.value.server}`
: '[anonymous]',
)
export const publicServer = ref(DEFAULT_SERVER)
const publicInstance = ref<Instance | null>(null)
export const currentServer = computed<string>(() => currentUser.value?.server || publicServer.value)
@ -153,30 +158,24 @@ export function checkLogin() {
return true
}
const userLocalStorages = new Map<string, Ref<Record<string, any>>>()
/**
* Create reactive storage for the current user
*/
export function useUserLocalStorage<T extends object>(key: string, initial: () => T) {
if (!userLocalStorages.has(key))
userLocalStorages.set(key, useLocalStorage(key, {}, { deep: true }))
// @ts-expect-error bind value to the function
const storages = useUserLocalStorage._ = useUserLocalStorage._ || new Map<string, Ref<Record<string, any>>>()
const all = userLocalStorages.get(key) as Ref<Record<string, T>>
const id = currentUser.value?.account.id
? `${currentUser.value.account.acct}@${currentUser.value.server}`
: '[anonymous]'
if (!storages.has(key))
storages.set(key, useLocalStorage(key, {}, { deep: true }))
const all = storages.get(key) as Ref<Record<string, T>>
all.value[id] = Object.assign(initial(), all.value[id] || {})
return extendRef(
computed(() => all.value[id]),
{
remove: {
value: () => {
delete all.value[id]
},
},
})
return computed(() => {
const id = currentUser.value?.account.id
? `${currentUser.value.account.acct}@${currentUser.value.server}`
: '[anonymous]'
all.value[id] = Object.assign(initial(), all.value[id] || {})
return all.value[id]
})
}
/**