From 462f2e43e9bad2ff8301281fa0138f70537e4cb4 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 24 Apr 2025 11:37:34 +0530 Subject: [PATCH] update: misc. --- .../overview/keys/create/+page.svelte | 2 +- .../bucket-[bucket]/file-[file]/+page.svelte | 57 ++++++++++++------- .../file-[file]/manageFileToken.svelte | 9 +-- .../bucket-[bucket]/file-[file]/store.ts | 13 +++-- 4 files changed, 48 insertions(+), 33 deletions(-) diff --git a/src/routes/(console)/project-[project]/overview/keys/create/+page.svelte b/src/routes/(console)/project-[project]/overview/keys/create/+page.svelte index cdc986601..68f04d424 100644 --- a/src/routes/(console)/project-[project]/overview/keys/create/+page.svelte +++ b/src/routes/(console)/project-[project]/overview/keys/create/+page.svelte @@ -4,7 +4,7 @@ import { InputText } from '$lib/elements/forms/index.js'; import { Wizard } from '$lib/layout'; import { Fieldset, Layout, Typography } from '@appwrite.io/pink-svelte'; - import ExpirationInput from '../expirationInput.svelte'; + import { ExpirationInput } from '$lib/components'; import Scopes from '../scopes.svelte'; import Button from '$lib/elements/forms/button.svelte'; import Form from '$lib/elements/forms/form.svelte'; diff --git a/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte b/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte index 7d76552a5..4dfbcfd15 100644 --- a/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte +++ b/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/+page.svelte @@ -109,11 +109,13 @@ async function createFileToken(expiry: string) { try { - console.log(JSON.stringify($file, null, 2)); + await sdk.forProject.tokens.createFileToken( + $file.bucketId, + $file.$id, + expiry, + [Permission.read(Role.any())] + ); - await sdk.forProject.tokens.createFileToken($file.bucketId, $file.$id, expiry, [ - Permission.read(Role.any()) - ]); await invalidate(Dependencies.FILE_TOKENS); addNotification({ message: 'File token created', @@ -131,8 +133,8 @@ async function updateFileTokenExpiry(newExpiry: string) { try { - // TODO: permission missing on object type. await sdk.forProject.tokens.update(selectedFileToken.$id, newExpiry); + await invalidate(Dependencies.FILE_TOKENS); addNotification({ message: 'File token updated', type: 'success' @@ -149,10 +151,22 @@ } } - async function copyPreviewWithToken(token: string) { - await copy( - `${sdk.forProject.storage.getFilePreview($file.bucketId, $file.$id)}&token=${token}` - ); + async function copyPreviewWithToken(token: Models.ResourceToken) { + try { + const jwt = await sdk.forProject.tokens.getJWT(token.$id); + await copy( + `${sdk.forProject.storage.getFilePreview($file.bucketId, $file.$id)}&token=${jwt.jwt}` + ); + addNotification({ + message: 'File url copied', + type: 'success' + }); + } catch (error) { + addNotification({ + message: error.message, + type: 'error' + }); + } } onMount(async () => { @@ -229,22 +243,20 @@ {toLocaleDate(token.$createdAt)} - - - - {token.expiry - ? cleanFormattedDate(token.expiry) - : 'Never'} - + {token.expire + ? cleanFormattedDate(token.expire) + : 'never'} + {token.$createdAt - ? cleanFormattedDate(token.$createdAt, true) - : 'Never'} + >{token.accessedAt + ? cleanFormattedDate(token.accessedAt, true) + : 'never'} - + + { toggle(e); - copyPreviewWithToken(token.value); + copyPreviewWithToken(token); }}> Copy URL @@ -287,6 +299,7 @@ + {/each} diff --git a/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/manageFileToken.svelte b/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/manageFileToken.svelte index 344aa0df9..452f5c389 100644 --- a/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/manageFileToken.svelte +++ b/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/manageFileToken.svelte @@ -17,7 +17,9 @@ export let show = false; export let isDelete = false; - export let fileToken: Models.ResourceToken; + export let fileToken: Models.ResourceToken & { + accessedAt: string; + }; let expire = null; @@ -52,9 +54,8 @@

- - {#if fileToken.$createdAt} - {@const formattedDate = cleanFormattedDate(fileToken.$createdAt, true)} + {#if fileToken.accessedAt} + {@const formattedDate = cleanFormattedDate(fileToken.accessedAt, true)} This token was last accessed on {formattedDate} {:else} diff --git a/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/store.ts b/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/store.ts index fd48d30c7..93f37a676 100644 --- a/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/store.ts +++ b/src/routes/(console)/project-[project]/storage/bucket-[bucket]/file-[file]/store.ts @@ -5,12 +5,13 @@ import type { Column } from '$lib/helpers/types'; export const file = derived(page, ($page) => $page.data.file as Models.File); -export const tokens = derived(page, ($page) => $page.data.tokens as Models.ResourceTokenList); +export const tokens = derived(page, ($page) => $page.data.tokens as Models.ResourceTokenList & { + accessedAt: string, +}); export const columns = writable([ - { id: 'created', title: 'Created', type: 'datetime', width: 170 }, - { id: 'value', title: 'Value', type: 'string', width: 170 }, - { id: 'expiry', title: 'Expiry', type: 'datetime', width: 170 }, - { id: 'last_accessed', title: 'Last accessed', type: 'datetime', width: 170 }, - { id: 'actions', title: '', type: 'string', width: 80 } + { id: 'created', title: 'Created', type: 'datetime', width: 200 }, + { id: 'expiry', title: 'Expiration date', type: 'datetime', width: 200 }, + { id: 'last_accessed', title: 'Last accessed', type: 'datetime', width: 200 }, + { id: 'actions', title: '', type: 'string'} ]);