diff --git a/src/routes/console/project-[project]/functions/createVariable.svelte b/src/routes/console/project-[project]/functions/createVariable.svelte
index 2654e31c6..0fa4a6706 100644
--- a/src/routes/console/project-[project]/functions/createVariable.svelte
+++ b/src/routes/console/project-[project]/functions/createVariable.svelte
@@ -16,14 +16,19 @@
const dispatch = createEventDispatcher();
- const handleVariable = () => {
+ function close() {
+ showCreate = false;
+ selectedVar = null;
+ }
+
+ function handleVariable() {
if (selectedVar) {
dispatch('updated', pair);
} else {
dispatch('created', pair);
}
- showCreate = false;
- };
+ close();
+ }
@@ -48,7 +53,7 @@
required />
-
+
diff --git a/src/routes/console/project-[project]/functions/function-[function]/create.svelte b/src/routes/console/project-[project]/functions/function-[function]/create.svelte
index 14373c646..c8e2f9e08 100644
--- a/src/routes/console/project-[project]/functions/function-[function]/create.svelte
+++ b/src/routes/console/project-[project]/functions/function-[function]/create.svelte
@@ -97,7 +97,7 @@
files = entrypoint = active = null;
showCreate = false;
dispatch('created');
- trackEvent('submit_function_create');
+ trackEvent('submit_deployment_create');
} catch (error) {
addNotification({
type: 'error',
diff --git a/src/routes/console/project-[project]/functions/function-[function]/settings/+page.svelte b/src/routes/console/project-[project]/functions/function-[function]/settings/+page.svelte
index 28ead1b22..9313c97a0 100644
--- a/src/routes/console/project-[project]/functions/function-[function]/settings/+page.svelte
+++ b/src/routes/console/project-[project]/functions/function-[function]/settings/+page.svelte
@@ -62,7 +62,15 @@
async function updateName() {
try {
- await sdkForProject.functions.update(functionId, functionName, $func.execute);
+ await sdkForProject.functions.update(
+ functionId,
+ functionName,
+ $func.execute,
+ $func.events,
+ $func.schedule,
+ $func.timeout,
+ $func.enabled
+ );
invalidate(Dependencies.FUNCTION);
addNotification({
message: 'Name has been updated',
@@ -79,7 +87,15 @@
async function updatePermissions() {
try {
- await sdkForProject.functions.update(functionId, $func.name, permissions);
+ await sdkForProject.functions.update(
+ functionId,
+ $func.name,
+ permissions,
+ $func.events,
+ $func.schedule,
+ $func.timeout,
+ $func.enabled
+ );
invalidate(Dependencies.FUNCTION);
addNotification({
message: 'Permissions have been updated',
@@ -100,7 +116,10 @@
functionId,
$func.name,
$func.execute,
- Array.from($eventSet)
+ Array.from($eventSet),
+ $func.schedule,
+ $func.timeout,
+ $func.enabled
);
invalidate(Dependencies.FUNCTION);
addNotification({
@@ -124,7 +143,8 @@
$func.execute,
$func.events,
functionSchedule,
- timeout
+ $func.timeout,
+ $func.enabled
);
invalidate(Dependencies.FUNCTION);
@@ -149,9 +169,11 @@
$func.execute,
$func.events,
$func.schedule,
- timeout
+ timeout,
+ $func.enabled
);
+ invalidate(Dependencies.FUNCTION);
addNotification({
type: 'success',
message: 'Timeout has been updated'
@@ -570,10 +592,12 @@
-
+{#if showVariablesModal}
+
+{/if}
diff --git a/src/routes/console/project-[project]/functions/function-[function]/store.ts b/src/routes/console/project-[project]/functions/function-[function]/store.ts
index 726e6cd0e..0dd72124b 100644
--- a/src/routes/console/project-[project]/functions/function-[function]/store.ts
+++ b/src/routes/console/project-[project]/functions/function-[function]/store.ts
@@ -2,5 +2,5 @@ import { page } from '$app/stores';
import { derived, writable, type Writable } from 'svelte/store';
import type { Models } from '@aw-labs/appwrite-console';
-export const func = derived(page, ($page) => $page.data.function);
+export const func = derived(page, ($page) => $page.data.function as Models.Function);
export const execute: Writable
= writable();
diff --git a/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte b/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte
index 70d32ee50..ff3f5b24b 100644
--- a/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte
+++ b/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte
@@ -13,6 +13,7 @@
import { key } from './store';
import Scopes from '../scopes.svelte';
import Delete from './delete.svelte';
+ import { trackEvent } from '$lib/actions/analytics';
let showDelete = false;
let name: string = null;
@@ -37,6 +38,7 @@
$key.expire
);
invalidate(Dependencies.KEY);
+ trackEvent('submit_key_update_name');
addNotification({
type: 'success',
message: 'API Key name has been updated'
@@ -59,6 +61,7 @@
expire
);
invalidate(Dependencies.KEY);
+ trackEvent('submit_key_update_expire');
addNotification({
type: 'success',
message: 'API Key expiration has been updated'
@@ -73,8 +76,15 @@
async function updateScopes() {
try {
- await sdkForConsole.projects.updateKey($project.$id, $key.$id, $key.name, scopes);
+ await sdkForConsole.projects.updateKey(
+ $project.$id,
+ $key.$id,
+ $key.name,
+ scopes,
+ $key.expire
+ );
invalidate(Dependencies.KEY);
+ trackEvent('submit_key_update_scopes');
addNotification({
type: 'success',
message: 'API Key scopes has been updated'
diff --git a/src/routes/console/project-[project]/overview/keys/wizard.svelte b/src/routes/console/project-[project]/overview/keys/wizard.svelte
index 9217ccd88..e302d0b74 100644
--- a/src/routes/console/project-[project]/overview/keys/wizard.svelte
+++ b/src/routes/console/project-[project]/overview/keys/wizard.svelte
@@ -12,6 +12,7 @@
import { onDestroy } from 'svelte';
import { onboarding } from '../../store';
import { Dependencies } from '$lib/constants';
+ import { trackEvent } from '$lib/actions/analytics';
async function onFinish() {
try {
@@ -24,6 +25,7 @@
if ($onboarding) {
invalidate(Dependencies.PROJECT);
}
+ trackEvent('submit_key_create');
goto(`/console/project-${$page.params.project}/overview/keys/${$id}`);
} catch (error) {
addNotification({
diff --git a/src/routes/console/project-[project]/overview/platforms/[platform]/+page@project-[project].svelte b/src/routes/console/project-[project]/overview/platforms/[platform]/+page@project-[project].svelte
index baec0ded4..b66a71d9e 100644
--- a/src/routes/console/project-[project]/overview/platforms/[platform]/+page@project-[project].svelte
+++ b/src/routes/console/project-[project]/overview/platforms/[platform]/+page@project-[project].svelte
@@ -48,7 +48,14 @@
const updateName = async () => {
try {
- await sdkForConsole.projects.updatePlatform($project.$id, data.platform.$id, name);
+ await sdkForConsole.projects.updatePlatform(
+ $project.$id,
+ data.platform.$id,
+ name,
+ data.platform.key,
+ data.platform.store,
+ data.platform.hostname
+ );
invalidate(Dependencies.PLATFORM);
addNotification({
type: 'success',
diff --git a/src/routes/console/project-[project]/overview/platforms/[platform]/android.svelte b/src/routes/console/project-[project]/overview/platforms/[platform]/android.svelte
index de95db47c..fa23169a1 100644
--- a/src/routes/console/project-[project]/overview/platforms/[platform]/android.svelte
+++ b/src/routes/console/project-[project]/overview/platforms/[platform]/android.svelte
@@ -1,5 +1,6 @@
`; // Prevent svelte from processing the closing script tag
diff --git a/src/routes/console/project-[project]/overview/platforms/wizard/web/step3.svelte b/src/routes/console/project-[project]/overview/platforms/wizard/web/step3.svelte
index e13329c53..c9685da2e 100644
--- a/src/routes/console/project-[project]/overview/platforms/wizard/web/step3.svelte
+++ b/src/routes/console/project-[project]/overview/platforms/wizard/web/step3.svelte
@@ -4,9 +4,9 @@
import { sdkForProject } from '$lib/stores/sdk';
const { endpoint, project } = sdkForProject.client.config;
- const code = `const appwrite = new Appwrite();
+ const code = `const client = new Client();
-appwrite
+client
.setEndpoint('${endpoint}')
.setProject('${project}');`;
diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte
index 3a3383fa1..ab3bd3c63 100644
--- a/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte
+++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte
@@ -1,346 +1,18 @@
-
- Signature Key
-
- Add the Signature Key to the X-Appwrite-Webhook-Signature header to validate your
- webhooks. Learn more about webhook validation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Delete Webhook
-
- The webhook will be permanently deleted. This action is irreversible.
-
-
-
- {$webhook.name}
-
- Last updated: {toLocaleDateTime($webhook.$updatedAt)}
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/dangerZone.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/dangerZone.svelte
new file mode 100644
index 000000000..c531b91a4
--- /dev/null
+++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/dangerZone.svelte
@@ -0,0 +1,30 @@
+
+
+
+
+ Delete Webhook
+
+ The webhook will be permanently deleted. This action is irreversible.
+
+
+
+ {$webhook.name}
+
+ Last updated: {toLocaleDateTime($webhook.$updatedAt)}
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateEvents.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateEvents.svelte
new file mode 100644
index 000000000..919d21402
--- /dev/null
+++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateEvents.svelte
@@ -0,0 +1,109 @@
+
+
+
+
+
diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateName.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateName.svelte
new file mode 100644
index 000000000..1d4fcd0cf
--- /dev/null
+++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateName.svelte
@@ -0,0 +1,66 @@
+
+
+
diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateSecurity.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateSecurity.svelte
new file mode 100644
index 000000000..dc1d1d8ce
--- /dev/null
+++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateSecurity.svelte
@@ -0,0 +1,110 @@
+
+
+
diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateSignature.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateSignature.svelte
new file mode 100644
index 000000000..7f65c7677
--- /dev/null
+++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateSignature.svelte
@@ -0,0 +1,30 @@
+
+
+
+ Signature Key
+
+ Add the Signature Key to the X-Appwrite-Webhook-Signature header to validate your webhooks. Learn more about webhook validation.
+
+
+
+
+
+
+
+
+
+
diff --git a/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateURL.svelte b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateURL.svelte
new file mode 100644
index 000000000..ff775045d
--- /dev/null
+++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/updateURL.svelte
@@ -0,0 +1,66 @@
+
+
+
diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/[[page]]/+page.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/[[page]]/+page.svelte
index 600677d32..0592ac359 100644
--- a/src/routes/console/project-[project]/storage/bucket-[bucket]/[[page]]/+page.svelte
+++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/[[page]]/+page.svelte
@@ -162,11 +162,15 @@
{
+ showDropdown[index] = false;
+ }}
href={`${base}/console/project-${projectId}/storage/bucket-${bucketId}/file-${file.$id}`}
icon="pencil">Update
{
+ showDropdown[index] = false;
selectedFile = file;
showDelete = true;
}}>Delete
diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/create.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/create.svelte
index 5570b62f1..da6046ee3 100644
--- a/src/routes/console/project-[project]/storage/bucket-[bucket]/create.svelte
+++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/create.svelte
@@ -2,7 +2,6 @@
import { Button, FormList, InputFile } from '$lib/elements/forms';
import { Pill } from '$lib/elements';
import { Modal, CustomId, Heading, Alert } from '$lib/components';
- import { sdkForProject } from '$lib/stores/sdk';
import { createEventDispatcher } from 'svelte';
import { page } from '$app/stores';
import { uploader } from '$lib/stores/uploader';
@@ -25,20 +24,15 @@
async function create() {
try {
- const file = await sdkForProject.storage.createFile(
- bucketId,
- id ?? 'unique()',
- files[0],
- permissions
- );
- files = null;
showCreate = false;
+ await uploader.uploadFile(bucketId, id, files[0], permissions);
+ files = null;
showCustomId = false;
- uploader.addFile(file);
+ // uploader.addFile(file);
dispatch('created');
addNotification({
type: 'success',
- message: `${file.name} has been created`
+ message: `File has been uploaded`
});
trackEvent('submit_file_create');
} catch ({ message }) {
@@ -74,8 +68,11 @@
Update Permissions
Choose who can access your buckets and files. For more information, check out the
- Permissions Guide in our documentation.
+ Permissions Guide in our documentation.
{#if $bucket.fileSecurity}
diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/settings/+page.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/settings/+page.svelte
index 8e611b5fc..5d1aa0c48 100644
--- a/src/routes/console/project-[project]/storage/bucket-[bucket]/settings/+page.svelte
+++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/settings/+page.svelte
@@ -24,6 +24,8 @@
import { Dependencies } from '$lib/constants';
import Delete from '../deleteBucket.svelte';
import { trackEvent } from '$lib/actions/analytics';
+ import { writable } from 'svelte/store';
+ import type { Models } from '@aw-labs/appwrite-console';
let showDelete = false;
@@ -34,14 +36,21 @@
arePermsDisabled = true,
encryption: boolean = null,
antivirus: boolean = null,
- maxSize: number;
- let byteUnit: 'Bytes' | 'KB' | 'MB' | 'GB' = 'MB',
- options = [
- { label: 'Bytes', value: 'Bytes' },
- { label: 'Kilobytes', value: 'KB' },
- { label: 'Megabytes', value: 'MB' },
- { label: 'Gigabytes', value: 'GB' }
- ];
+ maxSize: number,
+ compression: string = null;
+ let byteUnit = writable('MB');
+ let sizeInBytes: number = null;
+ const options = [
+ { label: 'Bytes', value: 'Bytes' },
+ { label: 'Kilobytes', value: 'KB' },
+ { label: 'Megabytes', value: 'MB' },
+ { label: 'Gigabytes', value: 'GB' }
+ ];
+ const compressionOptions = [
+ { label: 'None', value: 'none' },
+ { label: 'Gzip', value: 'gzip' },
+ { label: 'Zstd', value: 'zstd' }
+ ];
let suggestedExtensions = ['jpg', 'png', 'svg', 'gif', 'html', 'pdf', 'mp4'];
let extensions = $bucket.allowedFileExtensions;
let isExtensionsDisabled = true;
@@ -54,7 +63,10 @@
bucketPermissions ??= $bucket.$permissions;
encryption ??= $bucket.encryption;
antivirus ??= $bucket.antivirus;
+ maxSize = $bucket.maximumFileSize / 1024 / 1024;
+ compression ??= $bucket.compression;
});
+
$: if (bucketPermissions) {
if (symmetricDifference(bucketPermissions, $bucket.$permissions).length) {
arePermsDisabled = false;
@@ -66,78 +78,44 @@
} else isExtensionsDisabled = true;
}
- async function toggleBucket() {
+ type TUpdateBucketMisc = {
+ successMessage?: string;
+ trackEventName: string;
+ trackEventData?: { value: boolean };
+ arePermsDisabled?: boolean;
+ };
+
+ async function updateBucket(updates: Partial
, misc: TUpdateBucketMisc) {
+ const values = { ...$bucket, ...updates };
+
try {
await sdkForProject.storage.updateBucket(
- $bucket.$id,
- $bucket.name,
- undefined,
- undefined,
- enabled
+ values.$id,
+ values.name,
+ values.$permissions,
+ values.fileSecurity,
+ values.enabled,
+ values.maximumFileSize,
+ values.allowedFileExtensions,
+ values.compression,
+ values.encryption,
+ values.antivirus
);
+
invalidate(Dependencies.BUCKET);
+
+ if (misc.arePermsDisabled !== undefined) {
+ arePermsDisabled = misc.arePermsDisabled;
+ }
+
addNotification({
- message: `${$bucket.name} has been updated`,
+ message: misc.successMessage ?? `${$bucket.name} has been updated`,
type: 'success'
});
- trackEvent('submit_bucket_enable', {
- value: enabled
- });
- } catch (error) {
- addNotification({
- message: error.message,
- type: 'error'
- });
- }
- }
- async function updateName() {
- try {
- await sdkForProject.storage.updateBucket($bucket.$id, bucketName);
- invalidate(Dependencies.BUCKET);
- addNotification({
- message: 'Name has been updated',
- type: 'success'
- });
- trackEvent('submit_bucket_update_name');
- } catch (error) {
- addNotification({
- message: error.message,
- type: 'error'
- });
- }
- }
- async function updatePermissions() {
- try {
- await sdkForProject.storage.updateBucket($bucket.$id, $bucket.name, bucketPermissions);
- invalidate(Dependencies.BUCKET);
- arePermsDisabled = true;
- addNotification({
- message: 'Permissions have been updated',
- type: 'success'
- });
- trackEvent('submit_bucket_update_permissions');
- } catch (error) {
- addNotification({
- message: error.message,
- type: 'error'
- });
- }
- }
- async function updateFileSecurity() {
- try {
- await sdkForProject.storage.updateBucket(
- $bucket.$id,
- $bucket.name,
- $bucket.$permissions,
- bucketFileSecurity
- );
- invalidate(Dependencies.BUCKET);
- arePermsDisabled = true;
- addNotification({
- message: 'Security has been updated',
- type: 'success'
- });
- trackEvent('submit_bucket_update_file_security');
+
+ if (misc.trackEventName) {
+ trackEvent(misc.trackEventName, misc.trackEventData);
+ }
} catch (error) {
addNotification({
message: error.message,
@@ -146,81 +124,118 @@
}
}
- async function updateSecurity() {
- try {
- await sdkForProject.storage.updateBucket(
- $bucket.$id,
- $bucket.name,
- undefined,
- undefined,
- undefined,
- undefined,
- undefined,
- undefined,
+ function toggleBucket() {
+ updateBucket(
+ {
+ enabled
+ },
+ {
+ trackEventName: 'submit_bucket_enable',
+ trackEventData: {
+ value: enabled
+ }
+ }
+ );
+ }
+
+ function updateName() {
+ updateBucket(
+ {
+ name: bucketName
+ },
+ {
+ successMessage: 'Name has been updated',
+ trackEventName: 'submit_bucket_update_name'
+ }
+ );
+ }
+
+ function updatePermissions() {
+ updateBucket(
+ {
+ $permissions: bucketPermissions
+ },
+ {
+ successMessage: 'Permissions have been updated',
+ trackEventName: 'submit_bucket_update_permissions',
+ arePermsDisabled: true
+ }
+ );
+ }
+
+ function updateFileSecurity() {
+ updateBucket(
+ {
+ fileSecurity: bucketFileSecurity
+ },
+ {
+ successMessage: 'Security has been updated',
+ trackEventName: 'submit_bucket_update_file_security',
+ arePermsDisabled: true
+ }
+ );
+ }
+
+ function updateSecurity() {
+ updateBucket(
+ {
encryption,
antivirus
- );
- invalidate(Dependencies.BUCKET);
- addNotification({
- message: `${$bucket.name} has been updated`,
- type: 'success'
- });
- trackEvent('submit_bucket_update_security');
- } catch (error) {
- addNotification({
- message: error.message,
- type: 'error'
- });
- }
- }
- async function updateMaxSize() {
- let size = sizeToBytes(maxSize, byteUnit);
- try {
- await sdkForProject.storage.updateBucket(
- $bucket.$id,
- $bucket.name,
- undefined,
- undefined,
- undefined,
- size
- );
- invalidate(Dependencies.BUCKET);
- addNotification({
- message: `${$bucket.name} has been updated`,
- type: 'success'
- });
- trackEvent('submit_bucket_update_size');
- } catch (error) {
- addNotification({
- message: error.message,
- type: 'error'
- });
- }
+ },
+ {
+ trackEventName: 'submit_bucket_update_security'
+ }
+ );
}
- async function updateAllowedExtensions() {
- try {
- await sdkForProject.storage.updateBucket(
- $bucket.$id,
- $bucket.name,
- undefined,
- undefined,
- undefined,
- undefined,
- extensions
- );
- invalidate(Dependencies.BUCKET);
- addNotification({
- message: `${$bucket.name} has been updated`,
- type: 'success'
- });
- trackEvent('submit_bucket_update_extensions');
- } catch (error) {
- addNotification({
- message: error.message,
- type: 'error'
- });
+ function updateMaxSize() {
+ const size = sizeToBytes(maxSize, $byteUnit);
+ updateBucket(
+ {
+ maximumFileSize: size
+ },
+ {
+ trackEventName: 'submit_bucket_update_size'
+ }
+ );
+ }
+
+ function updateCompression() {
+ updateBucket(
+ {
+ compression
+ },
+ {
+ trackEventName: 'submit_bucket_update_size'
+ }
+ );
+ }
+
+ function updateAllowedExtensions() {
+ updateBucket(
+ {
+ allowedFileExtensions: extensions
+ },
+ {
+ trackEventName: 'submit_bucket_update_extensions'
+ }
+ );
+ }
+
+ byteUnit.subscribe((b) => {
+ if (b === 'Bytes') {
+ maxSize = sizeInBytes;
+ } else if (b === 'KB') {
+ maxSize = sizeInBytes / 1024;
+ } else if (b === 'MB') {
+ maxSize = sizeInBytes / 1024 / 1024;
+ } else if (b === 'GB') {
+ maxSize = sizeInBytes / 1024 / 1024 / 1024;
}
+ });
+
+ $: if (maxSize) {
+ sizeInBytes = sizeToBytes(maxSize, $byteUnit);
}
@@ -238,8 +253,8 @@
id="toggle"
bind:value={enabled} />
- Created: {toLocaleDateTime($bucket.$createdAt)}
- Last Updated: {toLocaleDateTime($bucket.$updatedAt)}
+ Created: {toLocaleDateTime($bucket.$createdAt)}
+ Last Updated: {toLocaleDateTime($bucket.$updatedAt)}
@@ -279,7 +294,8 @@
the Permissions Guide in our documentation.
+ rel="noopener noreferrer"
+ class="link">Permissions Guide in our documentation.
{#if bucketPermissions}
@@ -323,7 +339,7 @@
+
+
+
+
@@ -392,20 +433,22 @@
@@ -413,7 +456,7 @@