mirror of
https://github.com/elk-zone/elk
synced 2024-11-28 06:48:14 +09:00
41 lines
890 B
Vue
41 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>
|