From 7cbe322eb8cd7d4a71661c660573505c3f50bf73 Mon Sep 17 00:00:00 2001 From: rrosluk Date: Tue, 22 Nov 2022 11:00:03 +0100 Subject: [PATCH 1/2] Update storage settings fix Fixes https://github.com/appwrite/appwrite/issues/4746 --- .../bucket-[bucket]/settings/+page.svelte | 275 +++++++++--------- 1 file changed, 141 insertions(+), 134 deletions(-) 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 4eff191a34..ef9713da71 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 @@ -69,78 +69,72 @@ } else isExtensionsDisabled = true; } - async function toggleBucket() { - try { - await sdkForProject.storage.updateBucket( - $bucket.$id, - $bucket.name, - undefined, - undefined, - enabled - ); - invalidate(Dependencies.BUCKET); - addNotification({ - message: `${$bucket.name} has been updated`, - type: 'success' - }); - trackEvent('submit_bucket_enable', { - value: enabled - }); - } catch (error) { - addNotification({ - message: error.message, - type: 'error' - }); - } + interface IUpdateBucket { + id: string; + name: string; + permissions?: string[]; + fileSecurity?: boolean; + enabled?: boolean; + maximumFileSize?: number; + allowedFileExtensions?: string[]; + compression?: string; + encryption?: boolean; + antivirus?: boolean; } - 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' - }); - } + + interface IUpdateBucketMisc { + successMessage?: string; + trackEventName: string; + trackEventData?: { value: boolean }; + arePermsDisabled?: boolean; } - 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' - }); - } + + function getDefaults(): IUpdateBucket { + return { + id: $bucket.$id, + name: $bucket.name, + permissions: $bucket.$permissions, + fileSecurity: $bucket.fileSecurity, + enabled: $bucket.enabled, + maximumFileSize: $bucket.maximumFileSize, + allowedFileExtensions: $bucket.allowedFileExtensions, + compression: $bucket.compression, + encryption: $bucket.encryption, + antivirus: $bucket.antivirus + }; } - async function updateFileSecurity() { + + async function updateBucket(updates: Partial, misc: IUpdateBucketMisc) { + const values: IUpdateBucket = { ...getDefaults(), ...updates }; + try { await sdkForProject.storage.updateBucket( - $bucket.$id, - $bucket.name, - $bucket.$permissions, - bucketFileSecurity + values.id, + values.name, + values.permissions, + values.fileSecurity, + values.enabled, + values.maximumFileSize, + values.allowedFileExtensions, + values.compression, + values.encryption, + values.antivirus ); + invalidate(Dependencies.BUCKET); - arePermsDisabled = true; + + if (misc.arePermsDisabled !== undefined) { + arePermsDisabled = misc.arePermsDisabled; + } + addNotification({ - message: 'Security has been updated', + message: misc.successMessage ?? `${$bucket.name} 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, @@ -149,81 +143,91 @@ } } - 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' - }); - } + }, + { + trackEventName: 'submit_bucket_update_security' + } + ); } - 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' - }); - } + + function updateMaxSize() { + const size = sizeToBytes(maxSize, $byteUnit); + updateBucket( + { + maximumFileSize: size + }, + { + trackEventName: 'submit_bucket_update_size' + } + ); } - 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 updateAllowedExtensions() { + updateBucket( + { + allowedFileExtensions: extensions + }, + { + trackEventName: 'submit_bucket_update_extensions' + } + ); } byteUnit.subscribe((b) => { @@ -403,7 +407,9 @@ + submit + >Update + @@ -425,7 +431,8 @@ + >Update + From fe6c55fd798b22fdffb78350f53ea9ba52e76afb Mon Sep 17 00:00:00 2001 From: rrosluk Date: Tue, 22 Nov 2022 19:14:02 +0100 Subject: [PATCH 2/2] PR Remarks updates --- .../bucket-[bucket]/settings/+page.svelte | 43 ++++--------------- 1 file changed, 8 insertions(+), 35 deletions(-) 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 ef9713da71..2e443edf50 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 @@ -25,6 +25,7 @@ import Delete from '../deleteBucket.svelte'; import { trackEvent } from '$lib/actions/analytics'; import { writable } from 'svelte/store'; + import { Models } from '@aw-labs/appwrite-console'; let showDelete = false; @@ -69,49 +70,21 @@ } else isExtensionsDisabled = true; } - interface IUpdateBucket { - id: string; - name: string; - permissions?: string[]; - fileSecurity?: boolean; - enabled?: boolean; - maximumFileSize?: number; - allowedFileExtensions?: string[]; - compression?: string; - encryption?: boolean; - antivirus?: boolean; - } - - interface IUpdateBucketMisc { + type TUpdateBucketMisc = { successMessage?: string; trackEventName: string; trackEventData?: { value: boolean }; arePermsDisabled?: boolean; - } - - function getDefaults(): IUpdateBucket { - return { - id: $bucket.$id, - name: $bucket.name, - permissions: $bucket.$permissions, - fileSecurity: $bucket.fileSecurity, - enabled: $bucket.enabled, - maximumFileSize: $bucket.maximumFileSize, - allowedFileExtensions: $bucket.allowedFileExtensions, - compression: $bucket.compression, - encryption: $bucket.encryption, - antivirus: $bucket.antivirus - }; - } + }; - async function updateBucket(updates: Partial, misc: IUpdateBucketMisc) { - const values: IUpdateBucket = { ...getDefaults(), ...updates }; + async function updateBucket(updates: Partial, misc: TUpdateBucketMisc) { + const values = { ...$bucket, ...updates }; try { await sdkForProject.storage.updateBucket( - values.id, + values.$id, values.name, - values.permissions, + values.$permissions, values.fileSecurity, values.enabled, values.maximumFileSize, @@ -172,7 +145,7 @@ function updatePermissions() { updateBucket( { - permissions: bucketPermissions + $permissions: bucketPermissions }, { successMessage: 'Permissions have been updated',