diff --git a/src/lib/elements/forms/inputFile.svelte b/src/lib/elements/forms/inputFile.svelte index 2db31eaef..c5e29f0a0 100644 --- a/src/lib/elements/forms/inputFile.svelte +++ b/src/lib/elements/forms/inputFile.svelte @@ -1,6 +1,7 @@ + import { invalidate } from '$app/navigation'; + import { base } from '$app/paths'; import { page } from '$app/stores'; - import { sdkForProject } from '$lib/stores/sdk'; - import { Pill } from '$lib/elements'; - import { Button } from '$lib/elements/forms'; + import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { - Empty, - EmptySearch, - Pagination, Avatar, DropList, DropListItem, DropListLink, + Empty, + EmptySearch, + Pagination, SearchQuery } from '$lib/components'; - import Create from '../create.svelte'; - import Delete from '../deleteFile.svelte'; + import { Dependencies, PAGE_LIMIT } from '$lib/constants'; + import { Pill } from '$lib/elements'; + import { Button } from '$lib/elements/forms'; import { Table, - TableHeader, TableBody, - TableRowLink, - TableRow, + TableCell, TableCellHead, TableCellText, - TableCell + TableHeader, + TableRow, + TableRowLink } from '$lib/elements/table'; import { toLocaleDate } from '$lib/helpers/date'; import { calculateSize } from '$lib/helpers/sizeConvertion'; import { Container } from '$lib/layout'; - import { base } from '$app/paths'; - import type { Models } from '@aw-labs/appwrite-console'; - import { uploader } from '$lib/stores/uploader'; import { addNotification } from '$lib/stores/notifications'; + import { sdkForProject } from '$lib/stores/sdk'; + import { uploader } from '$lib/stores/uploader'; + import { wizard } from '$lib/stores/wizard'; + import type { Models } from '@aw-labs/appwrite-console'; import type { PageData } from './$types'; - import { invalidate } from '$app/navigation'; - import { Dependencies, PAGE_LIMIT } from '$lib/constants'; - import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; + import CreateWizard from './create/create.svelte'; + import Delete from './deleteFile.svelte'; export let data: PageData; - let showCreate = false; let showDelete = false; let showDropdown = []; let selectedFile: Models.File = null; @@ -49,11 +49,6 @@ const getPreview = (fileId: string) => sdkForProject.storage.getFilePreview(bucketId, fileId, 32, 32).toString() + '&mode=admin'; - function fileCreated() { - showCreate = false; - invalidate(Dependencies.FILES); - } - function fileDeleted(event: CustomEvent) { showDelete = false; uploader.removeFile(event.detail); @@ -78,8 +73,9 @@ - @@ -97,7 +93,7 @@ {#if file.chunksTotal / file.chunksUploaded !== 1} -
+
{file.name} @@ -136,7 +132,7 @@ -
+
{file.name}
@@ -213,11 +209,10 @@ single href="https://appwrite.io/docs/storage#createFile" target="file" - on:click={() => (showCreate = true)} /> + on:click={() => wizard.start(CreateWizard)} /> {/if} - {#if selectedFile} {/if} diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/[[page]]/+page.ts b/src/routes/console/project-[project]/storage/bucket-[bucket]/+page.ts similarity index 100% rename from src/routes/console/project-[project]/storage/bucket-[bucket]/[[page]]/+page.ts rename to src/routes/console/project-[project]/storage/bucket-[bucket]/+page.ts diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/create/create.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/create/create.svelte new file mode 100644 index 000000000..2fb30235c --- /dev/null +++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/create/create.svelte @@ -0,0 +1,60 @@ + + + diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/create/step1.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/create/step1.svelte new file mode 100644 index 000000000..9dd49dc1e --- /dev/null +++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/create/step1.svelte @@ -0,0 +1,44 @@ + + + + Upload a File + Upload a file to add it to your bucket. + +
+ +
+ + {#if !showCustomId} +
+ (showCustomId = !showCustomId)}> + +
+ {:else} +
+ +
+ {/if} +
+
+ + diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/create/step2.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/create/step2.svelte new file mode 100644 index 000000000..8ea672ecf --- /dev/null +++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/create/step2.svelte @@ -0,0 +1,43 @@ + + + + Update Permissions + Choose who can get access to your buckets and files. For more information, check out the + Permissions Guide in our documentation. + +

+ Choose who can access your buckets and files. For more information, check out the + + Permissions Guide + . +

+ {#if $bucket.fileSecurity} +
+ + File security enabled + Users will be able to access this file if they have been granted + either File or Bucket permissions. + +
+
+ +
+ {:else} + + File security disabled + If you want to assign file permissions, navigate to Bucket settings and enable file security. + Otherwise, only Bucket permissions will be used. + + {/if} +
diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/create/store.ts b/src/routes/console/project-[project]/storage/bucket-[bucket]/create/store.ts new file mode 100644 index 000000000..6a6eb9248 --- /dev/null +++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/create/store.ts @@ -0,0 +1,24 @@ +import { writable } from 'svelte/store'; + +type CreateFile = { + files: FileList | null; + id: string | null; + permissions: string[]; +}; + +const initialState: CreateFile = { + files: null, + id: null, + permissions: [] +}; + +export const createFile = (function initialize() { + const store = writable({ ...initialState }); + + return { + ...store, + reset() { + store.set({ ...initialState }); + } + }; +})();