elk/pages/[...permalink].vue
2022-11-29 21:51:52 +01:00

40 lines
890 B
Vue

<script setup lang="ts">
import { parseURL } from 'ufo'
definePageMeta({
middleware: async (to) => {
let permalink = Array.isArray(to.params.permalink)
? to.params.permalink.join('/')
: to.params.permalink
if (!permalink.startsWith('http'))
permalink = `https://${permalink}`
if (!currentUser.value) {
const { host, pathname } = parseURL(permalink)
await loginTo({ server: host! })
return pathname
}
const { value } = await useMasto().search({ q: permalink, resolve: true, limit: 1 }).next()
const { accounts, statuses } = value
if (statuses[0]) {
return {
path: getStatusPath(statuses[0]),
state: {
status: statuses[0] as any,
},
}
}
if (accounts[0])
return getAccountPath(accounts[0])
return '/home'
},
})
</script>
<template>
<div />
</template>