From 19a8feff193179ca186131ce79db336282854346 Mon Sep 17 00:00:00 2001 From: nobswebdev Date: Fri, 30 Oct 2026 17:43:29 +0100 Subject: [PATCH] add not-found handling to ZK and hotlink viewer pages. Rename ViewerView and view store to ZkViewerView and useZkViewStore; unify hotlink load and ZK unlock error copy. --- frontend/src/consts/routeNames.ts | 2 +- frontend/src/router/index.ts | 8 +-- frontend/src/stores/{view.ts => zkView.ts} | 2 +- .../src/types/view/HotlinkViewerViewState.ts | 1 + frontend/src/types/view/ZkViewerViewState.ts | 1 + frontend/src/views/HotlinkViewerView.vue | 49 ++++++++++++---- .../{ViewerView.vue => ZkViewerView.vue} | 58 ++++++++++++------- 7 files changed, 85 insertions(+), 36 deletions(-) rename frontend/src/stores/{view.ts => zkView.ts} (97%) create mode 100644 frontend/src/types/view/HotlinkViewerViewState.ts create mode 100644 frontend/src/types/view/ZkViewerViewState.ts rename frontend/src/views/{ViewerView.vue => ZkViewerView.vue} (59%) diff --git a/frontend/src/consts/routeNames.ts b/frontend/src/consts/routeNames.ts index 23913d5..8f4ca63 100644 --- a/frontend/src/consts/routeNames.ts +++ b/frontend/src/consts/routeNames.ts @@ -1,7 +1,7 @@ export const ROUTE_NAMES = { Upload: 'Upload', About: 'About', - Viewer: 'Viewer', + ZkViewer: 'ZkViewer', HotlinkViewer: 'HotlinkViewer', Delete: 'Delete' } as const; diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index cf7ea6a..80a41ac 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -29,15 +29,15 @@ const router = createRouter({ }, { path: '/v/:id', - name: ROUTE_NAMES.Viewer, - component: () => import('@/views/ViewerView.vue'), - meta: { title: 'Private Image - Viewer' } + name: ROUTE_NAMES.ZkViewer, + component: () => import('@/views/ZkViewerView.vue'), + meta: { title: 'Private Image - ZK Viewer' } }, { path: '/h/:id/:secret', name: ROUTE_NAMES.HotlinkViewer, component: () => import('@/views/HotlinkViewerView.vue'), - meta: { title: 'Private Image - Viewer' } + meta: { title: 'Private Image - Hotlink Viewer' } }, { path: '/d/:id', diff --git a/frontend/src/stores/view.ts b/frontend/src/stores/zkView.ts similarity index 97% rename from frontend/src/stores/view.ts rename to frontend/src/stores/zkView.ts index bef8188..9c83997 100644 --- a/frontend/src/stores/view.ts +++ b/frontend/src/stores/zkView.ts @@ -7,7 +7,7 @@ import { toArrayBuffer } from '@/utils/toArrayBuffer'; import { decryptPasswordProtectedZkUpload } from '@/utils/upload/decryptPasswordProtectedZkUpload'; import { decryptZkUpload } from '@/utils/upload/decryptZkUpload'; -export const useViewStore = defineStore('view', () => { +export const useZkViewStore = defineStore('zkView', () => { const imageObjectUrl = ref(null); const clearImage = (): void => { diff --git a/frontend/src/types/view/HotlinkViewerViewState.ts b/frontend/src/types/view/HotlinkViewerViewState.ts new file mode 100644 index 0000000..ef180c9 --- /dev/null +++ b/frontend/src/types/view/HotlinkViewerViewState.ts @@ -0,0 +1 @@ +export type HotlinkViewerViewState = 'invalidLink' | 'loading' | 'image' | 'notFound'; diff --git a/frontend/src/types/view/ZkViewerViewState.ts b/frontend/src/types/view/ZkViewerViewState.ts new file mode 100644 index 0000000..cde32c5 --- /dev/null +++ b/frontend/src/types/view/ZkViewerViewState.ts @@ -0,0 +1 @@ +export type ZkViewerViewState = 'loading' | 'password' | 'image' | 'invalidLink' | 'notFound'; diff --git a/frontend/src/views/HotlinkViewerView.vue b/frontend/src/views/HotlinkViewerView.vue index 1ccc118..6fefeba 100644 --- a/frontend/src/views/HotlinkViewerView.vue +++ b/frontend/src/views/HotlinkViewerView.vue @@ -1,33 +1,62 @@ diff --git a/frontend/src/views/ViewerView.vue b/frontend/src/views/ZkViewerView.vue similarity index 59% rename from frontend/src/views/ViewerView.vue rename to frontend/src/views/ZkViewerView.vue index 135ccc7..371f92e 100644 --- a/frontend/src/views/ViewerView.vue +++ b/frontend/src/views/ZkViewerView.vue @@ -1,10 +1,18 @@