add server unreachable page and redirection

This commit is contained in:
Gauthier Roebroeck 2025-10-17 09:50:28 +08:00
parent ecdc2db539
commit 15c6a14ed1
5 changed files with 50 additions and 12 deletions

View file

@ -179,10 +179,12 @@ async function submitForm() {
}
}
const { refresh: claimStatus } = useClaimStatus()
void claimStatus().then(({ data }) => {
if (data?.isClaimed) void router.push('/')
})
void useClaimStatus()
.refresh()
.then(({ data, error }) => {
if (error) void router.push('/error')
else if (data?.isClaimed) void router.push('/')
})
</script>
<route lang="yaml">

View file

@ -0,0 +1,27 @@
<template>
<v-empty-state
icon="i-mdi:connection"
:title="
$formatMessage({
description: 'Server unreachable error view: error message title',
defaultMessage: 'Server unreachable',
id: 'n0TnQ2',
})
"
:text="
$formatMessage({
description: 'Server unreachable error view: error message subtitle',
defaultMessage: 'Check that your Komga server is running',
id: 'PTr5Wc',
})
"
/>
</template>
<script lang="ts" setup></script>
<route lang="yaml">
meta:
layout: single
noAuth: true
</route>

View file

@ -175,10 +175,12 @@ async function submitForm() {
})
}
const { refresh: claimStatus } = useClaimStatus()
void claimStatus().then(({ data }) => {
if (data?.isClaimed == false) void router.push('/')
})
void useClaimStatus()
.refresh()
.then(({ data, error }) => {
if (error) void router.push('/error')
else if (data?.isClaimed == false) void router.push('/')
})
</script>
<route lang="yaml">

View file

@ -16,15 +16,17 @@ async function checkAuthenticated() {
const router = useRouter()
const route = useRoute()
const { data, error, refresh } = useCurrentUser()
const { data: claimData, refresh: claimRefresh } = useClaimStatus()
const { data: claimData, error: claimError, refresh: claimRefresh } = useClaimStatus()
await refresh()
await claimRefresh()
if (data.value) {
// if we can't get the claim status, most likely the server is unreachable
if (claimError.value) {
await router.push({ name: '/error' })
} else if (data.value) {
if (route.query.redirect) await router.push({ path: route.query.redirect.toString() })
else await router.push('/')
}
if (error.value) {
} else if (error.value) {
if (claimData.value?.isClaimed)
await router.push({ name: '/login', query: { redirect: route.query.redirect } })
else await router.push({ name: '/claim', query: { redirect: route.query.redirect } })

View file

@ -25,6 +25,7 @@ declare module 'vue-router/auto-routes' {
'/account/details': RouteRecordInfo<'/account/details', '/account/details', Record<never, never>, Record<never, never>>,
'/account/ui': RouteRecordInfo<'/account/ui', '/account/ui', Record<never, never>, Record<never, never>>,
'/claim': RouteRecordInfo<'/claim', '/claim', Record<never, never>, Record<never, never>>,
'/error': RouteRecordInfo<'/error', '/error', Record<never, never>, Record<never, never>>,
'/history': RouteRecordInfo<'/history', '/history', Record<never, never>, Record<never, never>>,
'/import/books': RouteRecordInfo<'/import/books', '/import/books', Record<never, never>, Record<never, never>>,
'/import/readlist': RouteRecordInfo<'/import/readlist', '/import/readlist', Record<never, never>, Record<never, never>>,
@ -83,6 +84,10 @@ declare module 'vue-router/auto-routes' {
routes: '/claim'
views: never
}
'src/pages/error.vue': {
routes: '/error'
views: never
}
'src/pages/history.vue': {
routes: '/history'
views: never