From 8bd1869768b845bbce7b11f95ef9aa548f7b111c Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 27 Mar 2025 13:00:09 +0530 Subject: [PATCH 01/14] feat: Import documents from a CSV. --- package.json | 4 +- pnpm-lock.yaml | 28 +-- src/lib/components/csvImportBox.svelte | 162 ++++++++++++++++++ src/lib/helpers/files.ts | 18 ++ .../project-[project]/+layout.svelte | 2 + .../collection-[collection]/+page.svelte | 125 +++++++++++++- .../attributes/+page.svelte | 77 +++++---- .../attributes/createAttributeDropdown.svelte | 45 +++-- .../csvDisabled.svelte | 12 ++ .../collection-[collection]/store.ts | 3 + 10 files changed, 406 insertions(+), 70 deletions(-) create mode 100644 src/lib/components/csvImportBox.svelte create mode 100644 src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/csvDisabled.svelte diff --git a/package.json b/package.json index f74a73efc5..44254c1e89 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,9 @@ "dependencies": { "@appwrite.io/console": "https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@8db247c", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@4a5aab5", + "@appwrite.io/pink-icons-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@310", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@203ff84", + "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@310", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3f6bc6d6a0..d5db0176ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,14 +15,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@4a5aab5 - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@4a5aab5(svelte@4.2.19) + specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@310 + version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@310(svelte@4.2.19) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@203ff84 - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@203ff84(react-dom@18.3.1(react@18.3.1))(svelte@4.2.19) + specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@310 + version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@310(react-dom@18.3.1(react@18.3.1))(svelte@4.2.19) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -215,14 +215,14 @@ packages: resolution: {tarball: https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@8db247c} version: 1.2.1 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@203ff849e6d6a66529bf690af2e97cade99ef488': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@203ff849e6d6a66529bf690af2e97cade99ef488} + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@2db2d48b7ac3f0f2a0a8b90c9d81310183586c2a': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@2db2d48b7ac3f0f2a0a8b90c9d81310183586c2a} version: 1.0.0-next.7 peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@4a5aab5': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@4a5aab5} + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@310': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@310} version: 1.0.0-next.7 peerDependencies: svelte: ^4.0.0 @@ -236,8 +236,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@203ff84': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@203ff84} + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@310': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@310} version: 1.0.0-next.85 peerDependencies: react-dom: ^18.0.0 @@ -4243,11 +4243,11 @@ snapshots: '@appwrite.io/console@https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@8db247c': {} - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@203ff849e6d6a66529bf690af2e97cade99ef488(svelte@4.2.19)': + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@2db2d48b7ac3f0f2a0a8b90c9d81310183586c2a(svelte@4.2.19)': dependencies: svelte: 4.2.19 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@4a5aab5(svelte@4.2.19)': + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@310(svelte@4.2.19)': dependencies: svelte: 4.2.19 @@ -4260,9 +4260,9 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@203ff84(react-dom@18.3.1(react@18.3.1))(svelte@4.2.19)': + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@310(react-dom@18.3.1(react@18.3.1))(svelte@4.2.19)': dependencies: - '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@203ff849e6d6a66529bf690af2e97cade99ef488(svelte@4.2.19) + '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@2db2d48b7ac3f0f2a0a8b90c9d81310183586c2a(svelte@4.2.19) '@floating-ui/dom': 1.6.13 '@melt-ui/pp': 0.3.2(@melt-ui/svelte@0.86.3(svelte@4.2.19))(svelte@4.2.19) '@melt-ui/svelte': 0.86.3(svelte@4.2.19) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte new file mode 100644 index 0000000000..9b444447a1 --- /dev/null +++ b/src/lib/components/csvImportBox.svelte @@ -0,0 +1,162 @@ + + +{#if showCsvImportBox} +
+
+
+

+ + Importing documents ({importItems.size}) + +

+ + +
+ + {#each [...importItems.entries()] as [key, value]} +
+
    +
  • +
    +
    + + {text(key)} + + + + Collection name + +
    +
    +
    +
  • +
+
+ {/each} +
+
+{/if} + + diff --git a/src/lib/helpers/files.ts b/src/lib/helpers/files.ts index f85f4e7bdb..89e92d6544 100644 --- a/src/lib/helpers/files.ts +++ b/src/lib/helpers/files.ts @@ -97,6 +97,24 @@ export function removeFile(file: File, files: FileList) { return dataTransfer.files; } +export function readColumnsFromCSV(file: File): Promise { + // more than enough! + const CHUNK_SIZE = 4096; + + return new Promise((resolve, reject) => { + const reader = new FileReader(); + + reader.onload = () => { + const text = reader.result as string; + const [firstLine] = text.split('\n'); + resolve(firstLine.split(',')); + }; + + reader.onerror = reject; + reader.readAsText(file.slice(0, CHUNK_SIZE)); + }); +} + export const defaultIgnore = ` ### Node ### # Logs diff --git a/src/routes/(console)/project-[project]/+layout.svelte b/src/routes/(console)/project-[project]/+layout.svelte index 9faa9c742a..5c9bac20e4 100644 --- a/src/routes/(console)/project-[project]/+layout.svelte +++ b/src/routes/(console)/project-[project]/+layout.svelte @@ -24,6 +24,7 @@ canWriteProjects, canWriteSites } from '$lib/stores/roles'; + import CsvImportBox from '$lib/components/csvImportBox.svelte'; onMount(() => { return sdk.forConsole.client.subscribe(['project', 'console'], (response) => { @@ -117,6 +118,7 @@ + From c6ca1c101d03152960ae4070c873c7a84464e11d Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 24 Apr 2025 13:59:42 +0530 Subject: [PATCH 09/14] address comments: design review. --- src/lib/components/csvImportBox.svelte | 25 ++++++----- src/lib/components/filePicker.svelte | 43 ++++++++++++------- .../collection-[collection]/+page.svelte | 2 +- .../attributes/+page.svelte | 5 ++- 4 files changed, 43 insertions(+), 32 deletions(-) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index 78526d196c..0a76b7ff07 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -125,15 +125,16 @@ } } - function text(status: string, collectionName: string = '') { - if (status === 'completed') { - return 'CSV import complete'; - } else if (status === 'failed') { - return 'CSV import failed'; - } else if (status === 'processing') { - return `Importing CSV file${collectionName ? ` to ${collectionName}` : ''}`; - } else { - return 'Preparing CSV for import...'; + function text(status: string, collectionName = '') { + const name = collectionName ? `${collectionName}` : ''; + switch (status) { + case 'completed': + case 'failed': + return `Import to ${name} ${status}`; + case 'processing': + return `Importing CSV file${name ? ` to ${name}` : ''}`; + default: + return 'Preparing CSV for import...'; } } @@ -169,9 +170,7 @@ class="upload-box-button" class:is-open={isOpen} aria-label="toggle upload box" - on:click={() => { - isOpen = !isOpen; - }}> + on:click={() => (isOpen = !isOpen)}> - + {:else} diff --git a/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/+page.svelte index d2a546179c..8a4ceac00f 100644 --- a/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -191,5 +191,5 @@ {#if showImportCSV} - + {/if} diff --git a/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte b/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte index f71d0e8297..298ea4eadd 100644 --- a/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte +++ b/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte @@ -32,7 +32,8 @@ IconPencil, IconPlus, IconSwitchHorizontal, - IconTrash + IconTrash, + IconViewList } from '@appwrite.io/pink-icons-svelte'; import type { ComponentProps } from 'svelte'; import { Click, trackEvent } from '$lib/actions/analytics'; @@ -55,7 +56,7 @@ ip: IconLocationMarker, url: IconLink, email: IconLink, - enum: IconSwitchHorizontal + enum: IconViewList }; function getAttributeStatusBadge(status: string): ComponentProps['type'] { From ca8b32808a192bd00f3b71b472911e15b1bfaf0e Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 24 Apr 2025 14:05:24 +0530 Subject: [PATCH 10/14] fix: tabs state calculation. --- .../collection-[collection]/header.svelte | 86 ++++++++++--------- 1 file changed, 46 insertions(+), 40 deletions(-) diff --git a/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/header.svelte b/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/header.svelte index e4b58dfd1c..4e6d367378 100644 --- a/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/header.svelte +++ b/src/routes/(console)/project-[project]/databases/database-[database]/collection-[collection]/header.svelte @@ -8,46 +8,52 @@ import { collection } from './store'; import { isTabletViewport } from '$lib/stores/viewport'; - $: projectId = page.params.project; - $: databaseId = page.params.database; - $: collectionId = page.params.collection; - $: path = `${base}/project-${projectId}/databases/database-${databaseId}/collection-${collectionId}`; - $: tabs = [ - { - href: path, - title: 'Documents', - event: 'documents', - hasChildren: true - }, - { - href: `${path}/attributes`, - title: 'Attributes', - event: 'attributes' - }, - { - href: `${path}/indexes`, - title: 'Indexes', - event: 'indexes' - }, - { - href: `${path}/activity`, - title: 'Activity', - event: 'activity', - hasChildren: true - }, - { - href: `${path}/usage`, - title: 'Usage', - event: 'usage', - hasChildren: true - }, - { - href: `${path}/settings`, - title: 'Settings', - event: 'settings', - disabled: !$canWriteCollections - } - ].filter((tab) => !tab.disabled); + const projectId = $derived(page.params.project); + const databaseId = $derived(page.params.database); + const collectionId = $derived(page.params.collection); + + const path = $derived( + `${base}/project-${projectId}/databases/database-${databaseId}/collection-${collectionId}` + ); + + const tabs = $derived.by(() => + [ + { + href: path, + title: 'Documents', + event: 'documents', + hasChildren: true + }, + { + href: `${path}/attributes`, + title: 'Attributes', + event: 'attributes' + }, + { + href: `${path}/indexes`, + title: 'Indexes', + event: 'indexes' + }, + { + href: `${path}/activity`, + title: 'Activity', + event: 'activity', + hasChildren: true + }, + { + href: `${path}/usage`, + title: 'Usage', + event: 'usage', + hasChildren: true + }, + { + href: `${path}/settings`, + title: 'Settings', + event: 'settings', + disabled: !$canWriteCollections + } + ].filter((tab) => !tab.disabled) + );
From bc5a31f3ace5238622f0857149c5f7c8679a71e4 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 24 Apr 2025 19:20:31 +0530 Subject: [PATCH 11/14] bump: lockfile. --- pnpm-lock.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd1a4e68f7..7953479163 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ importers: specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@12075ba - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@12075ba(react-dom@18.3.1(react@18.3.1))(svelte@5.27.0) + specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f + version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f(react-dom@18.3.1(react@18.3.1))(svelte@5.27.0) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -221,8 +221,8 @@ packages: resolution: {tarball: https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@61868a9} version: 1.2.1 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@12075ba0a81ce1c8ef6f31a9951b42369eab478c': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@12075ba0a81ce1c8ef6f31a9951b42369eab478c} + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@29b227fb7ad99f66e5031701c457d89ac190cd27': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@29b227fb7ad99f66e5031701c457d89ac190cd27} version: 1.0.0-next.7 peerDependencies: svelte: ^4.0.0 @@ -242,8 +242,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@12075ba': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@12075ba} + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f} version: 1.0.0-next.85 peerDependencies: react-dom: ^18.0.0 @@ -3445,7 +3445,7 @@ snapshots: '@appwrite.io/console@https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@61868a9': {} - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@12075ba0a81ce1c8ef6f31a9951b42369eab478c(svelte@5.27.0)': + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@29b227fb7ad99f66e5031701c457d89ac190cd27(svelte@5.27.0)': dependencies: svelte: 5.27.0 @@ -3462,9 +3462,9 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@12075ba(react-dom@18.3.1(react@18.3.1))(svelte@5.27.0)': + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@29b227f(react-dom@18.3.1(react@18.3.1))(svelte@5.27.0)': dependencies: - '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@12075ba0a81ce1c8ef6f31a9951b42369eab478c(svelte@5.27.0) + '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@29b227fb7ad99f66e5031701c457d89ac190cd27(svelte@5.27.0) '@floating-ui/dom': 1.6.13 '@melt-ui/pp': 0.3.2(@melt-ui/svelte@0.86.6(svelte@5.27.0))(svelte@5.27.0) '@melt-ui/svelte': 0.86.6(svelte@5.27.0) From e0d93a0cd9c020a5fd62582a097f0f3c58b7e23b Mon Sep 17 00:00:00 2001 From: Darshan Date: Tue, 29 Apr 2025 15:08:53 +0530 Subject: [PATCH 12/14] fix: designs on file picker; update: misc. logic here and there. --- package.json | 2 +- pnpm-lock.yaml | 26 +- src/lib/components/csvImportBox.svelte | 19 +- src/lib/components/filePicker.svelte | 657 +++++++++++------- .../collection-[collection]/+page.svelte | 54 +- 5 files changed, 486 insertions(+), 272 deletions(-) diff --git a/package.json b/package.json index c8547862ea..de203a8b9b 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f", + "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1c607c0", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69f1af5b09..cd44cbe662 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,13 +16,13 @@ importers: version: 0.25.0 '@appwrite.io/pink-icons-svelte': specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f(svelte@5.25.3) + version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f(svelte@5.27.0) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f(react-dom@18.3.1(react@18.3.1))(svelte@5.25.3) + specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1c607c0 + version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1c607c0(react-dom@18.3.1(react@18.3.1))(svelte@5.27.0) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -221,14 +221,14 @@ packages: resolution: {tarball: https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@61868a9} version: 1.2.1 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f} + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@1c607c00c8ac325d51241066f9c74a9dfdfb8fcd': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@1c607c00c8ac325d51241066f9c74a9dfdfb8fcd} version: 1.0.0-next.7 peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f1fe1b018f3ef6aa6091874b28cfc4554': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f1fe1b018f3ef6aa6091874b28cfc4554} + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f} version: 1.0.0-next.7 peerDependencies: svelte: ^4.0.0 @@ -242,8 +242,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f} + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1c607c0': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1c607c0} version: 1.0.0-next.85 peerDependencies: react-dom: ^18.0.0 @@ -3445,11 +3445,11 @@ snapshots: '@appwrite.io/console@https://pkg.pr.new/appwrite/appwrite/@appwrite.io/console@61868a9': {} - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@1c607c00c8ac325d51241066f9c74a9dfdfb8fcd(svelte@5.27.0)': dependencies: svelte: 5.27.0 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f1fe1b018f3ef6aa6091874b28cfc4554(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f(svelte@5.27.0)': dependencies: svelte: 5.27.0 @@ -3462,9 +3462,9 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@bd21ff7f(react-dom@18.3.1(react@18.3.1))(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@1c607c0(react-dom@18.3.1(react@18.3.1))(svelte@5.27.0)': dependencies: - '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@bd21ff7f1fe1b018f3ef6aa6091874b28cfc4554(svelte@5.25.3) + '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@1c607c00c8ac325d51241066f9c74a9dfdfb8fcd(svelte@5.27.0) '@floating-ui/dom': 1.6.13 '@melt-ui/pp': 0.3.2(@melt-ui/svelte@0.86.6(svelte@5.27.0))(svelte@5.27.0) '@melt-ui/svelte': 0.86.6(svelte@5.27.0) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index 0a76b7ff07..d3bd628888 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -29,15 +29,21 @@ async function showCompletionNotification( databaseId: string, collectionId: string, - status: string, - errors: string = '' + importData: Payload ) { const projectId = page.params.project; await invalidate(Dependencies.DOCUMENTS); const url = `${base}/project-${projectId}/databases/database-${databaseId}/collection-${collectionId}`; - const type = status === 'completed' ? 'success' : 'error'; - const message = status === 'completed' ? 'CSV import finished successfully.' : `${errors}`; + // extract clean message from nested backend error. + const match = importData.errors.join('').match(/message: '(.*)' Message:/i); + const actualMessage = match?.[1]; + + const type = importData.status === 'completed' ? 'success' : 'error'; + const message = + importData.status === 'completed' + ? 'CSV import finished successfully.' + : `${actualMessage}`; addNotification({ type, @@ -95,10 +101,7 @@ }); if (status === 'completed' || status === 'failed') { - // extract clean message from nested backend error. - const match = importData.errors.join('').match(/message: '(.*)' Message:/i); - const actualMessage = match?.[1]; - await showCompletionNotification(databaseId, collectionId, status, actualMessage); + await showCompletionNotification(databaseId, collectionId, importData); } } diff --git a/src/lib/components/filePicker.svelte b/src/lib/components/filePicker.svelte index 4109732650..b090759e1f 100644 --- a/src/lib/components/filePicker.svelte +++ b/src/lib/components/filePicker.svelte @@ -1,32 +1,34 @@ -
+ - + -