From 2ed22678ed87173ce98d24f9347650ffa48d3a0a Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sat, 26 Nov 2022 01:50:03 +0800 Subject: [PATCH] feat: use full id in url --- components/account/AccountHeader.vue | 8 ++++---- components/account/AccountHoverCard.vue | 6 +++--- components/nav/NavSide.vue | 2 +- components/user/UserSwitcher.vue | 2 +- composables/masto.ts | 25 ++++++++++++++++++++++--- pages/@[account].vue | 2 +- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/components/account/AccountHeader.vue b/components/account/AccountHeader.vue index ffbcfb0f..eade033f 100644 --- a/components/account/AccountHeader.vue +++ b/components/account/AccountHeader.vue @@ -59,7 +59,7 @@ function getFieldNameIcon(fieldName: string) {

- {{ getAccountHandle(account) }} + {{ getShortHandle(account) }}

@@ -86,13 +86,13 @@ function getFieldNameIcon(fieldName: string) {
- + {{ account.statusesCount }} Posts - + {{ account.followingCount }} Following - + {{ account.followersCount }} Followers
diff --git a/components/account/AccountHoverCard.vue b/components/account/AccountHoverCard.vue index e05cb5f2..41d29c9c 100644 --- a/components/account/AccountHoverCard.vue +++ b/components/account/AccountHoverCard.vue @@ -10,15 +10,15 @@ defineProps<{
- + {{ account.statusesCount }} Posts - + {{ account.followingCount }} Following - + {{ account.followersCount }} Followers
diff --git a/components/nav/NavSide.vue b/components/nav/NavSide.vue index e1163149..2d41a2d3 100644 --- a/components/nav/NavSide.vue +++ b/components/nav/NavSide.vue @@ -54,7 +54,7 @@ Bookmarks
- +
Profile diff --git a/components/user/UserSwitcher.vue b/components/user/UserSwitcher.vue index 64e1d2b7..1349528d 100644 --- a/components/user/UserSwitcher.vue +++ b/components/user/UserSwitcher.vue @@ -41,7 +41,7 @@ const sorted = computed(() => { @click="signout" >
- Sign out {{ getAccountHandle(currentUser.account) }} + Sign out {{ getShortHandle(currentUser.account) }}
diff --git a/composables/masto.ts b/composables/masto.ts index 623940af..a7f742f2 100644 --- a/composables/masto.ts +++ b/composables/masto.ts @@ -33,12 +33,28 @@ export function getDisplayName(account: Account) { return account.displayName || account.username } -export function getAccountHandle(account: Account) { +export function getShortHandle(account: Account) { return `@${account.acct}` } +export function getFullHandle(account: Account) { + const handle = `@${account.acct}` + if (!currentUser.value || account.acct.includes('@')) + return handle + return `${handle}@${account.url.match(UserLinkRE)?.[1] || currentUser.value.server}` +} + +export function toShortHandle(fullHandle: string) { + if (!currentUser.value) + return fullHandle + const server = currentUser.value.server + if (fullHandle.endsWith(`@${server}`)) + return fullHandle.slice(0, -server.length - 1) + return fullHandle +} + export function getAccountPath(account: Account) { - return `/${getAccountHandle(account)}` + return `/${getFullHandle(account)}` } export function getStatusPath(status: Status) { @@ -46,7 +62,10 @@ export function getStatusPath(status: Status) { } export function useAccountHandle(account: Account, fullServer = true) { - return computed(() => fullServer && !account.acct.includes('@') ? `@${account.acct}@${account.url.match(UserLinkRE)?.[1]}` : getAccountHandle(account)) + return computed(() => fullServer + ? getFullHandle(account) + : getShortHandle(account), + ) } // Batch requests for relationships when used in the UI diff --git a/pages/@[account].vue b/pages/@[account].vue index 5ab8f312..ead51051 100644 --- a/pages/@[account].vue +++ b/pages/@[account].vue @@ -1,6 +1,6 @@