From 3764366f3311e89881ccebed029a773eef6ee2bd Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 16 Nov 2022 13:50:28 +0100 Subject: [PATCH 01/38] unbundle settings --- .../auth/user-[user]/+page.svelte | 508 +----------------- .../auth/user-[user]/dangerZone.svelte | 53 ++ .../auth/user-[user]/updateEmail.svelte | 53 ++ .../auth/user-[user]/updateName.svelte | 54 ++ .../auth/user-[user]/updatePassword.svelte | 55 ++ .../auth/user-[user]/updatePhone.svelte | 53 ++ .../auth/user-[user]/updatePrefs.svelte | 129 +++++ .../auth/user-[user]/updateStatus.svelte | 157 ++++++ 8 files changed, 568 insertions(+), 494 deletions(-) create mode 100644 src/routes/console/project-[project]/auth/user-[user]/dangerZone.svelte create mode 100644 src/routes/console/project-[project]/auth/user-[user]/updateEmail.svelte create mode 100644 src/routes/console/project-[project]/auth/user-[user]/updateName.svelte create mode 100644 src/routes/console/project-[project]/auth/user-[user]/updatePassword.svelte create mode 100644 src/routes/console/project-[project]/auth/user-[user]/updatePhone.svelte create mode 100644 src/routes/console/project-[project]/auth/user-[user]/updatePrefs.svelte create mode 100644 src/routes/console/project-[project]/auth/user-[user]/updateStatus.svelte diff --git a/src/routes/console/project-[project]/auth/user-[user]/+page.svelte b/src/routes/console/project-[project]/auth/user-[user]/+page.svelte index eabcc4125..b48becb71 100644 --- a/src/routes/console/project-[project]/auth/user-[user]/+page.svelte +++ b/src/routes/console/project-[project]/auth/user-[user]/+page.svelte @@ -1,500 +1,20 @@ - -
- {#if $user.email || $user.phone} - {#if $user.name} - - {$user.name} - {:else} -
-
- {/if} - {:else} -
-
- {/if} -
- -
-
- {#if $user.email} -

{$user.email}

- {/if} - {#if $user.phone} -

{$user.phone}

- {/if} -

Joined: {toLocaleDateTime($user.registration)}

-
- {#if !$user.status} - blocked - {:else if $user.email && $user.phone} - - {$user.emailVerification && $user.phoneVerification - ? 'verified' - : $user.emailVerification - ? 'verified email' - : $user.phoneVerification - ? 'verified phone' - : 'unverified'} - - {:else} - - {$user.emailVerification - ? 'verified ' - : $user.phoneVerification - ? 'verified ' - : 'unverified'} - - {/if} -
-
- - - - {#if $user.status} - {#if $user.phone && $user.email} - - - - updateVerificationEmail()}> - {$user.emailVerification ? 'Unverify' : 'Verify'} email - - updateVerificationPhone()}> - {$user.phoneVerification ? 'Unverify' : 'Verify'} phone - - - - {:else if $user.email} - - {:else if $user.phone} - - {/if} - {/if} - -
- -
- - Update Name - - -
    - -
-
- - - - -
-
- -
- - Update Email - -
    - -
-
- - - - -
-
- -
- - Update Phone - -
    - -
-
- - - - -
-
- -
- -
- Update Password -
- -

- Enter a new password. A password must contain at least 8 characters. -

- -
    - -
-
- - - - -
-
- -
- - User Preferences -

- You can update your user preferences by storing information on the user's objects so - they can easily be shared across devices and sessions. -

- - -
    - {#if prefs} - {#each prefs as [key, value], index} -
  • -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    -
  • - {/each} - {/if} -
- - -
- - - - -
- - - -
- Danger Zone -
-

- The user will be permanently deleted, including all data associated with this user. This - action is irreversible. -

- - - - {#if $user.email || $user.phone} - {#if $user.name} - - {:else} -
-
- {/if} - {:else} -
-
- {/if} -
- -
- {$user.name || $user.email || $user.phone || 'Anonymous'} -
-
-

- {$user.email && $user.phone - ? [$user.email, $user.phone].join(',') - : $user.email || $user.phone} -

-
-
- - - - -
+ + + + + + +
- - diff --git a/src/routes/console/project-[project]/auth/user-[user]/dangerZone.svelte b/src/routes/console/project-[project]/auth/user-[user]/dangerZone.svelte new file mode 100644 index 000000000..207f1badd --- /dev/null +++ b/src/routes/console/project-[project]/auth/user-[user]/dangerZone.svelte @@ -0,0 +1,53 @@ + + + +
+ Danger Zone +
+

+ The user will be permanently deleted, including all data associated with this user. This + action is irreversible. +

+ + + + {#if $user.email || $user.phone} + {#if $user.name} + + {:else} +
+
+ {/if} + {:else} +
+
+ {/if} +
+ +
+ {$user.name || $user.email || $user.phone || 'Anonymous'} +
+
+

+ {$user.email && $user.phone + ? [$user.email, $user.phone].join(',') + : $user.email || $user.phone} +

+
+
+ + + + +
+ + diff --git a/src/routes/console/project-[project]/auth/user-[user]/updateEmail.svelte b/src/routes/console/project-[project]/auth/user-[user]/updateEmail.svelte new file mode 100644 index 000000000..5eecbbbed --- /dev/null +++ b/src/routes/console/project-[project]/auth/user-[user]/updateEmail.svelte @@ -0,0 +1,53 @@ + + +
+ + Update Email + +
    + +
+
+ + + + +
+
diff --git a/src/routes/console/project-[project]/auth/user-[user]/updateName.svelte b/src/routes/console/project-[project]/auth/user-[user]/updateName.svelte new file mode 100644 index 000000000..1b4119579 --- /dev/null +++ b/src/routes/console/project-[project]/auth/user-[user]/updateName.svelte @@ -0,0 +1,54 @@ + + +
+ + Update Name + + +
    + +
+
+ + + + +
+
diff --git a/src/routes/console/project-[project]/auth/user-[user]/updatePassword.svelte b/src/routes/console/project-[project]/auth/user-[user]/updatePassword.svelte new file mode 100644 index 000000000..66116f2c6 --- /dev/null +++ b/src/routes/console/project-[project]/auth/user-[user]/updatePassword.svelte @@ -0,0 +1,55 @@ + + +
+ +
+ Update Password +
+ +

+ Enter a new password. A password must contain at least 8 characters. +

+ +
    + +
+
+ + + + +
+
diff --git a/src/routes/console/project-[project]/auth/user-[user]/updatePhone.svelte b/src/routes/console/project-[project]/auth/user-[user]/updatePhone.svelte new file mode 100644 index 000000000..d77cd778b --- /dev/null +++ b/src/routes/console/project-[project]/auth/user-[user]/updatePhone.svelte @@ -0,0 +1,53 @@ + + +
+ + Update Phone + +
    + +
+
+ + + + +
+
diff --git a/src/routes/console/project-[project]/auth/user-[user]/updatePrefs.svelte b/src/routes/console/project-[project]/auth/user-[user]/updatePrefs.svelte new file mode 100644 index 000000000..c000793bc --- /dev/null +++ b/src/routes/console/project-[project]/auth/user-[user]/updatePrefs.svelte @@ -0,0 +1,129 @@ + + +
+ + User Preferences +

+ You can update your user preferences by storing information on the user's objects so + they can easily be shared across devices and sessions. +

+ + +
    + {#if prefs} + {#each prefs as [key, value], index} +
  • +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    +
  • + {/each} + {/if} +
+ + +
+ + + + +
+ diff --git a/src/routes/console/project-[project]/auth/user-[user]/updateStatus.svelte b/src/routes/console/project-[project]/auth/user-[user]/updateStatus.svelte new file mode 100644 index 000000000..3f40a875d --- /dev/null +++ b/src/routes/console/project-[project]/auth/user-[user]/updateStatus.svelte @@ -0,0 +1,157 @@ + + + +
+ {#if $user.email || $user.phone} + {#if $user.name} + + {$user.name} + {:else} +
+
+ {/if} + {:else} +
+
+ {/if} +
+ +
+
+ {#if $user.email} +

{$user.email}

+ {/if} + {#if $user.phone} +

{$user.phone}

+ {/if} +

Joined: {toLocaleDateTime($user.registration)}

+
+ {#if !$user.status} + blocked + {:else if $user.email && $user.phone} + + {$user.emailVerification && $user.phoneVerification + ? 'verified' + : $user.emailVerification + ? 'verified email' + : $user.phoneVerification + ? 'verified phone' + : 'unverified'} + + {:else} + + {$user.emailVerification + ? 'verified ' + : $user.phoneVerification + ? 'verified ' + : 'unverified'} + + {/if} +
+
+ + + + {#if $user.status} + {#if $user.phone && $user.email} + + + + updateVerificationEmail()}> + {$user.emailVerification ? 'Unverify' : 'Verify'} email + + updateVerificationPhone()}> + {$user.phoneVerification ? 'Unverify' : 'Verify'} phone + + + + {:else if $user.email} + + {:else if $user.phone} + + {/if} + {/if} + +
From 9ed53e37256a28c9e76eddf6c1f7763028b8bbc9 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 17 Nov 2022 10:38:43 +0100 Subject: [PATCH 02/38] feat: file size reactive to unit change --- .../bucket-[bucket]/settings/+page.svelte | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 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 375d546c2..1e1cb719a 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,7 @@ import { Dependencies } from '$lib/constants'; import Delete from '../deleteBucket.svelte'; import { trackEvent } from '$lib/actions/analytics'; + import { writable } from 'svelte/store'; let showDelete = false; @@ -35,13 +36,14 @@ 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' } - ]; + let byteUnit = writable('KB'); + let sizeInBytes: number = null; + const options = [ + { label: 'Bytes', value: 'Bytes' }, + { label: 'Kilobytes', value: 'KB' }, + { label: 'Megabytes', value: 'MB' }, + { label: 'Gigabytes', value: 'GB' } + ]; let suggestedExtensions = ['jpg', 'png', 'svg', 'gif', 'html', 'pdf', 'mp4']; let extensions = $bucket.allowedFileExtensions; let isExtensionsDisabled = true; @@ -54,6 +56,7 @@ bucketPermissions ??= $bucket.$permissions; encryption ??= $bucket.encryption; antivirus ??= $bucket.antivirus; + maxSize = $bucket.maximumFileSize / 1024; }); $: if (bucketPermissions) { if (symmetricDifference(bucketPermissions, $bucket.$permissions).length) { @@ -174,7 +177,7 @@ } } async function updateMaxSize() { - let size = sizeToBytes(maxSize, byteUnit); + let size = sizeToBytes(maxSize, $byteUnit); try { await sdkForProject.storage.updateBucket( $bucket.$id, @@ -222,6 +225,22 @@ }); } } + + 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); + } @@ -398,14 +417,15 @@ - + - + From ce1b1e00c9e420bd74a10cd457d8ba0002fd29d5 Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 18 Nov 2022 15:01:08 +0100 Subject: [PATCH 03/38] feat: dropdown closes on click --- src/routes/console/organization-[organization]/header.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/routes/console/organization-[organization]/header.svelte b/src/routes/console/organization-[organization]/header.svelte index db23f01ff..2c5cd65a4 100644 --- a/src/routes/console/organization-[organization]/header.svelte +++ b/src/routes/console/organization-[organization]/header.svelte @@ -55,7 +55,9 @@ {#each $organizationList.teams as org} - + (showDropdown = false)}> {org.name} {/each} From bb4d13ac54db9cc525f7b7b311dd03c96405a61d Mon Sep 17 00:00:00 2001 From: Arman Date: Fri, 18 Nov 2022 15:01:43 +0100 Subject: [PATCH 04/38] fix: correct path in oauth --- src/routes/console/project-[project]/auth/appleOAuth.svelte | 2 +- src/routes/console/project-[project]/auth/auth0OAuth.svelte | 2 +- src/routes/console/project-[project]/auth/mainOAuth.svelte | 2 +- src/routes/console/project-[project]/auth/microsoftOAuth.svelte | 2 +- src/routes/console/project-[project]/auth/oktaOAuth.svelte | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/routes/console/project-[project]/auth/appleOAuth.svelte b/src/routes/console/project-[project]/auth/appleOAuth.svelte index 7867e4be9..5268a354c 100644 --- a/src/routes/console/project-[project]/auth/appleOAuth.svelte +++ b/src/routes/console/project-[project]/auth/appleOAuth.svelte @@ -84,7 +84,7 @@ + }/account/sessions/oauth2/callback/${provider.name.toLocaleLowerCase()}/${projectId}`} /> diff --git a/src/routes/console/project-[project]/auth/auth0OAuth.svelte b/src/routes/console/project-[project]/auth/auth0OAuth.svelte index 13e77ec43..a6d25ec4e 100644 --- a/src/routes/console/project-[project]/auth/auth0OAuth.svelte +++ b/src/routes/console/project-[project]/auth/auth0OAuth.svelte @@ -93,7 +93,7 @@ + }/account/sessions/oauth2/callback/${provider.name.toLocaleLowerCase()}/${projectId}`} /> diff --git a/src/routes/console/project-[project]/auth/mainOAuth.svelte b/src/routes/console/project-[project]/auth/mainOAuth.svelte index 43efe29dd..b3be6f62a 100644 --- a/src/routes/console/project-[project]/auth/mainOAuth.svelte +++ b/src/routes/console/project-[project]/auth/mainOAuth.svelte @@ -84,7 +84,7 @@ + }/account/sessions/oauth2/callback/${provider.name.toLocaleLowerCase()}/${projectId}`} /> diff --git a/src/routes/console/project-[project]/auth/microsoftOAuth.svelte b/src/routes/console/project-[project]/auth/microsoftOAuth.svelte index caeffe743..fc0b38d0a 100644 --- a/src/routes/console/project-[project]/auth/microsoftOAuth.svelte +++ b/src/routes/console/project-[project]/auth/microsoftOAuth.svelte @@ -93,7 +93,7 @@ + }/account/sessions/oauth2/callback/${provider.name.toLocaleLowerCase()}/${projectId}`} /> diff --git a/src/routes/console/project-[project]/auth/oktaOAuth.svelte b/src/routes/console/project-[project]/auth/oktaOAuth.svelte index c8ff2593a..ae37ccfff 100644 --- a/src/routes/console/project-[project]/auth/oktaOAuth.svelte +++ b/src/routes/console/project-[project]/auth/oktaOAuth.svelte @@ -102,7 +102,7 @@ + }/account/sessions/oauth2/callback/${provider.name.toLocaleLowerCase()}/${projectId}`} /> From 96845ad0acca69b584318c355d1d75265a111f22 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Fri, 18 Nov 2022 14:27:17 -0800 Subject: [PATCH 05/38] Rename auth/oauth route to auth/oauth2 to match default in appwrite --- src/routes/auth/{oauth => oauth2}/failure/+page.svelte | 0 src/routes/auth/{oauth => oauth2}/success/+page.svelte | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename src/routes/auth/{oauth => oauth2}/failure/+page.svelte (100%) rename src/routes/auth/{oauth => oauth2}/success/+page.svelte (100%) diff --git a/src/routes/auth/oauth/failure/+page.svelte b/src/routes/auth/oauth2/failure/+page.svelte similarity index 100% rename from src/routes/auth/oauth/failure/+page.svelte rename to src/routes/auth/oauth2/failure/+page.svelte diff --git a/src/routes/auth/oauth/success/+page.svelte b/src/routes/auth/oauth2/success/+page.svelte similarity index 100% rename from src/routes/auth/oauth/success/+page.svelte rename to src/routes/auth/oauth2/success/+page.svelte From abce0512615f1e6e09db4d5f8464ca8d04a92f82 Mon Sep 17 00:00:00 2001 From: arktal <101146331+gpollet@users.noreply.github.com> Date: Sat, 19 Nov 2022 17:46:47 +0100 Subject: [PATCH 06/38] Fixed dead link to memberships doc --- .../auth/user-[user]/memberships/[[page]]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/auth/user-[user]/memberships/[[page]]/+page.svelte b/src/routes/console/project-[project]/auth/user-[user]/memberships/[[page]]/+page.svelte index a5f8b2fc6..b822f838a 100644 --- a/src/routes/console/project-[project]/auth/user-[user]/memberships/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/auth/user-[user]/memberships/[[page]]/+page.svelte @@ -72,7 +72,7 @@ From 20ce10fa5a7190cbc40cc363e442996dd1d4af1e Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 21 Nov 2022 12:54:38 +0100 Subject: [PATCH 07/38] feat: add .net and c++ icons --- static/icons/dark/color/cpp.svg | 8 ++++++++ static/icons/dark/color/dotnet.svg | 3 +++ static/icons/dark/grayscale/cpp.svg | 3 +++ static/icons/dark/grayscale/dotnet.svg | 3 +++ static/icons/light/color/cpp.svg | 8 ++++++++ static/icons/light/color/dotnet.svg | 3 +++ static/icons/light/grayscale/cpp.svg | 3 +++ static/icons/light/grayscale/dotnet.svg | 3 +++ 8 files changed, 34 insertions(+) create mode 100644 static/icons/dark/color/cpp.svg create mode 100644 static/icons/dark/color/dotnet.svg create mode 100644 static/icons/dark/grayscale/cpp.svg create mode 100644 static/icons/dark/grayscale/dotnet.svg create mode 100644 static/icons/light/color/cpp.svg create mode 100644 static/icons/light/color/dotnet.svg create mode 100644 static/icons/light/grayscale/cpp.svg create mode 100644 static/icons/light/grayscale/dotnet.svg diff --git a/static/icons/dark/color/cpp.svg b/static/icons/dark/color/cpp.svg new file mode 100644 index 000000000..e224115f3 --- /dev/null +++ b/static/icons/dark/color/cpp.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/icons/dark/color/dotnet.svg b/static/icons/dark/color/dotnet.svg new file mode 100644 index 000000000..8800d2d72 --- /dev/null +++ b/static/icons/dark/color/dotnet.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/icons/dark/grayscale/cpp.svg b/static/icons/dark/grayscale/cpp.svg new file mode 100644 index 000000000..4824c7f47 --- /dev/null +++ b/static/icons/dark/grayscale/cpp.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/icons/dark/grayscale/dotnet.svg b/static/icons/dark/grayscale/dotnet.svg new file mode 100644 index 000000000..3f8694d65 --- /dev/null +++ b/static/icons/dark/grayscale/dotnet.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/icons/light/color/cpp.svg b/static/icons/light/color/cpp.svg new file mode 100644 index 000000000..a1251ac73 --- /dev/null +++ b/static/icons/light/color/cpp.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/icons/light/color/dotnet.svg b/static/icons/light/color/dotnet.svg new file mode 100644 index 000000000..8a366f68b --- /dev/null +++ b/static/icons/light/color/dotnet.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/icons/light/grayscale/cpp.svg b/static/icons/light/grayscale/cpp.svg new file mode 100644 index 000000000..9879612ca --- /dev/null +++ b/static/icons/light/grayscale/cpp.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/icons/light/grayscale/dotnet.svg b/static/icons/light/grayscale/dotnet.svg new file mode 100644 index 000000000..f49950efb --- /dev/null +++ b/static/icons/light/grayscale/dotnet.svg @@ -0,0 +1,3 @@ + + + From 6adff4321c1fcb803a9a6e882bf39cadf1707870 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 21 Nov 2022 11:12:24 -0800 Subject: [PATCH 08/38] Update function settings to recreate Variable modal with correct selectedVar --- .../function-[function]/settings/+page.svelte | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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..29adb4758 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 @@ -570,10 +570,12 @@ - +{#if showVariablesModal} + +{/if} From 18239fb9dfc5abc15717ca06042ab709083bd19a Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 21 Nov 2022 09:28:52 -0800 Subject: [PATCH 09/38] Fix sdk for web sample import --- .../overview/platforms/wizard/web/step2.svelte | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/routes/console/project-[project]/overview/platforms/wizard/web/step2.svelte b/src/routes/console/project-[project]/overview/platforms/wizard/web/step2.svelte index b5222156f..9699669ff 100644 --- a/src/routes/console/project-[project]/overview/platforms/wizard/web/step2.svelte +++ b/src/routes/console/project-[project]/overview/platforms/wizard/web/step2.svelte @@ -12,8 +12,12 @@ let method: Method = Method.NPM; - const example1 = `import { Appwrite } from 'appwrite';`; - const example2 = ` From 08aa2b5b4b474b30f3b9d7452abf067fbd859803 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 21 Nov 2022 09:30:41 -0800 Subject: [PATCH 10/38] Fix sdk for web init sample Since the import in the previous step is for Appwrite use Appwrite as the prefix for this sample. --- .../overview/platforms/wizard/web/step3.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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}');`; From 7cbe322eb8cd7d4a71661c660573505c3f50bf73 Mon Sep 17 00:00:00 2001 From: rrosluk Date: Tue, 22 Nov 2022 11:00:03 +0100 Subject: [PATCH 11/38] Update storage settings fix Fixes https://github.com/appwrite/appwrite/issues/4746 --- .../bucket-[bucket]/settings/+page.svelte | 283 +++++++++--------- 1 file changed, 145 insertions(+), 138 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 4eff191a3..ef9713da7 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() { + interface IUpdateBucket { + id: string; + name: string; + permissions?: string[]; + fileSecurity?: boolean; + enabled?: boolean; + maximumFileSize?: number; + allowedFileExtensions?: string[]; + compression?: string; + encryption?: boolean; + antivirus?: boolean; + } + + interface IUpdateBucketMisc { + 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 }; + 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, @@ -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' - }); - } - } - 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 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 12/38] 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 ef9713da7..2e443edf5 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', From ccf8df07cce255c46c2d6c6fc071455d32eea081 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Mon, 21 Nov 2022 10:54:30 -0800 Subject: [PATCH 13/38] Fix create variable modal not resetting in function wizard --- .../functions/createVariable.svelte | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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 /> - + From 56792b147c82ff123b9bfbf73951fc0b37a52c89 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 22 Nov 2022 18:35:33 +0000 Subject: [PATCH 14/38] feat: add new env var for GA project --- .env.example | 2 +- src/lib/actions/analytics.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 897876704..0e9fe6711 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,3 @@ VITE_APPWRITE_ENDPOINT= -VITE_GOOGLE_ANALYTICS= +VITE_GA_PROJECT= VITE_SENTRY_DSN= \ No newline at end of file diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 1f77d0cc3..efc6132c1 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -8,7 +8,7 @@ const analytics = Analytics({ app: 'appwrite', plugins: [ googleAnalytics({ - measurementIds: ['G-R4YJ9JN8L4'] + measurementIds: [import.meta.env.VITE_GA_PROJECT?.toString() ?? 'G-R4YJ9JN8L4'] }) ] }); From fa9c99bc1b585f05e79b8a6af8fb053ae0b3b508 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 22 Nov 2022 19:43:04 +0000 Subject: [PATCH 15/38] feat: add mode --- .env.example | 3 ++- .gitpod.yml | 7 +++++++ src/lib/actions/analytics.ts | 2 ++ src/lib/constants.ts | 4 ++++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .gitpod.yml diff --git a/.env.example b/.env.example index 0e9fe6711..06149b167 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,4 @@ VITE_APPWRITE_ENDPOINT= VITE_GA_PROJECT= -VITE_SENTRY_DSN= \ No newline at end of file +VITE_SENTRY_DSN= +VITE_CONSOLE_MODE=self-hosted \ No newline at end of file diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 000000000..64f113ab2 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,7 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file) +# and commit this file to your remote git repository to share the goodness with others. + +tasks: + - init: npm install && npm run build + command: npm run dev diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index efc6132c1..eb8e39232 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -3,6 +3,7 @@ import googleAnalytics from '@analytics/google-analytics'; import { get } from 'svelte/store'; import { page } from '$app/stores'; import { user } from '$lib/stores/user'; +import { CONSOLE_MODE_SELF_HOSTED } from '$lib/constants'; const analytics = Analytics({ app: 'appwrite', @@ -48,6 +49,7 @@ function sendEventToGrowth(event: string, path: string, data: object = null): vo action: event, label: event, url: window.location.origin + path, + account: import.meta.env.VITE_CONSOLE_MODE?.toString() ?? CONSOLE_MODE_SELF_HOSTED, data: { email, name, diff --git a/src/lib/constants.ts b/src/lib/constants.ts index b4942bebc..5b00e8508 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -2,6 +2,10 @@ export const PAGE_LIMIT = 12; // default page limit export const CARD_LIMIT = 6; // default card limit export const INTERVAL = 5 * 60000; // default interval to check for feedback +/** Constants to identify console mode */ +export const CONSOLE_MODE_SELF_HOSTED = 'self-hosted'; +export const CONSOLE_MODE_CLOUD = 'cloud'; + export enum Dependencies { ORGANIZATION = 'dependency:organization', PROJECT = 'dependency:project', From 74e16ff8b62fdfdd919a3dbd70859324bdd3d458 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 22 Nov 2022 19:47:25 +0000 Subject: [PATCH 16/38] feat: remove gitpod file --- .gitpod.yml | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 64f113ab2..000000000 --- a/.gitpod.yml +++ /dev/null @@ -1,7 +0,0 @@ -# This configuration file was automatically generated by Gitpod. -# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file) -# and commit this file to your remote git repository to share the goodness with others. - -tasks: - - init: npm install && npm run build - command: npm run dev From a7b15656d13e41cc7a5a88079b2ac9329e309be2 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 22 Nov 2022 19:57:20 +0000 Subject: [PATCH 17/38] chore: review comments --- .gitpod.yml | 7 +++++++ src/lib/actions/analytics.ts | 4 ++-- src/lib/constants.ts | 7 ++++--- 3 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 000000000..64f113ab2 --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,7 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file) +# and commit this file to your remote git repository to share the goodness with others. + +tasks: + - init: npm install && npm run build + command: npm run dev diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index eb8e39232..7495b191c 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -3,7 +3,7 @@ import googleAnalytics from '@analytics/google-analytics'; import { get } from 'svelte/store'; import { page } from '$app/stores'; import { user } from '$lib/stores/user'; -import { CONSOLE_MODE_SELF_HOSTED } from '$lib/constants'; +import { Mode } from '$lib/constants'; const analytics = Analytics({ app: 'appwrite', @@ -49,7 +49,7 @@ function sendEventToGrowth(event: string, path: string, data: object = null): vo action: event, label: event, url: window.location.origin + path, - account: import.meta.env.VITE_CONSOLE_MODE?.toString() ?? CONSOLE_MODE_SELF_HOSTED, + account: import.meta.env.VITE_CONSOLE_MODE?.toString() ?? Mode.SELF_HOSTED, data: { email, name, diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 5b00e8508..721c3db12 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -2,9 +2,10 @@ export const PAGE_LIMIT = 12; // default page limit export const CARD_LIMIT = 6; // default card limit export const INTERVAL = 5 * 60000; // default interval to check for feedback -/** Constants to identify console mode */ -export const CONSOLE_MODE_SELF_HOSTED = 'self-hosted'; -export const CONSOLE_MODE_CLOUD = 'cloud'; +export enum Mode { + CLOUD = 'mode:cloud', + SELF_HOSTED = 'mode:self-hosted' +} export enum Dependencies { ORGANIZATION = 'dependency:organization', From d831c1b108367e42aaf81bd698786bfb66429793 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Tue, 22 Nov 2022 19:58:28 +0000 Subject: [PATCH 18/38] chore: review comments --- .gitpod.yml | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 64f113ab2..000000000 --- a/.gitpod.yml +++ /dev/null @@ -1,7 +0,0 @@ -# This configuration file was automatically generated by Gitpod. -# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file) -# and commit this file to your remote git repository to share the goodness with others. - -tasks: - - init: npm install && npm run build - command: npm run dev From 91fdeb7529fd4168611df0863808dfe55b7d1874 Mon Sep 17 00:00:00 2001 From: Alex Patterson Date: Tue, 22 Nov 2022 15:23:07 -0500 Subject: [PATCH 19/38] remove PH status --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index eceed7586..0dd094894 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,6 @@ [![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite) [![appwrite.io](https://img.shields.io/badge/appwrite-.io-f02e65?style=flat-square)](https://appwrite.io) -

-Console 2.0 - Backend as a Service, reimagined by Appwrite | Product Hunt -

- ![Appwrite](github.png) [Appwrite](https://appwrite.io) Console is the Graphical User Interface that developers interact with when accessing their Appwrite instance in the web browser. From a920bc7d3a9adf4725dcdac77d11185ba5e08334 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 23 Nov 2022 14:21:09 +0100 Subject: [PATCH 20/38] feat: create missing components, add missing docs --- src/lib/stores/oauth-providers.ts | 22 ++++ .../auth/authentikOAuth.svelte | 108 ++++++++++++++++++ .../project-[project]/auth/gitlabOAuth.svelte | 106 +++++++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 src/routes/console/project-[project]/auth/authentikOAuth.svelte create mode 100644 src/routes/console/project-[project]/auth/gitlabOAuth.svelte diff --git a/src/lib/stores/oauth-providers.ts b/src/lib/stores/oauth-providers.ts index 36100ed16..4ed398e67 100644 --- a/src/lib/stores/oauth-providers.ts +++ b/src/lib/stores/oauth-providers.ts @@ -5,6 +5,8 @@ import Apple from '../../routes/console/project-[project]/auth/appleOAuth.svelte import Microsoft from '../../routes/console/project-[project]/auth/microsoftOAuth.svelte'; import Okta from '../../routes/console/project-[project]/auth/oktaOAuth.svelte'; import Auth0 from '../../routes/console/project-[project]/auth/auth0OAuth.svelte'; +import Authentik from '../../routes/console/project-[project]/auth/authentikOAuth.svelte'; +import GitLab from '../../routes/console/project-[project]/auth/gitlabOAuth.svelte'; import Main from '../../routes/console/project-[project]/auth/mainOAuth.svelte'; export type Provider = Models.Provider & { @@ -36,6 +38,13 @@ const setProviders = (project: Models.Project): Provider[] => { docs = 'https://auth0.com/developers'; component = Auth0; break; + case 'authentik': + docs = 'https://goauthentik.io/integrations/sources/oauth/'; + component = Authentik; + break; + case 'autodesk': + docs = 'https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/overview/'; + break; case 'bitbucket': docs = 'https://developer.atlassian.com/bitbucket'; break; @@ -45,12 +54,21 @@ const setProviders = (project: Models.Project): Provider[] => { case 'box': docs = 'https://developer.box.com/reference/'; break; + case 'dailymotion': + docs = 'https://developers.dailymotion.com/api/'; + break; case 'discord': docs = 'https://discordapp.com/developers/docs/topics/oauth2'; break; + case 'disqus': + docs = 'https://disqus.com/api/docs/auth/'; + break; case 'dropbox': docs = 'https://www.dropbox.com/developers/documentation'; break; + case 'etsy': + docs = 'https://developers.etsy.com/'; + break; case 'facebook': docs = 'https://developers.facebook.com/'; break; @@ -59,6 +77,7 @@ const setProviders = (project: Models.Project): Provider[] => { break; case 'gitlab': docs = 'https://docs.gitlab.com/ee/api/'; + component = GitLab; break; case 'google': docs = 'https://support.google.com/googleapi/answer/6158849'; @@ -84,6 +103,9 @@ const setProviders = (project: Models.Project): Provider[] => { icon = 'paypal'; docs = 'https://developer.paypal.com/docs/api/overview/'; break; + case 'podio': + docs = 'https://developers.podio.com/doc/oauth-authorization'; + break; case 'salesforce': docs = 'https://developer.salesforce.com/docs/'; break; diff --git a/src/routes/console/project-[project]/auth/authentikOAuth.svelte b/src/routes/console/project-[project]/auth/authentikOAuth.svelte new file mode 100644 index 000000000..105a33e58 --- /dev/null +++ b/src/routes/console/project-[project]/auth/authentikOAuth.svelte @@ -0,0 +1,108 @@ + + + + {provider.name} OAuth2 Settings + +

+ To use {provider.name} authentication in your application, first fill in this form. For more + info you can + visit the docs. +

+ + + + + + To complete set up, add this OAuth2 redirect URI to your {provider.name} app configuration. + +
+

URI

+ +
+
+ + + + +
diff --git a/src/routes/console/project-[project]/auth/gitlabOAuth.svelte b/src/routes/console/project-[project]/auth/gitlabOAuth.svelte new file mode 100644 index 000000000..f179f74bc --- /dev/null +++ b/src/routes/console/project-[project]/auth/gitlabOAuth.svelte @@ -0,0 +1,106 @@ + + + + {provider.name} OAuth2 Settings + +

+ To use {provider.name} authentication in your application, first fill in this form. For more + info you can + visit the docs. +

+ + + + + + To complete set up, add this OAuth2 redirect URI to your {provider.name} app configuration. + +
+

URI

+ +
+
+ + + + +
From 2d867ab83461bc2f98225d85a0ad074f371afdd5 Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Wed, 23 Nov 2022 13:59:08 +0000 Subject: [PATCH 21/38] fix: createIndex attribute option changing all --- .../indexes/createIndex.svelte | 182 +++++++++--------- 1 file changed, 95 insertions(+), 87 deletions(-) diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte index eb3ebecd4..440ffb3fa 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte @@ -26,19 +26,19 @@ ]; let newAttr = false; let selectedType = 'key'; - $: attributeOptions = $collection.attributes.map((attribute: Attributes) => ({ + + let attributeOptions = $collection.attributes.map((attribute: Attributes) => ({ value: attribute.key, label: attribute.key })); - $: attributeList = []; + let attributeList = [] as Array<{ value: string; order: string }>; let selectedAttribute = ''; let selectedOrder = ''; onMount(() => { - if (externalAttribute) { - attributeList = [{ value: externalAttribute.key, order: 'ASC' }]; - } + if (!externalAttribute) return; + attributeList = [{ value: externalAttribute.key, order: 'ASC' }]; }); $: if (showCreateIndex) { @@ -47,91 +47,107 @@ selectedType = 'key'; key = null; } - const created = async () => { - if (key && selectedAttribute && selectedOrder && selectedType) { - if (selectedAttribute && selectedOrder) { - attributeList.push({ value: selectedAttribute, order: selectedOrder }); - selectedAttribute = selectedOrder = ''; - } - try { - await sdkForProject.databases.createIndex( - databaseId, - $collection.$id, - key, - selectedType, - attributeList.map((a) => a.value), - attributeList.map((a) => a.order) - ); - invalidate(Dependencies.COLLECTION); - addNotification({ - message: 'Index has been created', - type: 'success' - }); - trackEvent('submit_index_create'); - } catch (error) { - addNotification({ - message: error.message, - type: 'error' - }); - } + const create = async () => { + if (!(key && selectedAttribute && selectedOrder && selectedType)) { + error = 'All fields are required'; + return; + } + + if (selectedAttribute && selectedOrder) { + attributeList.push({ value: selectedAttribute, order: selectedOrder }); + selectedAttribute = selectedOrder = ''; + } + + try { + await sdkForProject.databases.createIndex( + databaseId, + $collection.$id, + key, + selectedType, + attributeList.map((a) => a.value), + attributeList.map((a) => a.order) + ); + invalidate(Dependencies.COLLECTION); + addNotification({ + message: 'Index has been created', + type: 'success' + }); + trackEvent('submit_index_create'); + } catch (error) { + addNotification({ + message: error.message, + type: 'error' + }); + } finally { showCreateIndex = false; - } else error = 'All fields are required'; + } }; + + const addAttribute = () => { + if (!(selectedAttribute && selectedOrder)) return; + + // We assign instead of pushing to trigger Svelte's reactivity + attributeList = [...attributeList, { value: selectedAttribute, order: selectedOrder }]; + selectedAttribute = ''; + selectedOrder = ''; + newAttr = true; + }; + + $: console.log(attributeList); - + Create Index - {#if attributeList?.length} - {#each attributeList as index, i} -
  • -
    - -
    -
    - -
    + {#each attributeList as attribute, i (selectedAttribute + i)} +
  • +
    + +
    +
    + +
    + +
    + +
    +
  • + {/each} -
    - -
    - - {/each} - {/if} {#if !attributeList?.length || newAttr}
  • - @@ -151,7 +167,7 @@
    - @@ -171,16 +187,8 @@
  • {/if} - From 77c1f8299ef96986b987b8f00c6d3cf6024d9864 Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Wed, 23 Nov 2022 14:23:26 +0000 Subject: [PATCH 22/38] refactor: improve createIndex fix --- package-lock.json | 12 ++++++------ .../indexes/createIndex.svelte | 12 +++--------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 785ae480a..c7dbe73b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6882,9 +6882,9 @@ } }, "node_modules/svelte": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.52.0.tgz", - "integrity": "sha512-FxcnEUOAVfr10vDU5dVgJN19IvqeHQCS1zfe8vayTfis9A2t5Fhx+JDe5uv/C3j//bB1umpLJ6quhgs9xyUbCQ==", + "version": "3.53.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", + "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==", "engines": { "node": ">= 8" } @@ -12929,9 +12929,9 @@ "dev": true }, "svelte": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.52.0.tgz", - "integrity": "sha512-FxcnEUOAVfr10vDU5dVgJN19IvqeHQCS1zfe8vayTfis9A2t5Fhx+JDe5uv/C3j//bB1umpLJ6quhgs9xyUbCQ==" + "version": "3.53.1", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.53.1.tgz", + "integrity": "sha512-Q4/hHkktZogGhN5iqxqSi9sjEVoe/NbIxX4hXEHoasTxj+TxEQVAq66LnDMdAZxjmsodkoI5F3slqsS68U7FNw==" }, "svelte-check": { "version": "2.9.2", diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte index 440ffb3fa..ec52794a4 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte @@ -93,8 +93,6 @@ selectedOrder = ''; newAttr = true; }; - - $: console.log(attributeList); @@ -103,7 +101,7 @@ - {#each attributeList as attribute, i (selectedAttribute + i)} + {#each attributeList as attribute, i}
  • + + @@ -121,6 +113,8 @@
    @@ -129,10 +123,10 @@
    @@ -140,52 +134,11 @@
  • {/each} - {#if !attributeList?.length || newAttr} -
  • -
    - -
    -
    - -
    -
    - -
    -
  • - {/if} - - + {JSON.stringify(attributeList)}
    From b5870f1642b9f75ad0f629ca8c7b8003044bc2ab Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Wed, 23 Nov 2022 16:26:33 +0000 Subject: [PATCH 25/38] chore: add jsdoc to array helper --- src/lib/helpers/array.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lib/helpers/array.ts b/src/lib/helpers/array.ts index 8fd324d4d..12cde8c4b 100644 --- a/src/lib/helpers/array.ts +++ b/src/lib/helpers/array.ts @@ -14,7 +14,16 @@ export function symmetricDifference(arr1: unknown[], arr2: unknown[]) { return difference(arr1, arr2).concat(difference(arr2, arr1)); } -export function remove(arr: T[], index: number) { +/** + * Removes the element at the specified index from the array, and returns a new array. + * + * @export + * @template T + * @param {T[]} arr + * @param {number} index + * @returns {T[]} + */ +export function remove(arr: T[], index: number): T[] { // Remove the element at the given index, return a new array return [...arr.slice(0, index), ...arr.slice(index + 1)]; } From a5b3f10d6c4dadd76edc18fbabb18d866c80be1e Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Wed, 23 Nov 2022 16:27:10 +0000 Subject: [PATCH 26/38] refactor: remove explicit type --- .../collection-[collection]/indexes/createIndex.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte index 5d3fb6117..8c65ef6ea 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte @@ -31,7 +31,7 @@ value: attribute.key, label: attribute.key })); - let attributeList = [{ value: '', order: '' }] as Array<{ value: string; order: string }>; + let attributeList = [{ value: '', order: '' }]; $: addAttributeDisabled = !attributeList.at(-1)?.value || !attributeList.at(-1)?.order; From 1da9f10dc6dd089f1e7975c3f3245115bdd02079 Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Wed, 23 Nov 2022 16:28:13 +0000 Subject: [PATCH 27/38] chore: remove leftover debug string --- .../collection-[collection]/indexes/createIndex.svelte | 1 - 1 file changed, 1 deletion(-) diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte index 8c65ef6ea..27eb65ced 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte @@ -138,7 +138,6 @@