1
0
elk/composables/masto/routes.ts

76 lines
1.7 KiB
TypeScript
Raw Normal View History

2023-01-07 03:40:15 +09:00
import { withoutProtocol } from 'ufo'
2023-01-08 15:21:09 +09:00
import type { mastodon } from 'masto'
2023-01-07 03:40:15 +09:00
2023-01-08 15:21:09 +09:00
export function getAccountRoute(account: mastodon.v1.Account) {
2023-01-07 03:40:15 +09:00
return useRouter().resolve({
name: 'account-index',
params: {
server: currentServer.value,
account: extractAccountHandle(account),
},
})
}
2023-01-08 15:21:09 +09:00
export function getAccountFollowingRoute(account: mastodon.v1.Account) {
2023-01-07 03:40:15 +09:00
return useRouter().resolve({
name: 'account-following',
params: {
server: currentServer.value,
account: extractAccountHandle(account),
},
})
}
2023-01-08 15:21:09 +09:00
export function getAccountFollowersRoute(account: mastodon.v1.Account) {
2023-01-07 03:40:15 +09:00
return useRouter().resolve({
name: 'account-followers',
params: {
server: currentServer.value,
account: extractAccountHandle(account),
},
})
}
2023-01-08 15:21:09 +09:00
export function getStatusRoute(status: mastodon.v1.Status) {
2023-01-07 03:40:15 +09:00
return useRouter().resolve({
name: 'status',
params: {
server: currentServer.value,
account: extractAccountHandle(status.account),
status: status.id,
},
})
}
export function getTagRoute(tag: string) {
return useRouter().resolve({
name: 'tag',
params: {
server: currentServer.value,
tag,
},
})
}
2023-01-08 15:21:09 +09:00
export function getStatusPermalinkRoute(status: mastodon.v1.Status) {
2023-01-07 03:40:15 +09:00
return status.url ? withoutProtocol(status.url) : null
}
2023-01-08 15:21:09 +09:00
export function getStatusInReplyToRoute(status: mastodon.v1.Status) {
2023-01-07 03:40:15 +09:00
return useRouter().resolve({
name: 'status-by-id',
params: {
server: currentServer.value,
status: status.inReplyToId,
},
})
}
export function navigateToStatus({ status, focusReply = false }: {
status: mastodon.v1.Status
focusReply?: boolean
}) {
return navigateTo({
path: getStatusRoute(status).href,
state: { focusReply },
})
}