diff --git a/package.json b/package.json index 99a3e173f2..851cb44908 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "^2.0.0-RC.1", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5aca249", + "@appwrite.io/pink-svelte": "https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@67c988c", "@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 8ceb043ad3..92351d55c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,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@5aca249 - version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5aca249(svelte@5.25.3) + specifier: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@67c988c + version: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@67c988c(svelte@5.25.3) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -263,8 +263,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5aca24915ff47f6af3f1664a10ebdceab8d105f4': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5aca24915ff47f6af3f1664a10ebdceab8d105f4} + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@67c988c04de3464a9c39630fd798e2316d157fea': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@67c988c04de3464a9c39630fd798e2316d157fea} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -278,8 +278,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@5aca249': - resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@5aca249} + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@67c988c': + resolution: {tarball: https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@67c988c} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3621,7 +3621,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5aca24915ff47f6af3f1664a10ebdceab8d105f4(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@67c988c04de3464a9c39630fd798e2316d157fea(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3634,9 +3634,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@5aca249(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-svelte@67c988c(svelte@5.25.3)': dependencies: - '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@5aca24915ff47f6af3f1664a10ebdceab8d105f4(svelte@5.25.3) + '@appwrite.io/pink-icons-svelte': https://pkg.pr.new/appwrite/pink/@appwrite.io/pink-icons-svelte@67c988c04de3464a9c39630fd798e2316d157fea(svelte@5.25.3) '@floating-ui/dom': 1.6.13 '@melt-ui/pp': 0.3.2(@melt-ui/svelte@0.86.6(svelte@5.25.3))(svelte@5.25.3) '@melt-ui/svelte': 0.86.6(svelte@5.25.3) diff --git a/src/lib/helpers/files.ts b/src/lib/helpers/files.ts index bc408d4214..b72e289f66 100644 --- a/src/lib/helpers/files.ts +++ b/src/lib/helpers/files.ts @@ -92,6 +92,11 @@ export function removeFile(file: File, files: FileList) { return dataTransfer.files; } +export enum InvalidFileType { + SIZE = 'invalid_size', + EXTENSION = 'invalid_extension' +} + export const defaultIgnore = ` ### Node ### # Logs diff --git a/src/routes/(console)/organization-[organization]/domains/domain-[domain]/importRecordModal.svelte b/src/routes/(console)/organization-[organization]/domains/domain-[domain]/importRecordModal.svelte index b46812fa0b..5d0eeda5a1 100644 --- a/src/routes/(console)/organization-[organization]/domains/domain-[domain]/importRecordModal.svelte +++ b/src/routes/(console)/organization-[organization]/domains/domain-[domain]/importRecordModal.svelte @@ -5,7 +5,7 @@ import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { Icon, Layout, Tooltip, Typography, Upload } from '@appwrite.io/pink-svelte'; import { IconInfo } from '@appwrite.io/pink-icons-svelte'; - import { removeFile } from '$lib/helpers/files'; + import { InvalidFileType, removeFile } from '$lib/helpers/files'; import { page } from '$app/state'; import { sdk } from '$lib/stores/sdk'; import { invalidate } from '$app/navigation'; @@ -36,6 +36,17 @@ } } + function handleInvalid(e: CustomEvent) { + const reason = e.detail.reason; + if (reason === InvalidFileType.EXTENSION) { + error = 'Only .txt files allowed'; + } else if (reason === InvalidFileType.SIZE) { + error = 'File size exceeds 5MB'; + } else { + error = 'Invalid file'; + } + } + $: filesList = files?.length ? Array.from(files).map((f) => { return { @@ -61,7 +72,12 @@ Upload a .txt file with your DNS records - + Only .txt files allowed - Max file size 10MB + Max file size 5MB diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/manual/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/create-function/manual/+page.svelte index ac9ee95e13..54167235a8 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/create-function/manual/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/manual/+page.svelte @@ -19,7 +19,7 @@ import { IconInfo } from '@appwrite.io/pink-icons-svelte'; import Configuration from './configuration.svelte'; import { getIconFromRuntime } from '$lib/stores/runtimes'; - import { removeFile } from '$lib/helpers/files'; + import { InvalidFileType, removeFile } from '$lib/helpers/files'; export let data; @@ -122,6 +122,26 @@ } } + function handleInvalid(e: CustomEvent) { + const reason = e.detail.reason; + if (reason === InvalidFileType.EXTENSION) { + addNotification({ + type: 'error', + message: 'Only .tar.gz files allowed' + }); + } else if (reason === InvalidFileType.SIZE) { + addNotification({ + type: 'error', + message: 'File size exceeds 10MB' + }); + } else { + addNotification({ + type: 'error', + message: 'Invalid file' + }); + } + } + $: filesList = files?.length ? Array.from(files).map((f) => { return { @@ -157,7 +177,8 @@ title="Upload function" extensions={['gz', 'tar']} maxSize={10000000} - required> + required + on:invalid={handleInvalid}> { return { @@ -55,7 +66,12 @@ Upload a tar.gz file containing your function source code - + ; @@ -55,6 +56,22 @@ image: input.popoverImage }; } + + function handleInvalid(e: CustomEvent) { + const reason = e.detail.reason; + + if (reason === InvalidFileType.EXTENSION) { + addNotification({ + type: 'error', + message: 'Only .json files allowed' + }); + } else { + addNotification({ + type: 'error', + message: 'Invalid file' + }); + } + } {#if input.type === 'text'} @@ -104,6 +121,7 @@ {:else if input.type === 'file'} diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte index e6072d0a39..201709a24a 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte @@ -19,7 +19,7 @@ import { organization } from '$lib/stores/organization'; import { consoleVariables } from '$routes/(console)/store'; import { IconInfo } from '@appwrite.io/pink-icons-svelte'; - import { removeFile } from '$lib/helpers/files'; + import { InvalidFileType, removeFile } from '$lib/helpers/files'; export let data; let showExitModal = false; @@ -116,6 +116,26 @@ } } + function handleInvalid(e: CustomEvent) { + const reason = e.detail.reason; + if (reason === InvalidFileType.EXTENSION) { + addNotification({ + type: 'error', + message: 'Only .tar.gz files allowed' + }); + } else if (reason === InvalidFileType.SIZE) { + addNotification({ + type: 'error', + message: 'File size exceeds 10MB' + }); + } else { + addNotification({ + type: 'error', + message: 'Invalid file' + }); + } + } + $: filesList = files?.length ? Array.from(files).map((f) => { return { @@ -144,7 +164,12 @@ Upload a tar.gz containing your site source code - + Upload a tar.gz file containing your site source code - + + extensions={data.bucket.allowedFileExtensions} + on:invalid={handleInvalid}> Drag and drop files here or click to upload