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'}
]);