mirror of
https://github.com/elk-zone/elk.git
synced 2024-11-21 17:05:22 +03:00
parent
71fbe6acf9
commit
24bbe9135b
1 changed files with 28 additions and 21 deletions
|
@ -3,32 +3,39 @@ import { parseURL } from 'ufo'
|
|||
|
||||
definePageMeta({
|
||||
middleware: async (to) => {
|
||||
let permalink = Array.isArray(to.params.permalink)
|
||||
? to.params.permalink.join('/')
|
||||
: to.params.permalink
|
||||
const HANDLED_MASTO_URL = /^(https?:\/\/)?(\w+\.)+\w+\/(@[@\w\d\.]+)(\/\d+)?$/
|
||||
try {
|
||||
let permalink = Array.isArray(to.params.permalink)
|
||||
? to.params.permalink.join('/')
|
||||
: to.params.permalink
|
||||
|
||||
if (!permalink.startsWith('http'))
|
||||
permalink = `https://${permalink}`
|
||||
if (!HANDLED_MASTO_URL.test(permalink))
|
||||
return '/home'
|
||||
|
||||
if (!currentUser.value) {
|
||||
const { host, pathname } = parseURL(permalink)
|
||||
await loginTo({ server: host! })
|
||||
return pathname
|
||||
}
|
||||
if (!permalink.startsWith('http'))
|
||||
permalink = `https://${permalink}`
|
||||
|
||||
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 (!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])
|
||||
}
|
||||
if (accounts[0])
|
||||
return getAccountPath(accounts[0])
|
||||
catch {}
|
||||
|
||||
return '/home'
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue