From a5762f432da38a6ce2846fd783ab93484543cdae Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 31 Oct 2022 11:27:10 +0100 Subject: [PATCH 01/90] miscellaneous fixes --- src/lib/components/cardContainer.svelte | 2 +- src/lib/components/emptySearch.svelte | 4 +- src/lib/components/permissions/actions.svelte | 6 +- src/lib/components/permissions/index.ts | 1 + .../components/permissions/permissions.svelte | 138 ++++++++-------- src/lib/components/permissions/roles.svelte | 97 +++++++---- src/lib/components/permissions/team.svelte | 134 +++++++++------ src/lib/components/permissions/user.svelte | 154 ++++++++++++------ src/lib/elements/forms/inputCron.svelte | 3 + src/lib/elements/table/rowButton.svelte | 10 +- src/lib/layout/logs.svelte | 9 + .../authentication/user-[user]/+page.svelte | 1 + .../database-[database]/settings/+page.svelte | 2 +- .../functions/createFunction.svelte | 9 +- .../function-[function]/[[page]]/+page.svelte | 2 +- .../function-[function]/settings/+page.svelte | 6 +- .../functions/wizard/step2.svelte | 6 +- .../functions/wizard/step3.svelte | 2 +- .../functions/wizard/step4.svelte | 2 +- .../functions/wizard/step5.svelte | 2 +- .../project-[project]/overview/+layout.svelte | 27 ++- .../overview/platforms/+page.svelte | 29 +++- .../settings/webhooks/wizard/step3.svelte | 2 +- static/icons/dark/grayscale/code.svg | 1 + static/icons/light/grayscale/code.svg | 1 + 25 files changed, 422 insertions(+), 228 deletions(-) create mode 100644 static/icons/dark/grayscale/code.svg create mode 100644 static/icons/light/grayscale/code.svg diff --git a/src/lib/components/cardContainer.svelte b/src/lib/components/cardContainer.svelte index 5ba3ee68b..835ced4d6 100644 --- a/src/lib/components/cardContainer.svelte +++ b/src/lib/components/cardContainer.svelte @@ -12,7 +12,7 @@ style={`--grid-gap:1.5rem; --grid-item-size:${total > 3 ? '22rem' : '25rem'};`}> - {#if limit + offset > total && (total % 2 !== 0 || total % 4 === 0)} + {#if total > 3 ? total < limit + offset : total % 2 !== 0} diff --git a/src/lib/components/emptySearch.svelte b/src/lib/components/emptySearch.svelte index 8034da844..b0c54e647 100644 --- a/src/lib/components/emptySearch.svelte +++ b/src/lib/components/emptySearch.svelte @@ -3,6 +3,8 @@ import Light from '$lib/images/search-light.svg'; import Dark from '$lib/images/search-dark.svg'; import PaginationInline from './paginationInline.svelte'; + + export let hidePages = false;
@@ -18,5 +20,5 @@

Total results: 0

- +
diff --git a/src/lib/components/permissions/actions.svelte b/src/lib/components/permissions/actions.svelte index 9f2022e80..d97edeffd 100644 --- a/src/lib/components/permissions/actions.svelte +++ b/src/lib/components/permissions/actions.svelte @@ -1,6 +1,5 @@ - + dispatch('create', ['any'])}> Any diff --git a/src/lib/components/permissions/index.ts b/src/lib/components/permissions/index.ts index 01de280d9..cd32ba0ea 100644 --- a/src/lib/components/permissions/index.ts +++ b/src/lib/components/permissions/index.ts @@ -1,3 +1,4 @@ export { default as Permissions } from './permissions.svelte'; +export { default as Roles } from './roles.svelte'; export { default as Team } from './team.svelte'; export { default as User } from './user.svelte'; diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte index 67d7c7c63..b9d9ea7f6 100644 --- a/src/lib/components/permissions/permissions.svelte +++ b/src/lib/components/permissions/permissions.svelte @@ -10,26 +10,23 @@ {#if [...$groups]?.length} Role - {#if withCrud} - {#if withCreate} - Create - {/if} - Read - Update - Delete + {#if withCreate} + Create {/if} + Read + Update + Delete {#each [...$groups].sort(sortRoles) as [role, permission]} - + - + - {#if withCrud} - {#if withCreate} - - togglePermission(role, 'create')} /> - - {/if} - + {#if withCreate} + togglePermission(role, 'read')} /> - - - togglePermission(role, 'update')} /> - - - togglePermission(role, 'delete')} /> + aria-label="Create" + checked={permission.create} + on:change={() => togglePermission(role, 'create')} /> {/if} + + togglePermission(role, 'read')} /> + + + togglePermission(role, 'update')} /> + + + togglePermission(role, 'delete')} /> +
@@ -231,18 +213,38 @@ {/each}
+ + + + {:else} - ROLE - - (showDropdown = !showDropdown)}> - Add a role to get started - +
+
+
+ + + +
+
+ Add a role to get started +
+
+
{/if} - - diff --git a/src/lib/components/permissions/roles.svelte b/src/lib/components/permissions/roles.svelte index 81fe38ced..62f5aeed2 100644 --- a/src/lib/components/permissions/roles.svelte +++ b/src/lib/components/permissions/roles.svelte @@ -1,7 +1,9 @@ - - - Role - - - - {#each [...$groups.keys()] as role} - - - - - -
- -
-
-
- {/each} -
-
- - +{#if roles?.length} + + + Role + + + + {#each [...$groups.keys()] as role} + + + + + +
+ +
+
+
+ {/each} +
+
+ + + +{:else} +
+
+
+ + + +
+
+ Add a role to get started +
+
+
+{/if} diff --git a/src/lib/components/permissions/team.svelte b/src/lib/components/permissions/team.svelte index 073acd082..79434e101 100644 --- a/src/lib/components/permissions/team.svelte +++ b/src/lib/components/permissions/team.svelte @@ -1,9 +1,9 @@ - - Select teams - - {#if results?.teams} -
- - - {#each results.teams as team (team.$id)} - {@const role = `team:${team.$id}`} - {@const exists = $groups.has(role)} - - - - - {/each} - -
- onSelection(event, role)} /> - - -
-
- {/if} -
-

Total results: {results?.total}

- -
- - - -
+{#if show} +
+ + Select teams + + {#if results?.teams?.length} +
+ + + {#each results.teams as team (team.$id)} + {@const role = `team:${team.$id}`} + {@const exists = $groups.has(role)} + + + + + {/each} + +
+ onSelection(event, role)} /> + + +
+
+
+

Total results: {results?.total}

+ +
+ {:else if search} + +
+
+ Sorry we couldn't find "{search}" +

There are no Teams that match your search.

+
+
+ + +
+
+
+ {:else} + +
+
+ Sorry we couldn't find "{search}" + +

You have no Teams. Create a user to see them here.

+

+ Need a hand? Check out our + documentation. +

+
+
+
+ {/if} + + + + +
+
+{/if} diff --git a/src/lib/components/permissions/user.svelte b/src/lib/components/permissions/user.svelte index 30a83fcb3..fd7c43670 100644 --- a/src/lib/components/permissions/user.svelte +++ b/src/lib/components/permissions/user.svelte @@ -1,7 +1,7 @@ - - Select users - - {#if results?.users} -
- - - {#each results.users as user (user.$id)} - {@const role = `user:${user.$id}`} - {@const exists = $groups.has(role)} - - - - - {/each} - -
- onSelection(event, role)} /> - - -
-
- {/if} -
-

Total results: {results?.total}

- -
- - - -
+
+ + Select users + + {#if results?.users?.length} +
+ + + {#each results.users as user (user.$id)} + {@const role = `user:${user.$id}`} + {@const exists = $groups.has(role)} + + + + + {/each} + +
+ onSelection(event, role)} /> + + +
+
+
+

Total results: {results?.total}

+ +
+ {:else if search} + +
+
+ Sorry we couldn't find "{search}" +

There are no Users that match your search.

+
+
+ + +
+
+
+ {:else} + +
+
+ Sorry we couldn't find "{search}" + +

You have no Users. Create a user to see them here.

+

+ Need a hand? Check out our + documentation. +

+
+
+
+ {/if} + + + + +
+
diff --git a/src/lib/elements/forms/inputCron.svelte b/src/lib/elements/forms/inputCron.svelte index b7a2e7c1d..d11e07c0b 100644 --- a/src/lib/elements/forms/inputCron.svelte +++ b/src/lib/elements/forms/inputCron.svelte @@ -18,6 +18,8 @@ let element: HTMLInputElement; let error: string; + const pattern = String.raw`^[^]+\s+[^]+\s+[^]+\s+[^]+\s+[^]`; + onMount(() => { if (element && autofocus) { element.focus(); @@ -57,6 +59,7 @@ {maxlength} {readonly} {step} + {pattern} type="text" class="input-text" bind:value diff --git a/src/lib/elements/table/rowButton.svelte b/src/lib/elements/table/rowButton.svelte index f7b75a96a..63617b5aa 100644 --- a/src/lib/elements/table/rowButton.svelte +++ b/src/lib/elements/table/rowButton.svelte @@ -2,6 +2,12 @@ import { clickOnEnter } from '$lib/helpers/a11y'; -
+ + -
+ diff --git a/src/lib/layout/logs.svelte b/src/lib/layout/logs.svelte index 70a71c273..7b9c14fa5 100644 --- a/src/lib/layout/logs.svelte +++ b/src/lib/layout/logs.svelte @@ -35,8 +35,17 @@ .getElementsByClassName('code-panel-content')[0] .scrollTo({ top: 0, left: 0, behavior: 'smooth' }); } + + function handleKeydown(event: KeyboardEvent) { + if (event.key === 'Escape') { + event.preventDefault(); + $log.show = false; + } + } + + {#if $log.data}
diff --git a/src/routes/console/project-[project]/authentication/user-[user]/+page.svelte b/src/routes/console/project-[project]/authentication/user-[user]/+page.svelte index 11a18313d..89e53cee1 100644 --- a/src/routes/console/project-[project]/authentication/user-[user]/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user-[user]/+page.svelte @@ -420,6 +420,7 @@ {/if} + diff --git a/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte b/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte index b5c85478b..5951ee4b4 100644 --- a/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte @@ -7,18 +7,17 @@ import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; - export let showModal = false; export let provider: Provider; - let id: string = null; - let active = false; + let appId: string = null; + let enabled = false; let clientSecret: string = null; let auth0Domain: string = null; let error: string; onMount(() => { - id ??= provider.id; - active ??= provider.active; + appId ??= provider.appId; + enabled ??= provider.enabled; if (provider.secret) ({ clientSecret, auth0Domain } = JSON.parse(provider.secret)); }); @@ -28,17 +27,17 @@ await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - id, - secret + appId, + secret, + enabled ); - provider.active = active; - provider.id = id; + provider.enabled = enabled; + provider.appId = appId; provider.secret = secret; - showModal = false; addNotification({ type: 'success', message: `${provider.name} authentication has been ${ - provider.active ? 'enabled' : 'disabled' + provider.enabled ? 'enabled' : 'disabled' }` }); } catch ({ message }) { @@ -52,7 +51,7 @@ : provider.secret; - + {provider.name} OAuth2 Settings

@@ -61,13 +60,13 @@ visit the docs.

- + + bind:value={appId} />
- +
diff --git a/src/routes/console/project-[project]/authentication/_mainOAuth.svelte b/src/routes/console/project-[project]/authentication/_mainOAuth.svelte index 88b5272cf..aac505801 100644 --- a/src/routes/console/project-[project]/authentication/_mainOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_mainOAuth.svelte @@ -7,38 +7,39 @@ import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; - export let showModal = false; export let provider: Provider; const projectId = $page.params.project; - let active = false; - let id: string = null; + let enabled = false; + let appId: string = null; let secret: string = null; onMount(() => { - active ??= provider.active; - id ??= provider.id; + enabled ??= provider.enabled; + appId ??= provider.appId; secret ??= provider.secret; }); + let error: string; const update = async () => { + console.log(provider); try { await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - id, - secret + appId, + secret, + enabled ); - provider.active = active; - provider.id = id; + provider.enabled = enabled; + provider.appId = appId; provider.secret = secret; - showModal = false; addNotification({ type: 'success', message: `${provider.name} authentication has been ${ - provider.active ? 'enabled' : 'disabled' + provider.enabled ? 'enabled' : 'disabled' }` }); } catch ({ message }) { @@ -47,7 +48,7 @@ }; - + {provider.name} OAuth2 Settings

@@ -56,13 +57,13 @@ visit the docs.

- + + bind:value={appId} />
- +
diff --git a/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte b/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte index 84338c5e4..9bbe76a12 100644 --- a/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte @@ -7,18 +7,17 @@ import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; - export let showModal = false; export let provider: Provider; - let id: string = null; - let active = false; + let appId: string = null; + let enabled = false; let clientSecret: string = null; let tenantID: string = null; let error: string; onMount(() => { - id ??= provider.id; - active ??= provider.active; + appId ??= provider.appId; + enabled ??= provider.enabled; if (provider.secret) ({ clientSecret, tenantID } = JSON.parse(provider.secret)); }); @@ -29,18 +28,18 @@ await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - id, - secret + appId, + secret, + enabled ); - provider.active = active; - provider.id = id; + provider.enabled = enabled; + provider.appId = appId; provider.secret = secret; - showModal = false; addNotification({ type: 'success', message: `${provider.name} authentication has been ${ - provider.active ? 'enabled' : 'disabled' + provider.enabled ? 'enabled' : 'disabled' }` }); } catch ({ message }) { @@ -52,7 +51,7 @@ clientSecret && tenantID ? JSON.stringify({ clientSecret, tenantID }) : provider.secret; - + {provider.name} OAuth2 Settings

@@ -62,13 +61,13 @@ visit the docs.

- + + bind:value={appId} />
- +
diff --git a/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte b/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte index 6b2bac5d7..1b9c66f89 100644 --- a/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte @@ -7,18 +7,17 @@ import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; - export let showModal = false; export let provider: Provider; - let id: string = null; - let active = false; + let appId: string = null; + let enabled = false; let clientSecret: string = null; let oktaDomain: string = null; let authorizationServerId: string = null; onMount(() => { - id ??= provider.id; - active ??= provider.active; + appId ??= provider.appId; + enabled ??= provider.enabled; if (provider.secret) ({ clientSecret, oktaDomain, authorizationServerId } = JSON.parse(provider.secret)); }); @@ -32,17 +31,16 @@ await sdkForConsole.projects.updateOAuth2( projectId, provider.name.toLowerCase(), - id, + appId, secret ); - provider.active = active; - provider.id = id; + provider.enabled = enabled; + provider.appId = appId; provider.secret = secret; - showModal = false; addNotification({ type: 'success', message: `${provider.name} authentication has been ${ - provider.active ? 'enabled' : 'disabled' + provider.enabled ? 'enabled' : 'disabled' }` }); } catch ({ message }) { @@ -56,7 +54,7 @@ : provider.secret; - + {provider.name} OAuth2 Settings

@@ -65,13 +63,13 @@ visit the docs.

- + + bind:value={appId} />
- +
diff --git a/src/routes/console/project-[project]/authentication/settings/+page.svelte b/src/routes/console/project-[project]/authentication/settings/+page.svelte index 00e4029cc..d209725f2 100644 --- a/src/routes/console/project-[project]/authentication/settings/+page.svelte +++ b/src/routes/console/project-[project]/authentication/settings/+page.svelte @@ -15,7 +15,6 @@ import { page } from '$app/stores'; const projectId = $page.params.project; - let showModal = false; onMount(async () => { authMethods.load($project); @@ -56,9 +55,7 @@ label={box.label} id={box.method} bind:value={box.value} - on:change={() => { - authUpdate(box); - }} /> + on:change={() => authUpdate(box)} /> {/each} @@ -72,7 +69,6 @@ class="card u-flex u-flex-vertical u-cross-center" on:click={() => { selectedProvider = provider; - showModal = true; }} use:event={{ name: 'console_users', @@ -91,8 +87,8 @@

{provider.name}

- - {provider.active ? 'enabled' : 'disabled'} + + {provider.enabled ? 'enabled' : 'disabled'}
@@ -105,6 +101,7 @@ {#if selectedProvider} + bind:provider={selectedProvider} + on:close={() => (selectedProvider = null)} + showModal /> {/if} diff --git a/static/icons/dark/color/ms_yammer.svg b/static/icons/dark/color/yammer.svg similarity index 100% rename from static/icons/dark/color/ms_yammer.svg rename to static/icons/dark/color/yammer.svg diff --git a/static/icons/dark/grayscale/ms_yammer.svg b/static/icons/dark/grayscale/yammer.svg similarity index 100% rename from static/icons/dark/grayscale/ms_yammer.svg rename to static/icons/dark/grayscale/yammer.svg diff --git a/static/icons/light/color/ms_yammer.svg b/static/icons/light/color/yammer.svg similarity index 100% rename from static/icons/light/color/ms_yammer.svg rename to static/icons/light/color/yammer.svg diff --git a/static/icons/light/grayscale/ms_yammer.svg b/static/icons/light/grayscale/yammer.svg similarity index 100% rename from static/icons/light/grayscale/ms_yammer.svg rename to static/icons/light/grayscale/yammer.svg From e86ab43486b26e617ad0034562a9685c1b16ad79 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 31 Oct 2022 12:17:09 +0100 Subject: [PATCH 03/90] feat: wizard does not close if modal is still open --- src/lib/layout/wizard.svelte | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index 40b8e2f23..40871db40 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -28,7 +28,14 @@ let showExitModal = false; function handleKeydown(event: KeyboardEvent) { - if (event.key === 'Escape' && !showExitModal) { + const dialogArray = document.getElementsByTagName['dialog']; + let isModalOpen = false; + dialogArray?.forEach((dialog: HTMLDialogElement) => { + if (dialog.open) { + isModalOpen = true; + } + }); + if (event.key === 'Escape' && !showExitModal && isModalOpen) { event.preventDefault(); dispatch('exit'); wizard.hide(); From 0b2126737fe7285099ce6fa044dc1c38df5fac86 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Mon, 31 Oct 2022 13:15:14 +0100 Subject: [PATCH 04/90] fix: oauth screens --- src/lib/stores/oauth-providers.ts | 1 + .../project-[project]/authentication/_appleOAuth.svelte | 2 +- .../project-[project]/authentication/_auth0OAuth.svelte | 2 +- .../project-[project]/authentication/_mainOAuth.svelte | 6 ++++-- .../project-[project]/authentication/_microsoftOAuth.svelte | 2 +- .../project-[project]/authentication/_oktaOAuth.svelte | 2 +- .../project-[project]/authentication/settings/+page.svelte | 5 ++--- 7 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/lib/stores/oauth-providers.ts b/src/lib/stores/oauth-providers.ts index 64b254b00..e897255ed 100644 --- a/src/lib/stores/oauth-providers.ts +++ b/src/lib/stores/oauth-providers.ts @@ -26,6 +26,7 @@ const setProviders = (project: Models.Project): Provider[] => { switch (n.name.toLowerCase()) { case 'amazon': + console.log(n); docs = 'https://developer.amazon.com/apps-and-games/services-and-apis'; break; case 'apple': diff --git a/src/routes/console/project-[project]/authentication/_appleOAuth.svelte b/src/routes/console/project-[project]/authentication/_appleOAuth.svelte index 9cb8457b3..fbe3e7270 100644 --- a/src/routes/console/project-[project]/authentication/_appleOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_appleOAuth.svelte @@ -10,7 +10,7 @@ export let provider: Provider; let appId: string = null; - let enabled = false; + let enabled: boolean = null; let keyID: string = null; let teamID: string = null; let p8: string = null; diff --git a/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte b/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte index 5951ee4b4..249ae42d9 100644 --- a/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte @@ -10,7 +10,7 @@ export let provider: Provider; let appId: string = null; - let enabled = false; + let enabled: boolean = null; let clientSecret: string = null; let auth0Domain: string = null; let error: string; diff --git a/src/routes/console/project-[project]/authentication/_mainOAuth.svelte b/src/routes/console/project-[project]/authentication/_mainOAuth.svelte index aac505801..3d61c173b 100644 --- a/src/routes/console/project-[project]/authentication/_mainOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_mainOAuth.svelte @@ -6,12 +6,14 @@ import type { Provider } from '$lib/stores/oauth-providers'; import { addNotification } from '$lib/stores/notifications'; import { onMount } from 'svelte'; + import { invalidate } from '$app/navigation'; + import { Dependencies } from '$lib/constants'; export let provider: Provider; const projectId = $page.params.project; - let enabled = false; + let enabled: boolean = null; let appId: string = null; let secret: string = null; @@ -24,7 +26,6 @@ let error: string; const update = async () => { - console.log(provider); try { await sdkForConsole.projects.updateOAuth2( projectId, @@ -42,6 +43,7 @@ provider.enabled ? 'enabled' : 'disabled' }` }); + invalidate(Dependencies.PROJECT); } catch ({ message }) { error = message; } diff --git a/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte b/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte index 9bbe76a12..daf6000c2 100644 --- a/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_microsoftOAuth.svelte @@ -10,7 +10,7 @@ export let provider: Provider; let appId: string = null; - let enabled = false; + let enabled: boolean = null; let clientSecret: string = null; let tenantID: string = null; let error: string; diff --git a/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte b/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte index 1b9c66f89..69b1e095b 100644 --- a/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_oktaOAuth.svelte @@ -10,7 +10,7 @@ export let provider: Provider; let appId: string = null; - let enabled = false; + let enabled: boolean = null; let clientSecret: string = null; let oktaDomain: string = null; let authorizationServerId: string = null; diff --git a/src/routes/console/project-[project]/authentication/settings/+page.svelte b/src/routes/console/project-[project]/authentication/settings/+page.svelte index d209725f2..ef4010fd9 100644 --- a/src/routes/console/project-[project]/authentication/settings/+page.svelte +++ b/src/routes/console/project-[project]/authentication/settings/+page.svelte @@ -11,15 +11,14 @@ import { event } from '$lib/actions/analytics'; import type { Provider } from '$lib/stores/oauth-providers'; import { app } from '$lib/stores/app'; - import { onMount } from 'svelte'; import { page } from '$app/stores'; const projectId = $page.params.project; - onMount(async () => { + $: { authMethods.load($project); OAuthProviders.load($project); - }); + } const authUpdate = async (box: AuthMethod) => { try { From b377476065d311d67590a9c87536d9da88f30e0c Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Mon, 31 Oct 2022 14:30:54 +0100 Subject: [PATCH 05/90] fix: hide version number for now --- src/lib/layout/unauthenticated.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/layout/unauthenticated.svelte b/src/lib/layout/unauthenticated.svelte index be86d9b83..62d9e923b 100644 --- a/src/lib/layout/unauthenticated.svelte +++ b/src/lib/layout/unauthenticated.svelte @@ -82,7 +82,7 @@

- version 0.15.2.402 +

From dd2d03c99b110944ba82279e82b58e09e8265f20 Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 31 Oct 2022 15:23:21 +0100 Subject: [PATCH 06/90] fix: fixes from PR review --- src/lib/components/permissions/team.svelte | 156 +++++++-------- src/lib/components/permissions/user.svelte | 184 +++++++++--------- src/lib/layout/wizard.svelte | 9 +- .../functions/createFunction.svelte | 2 +- .../functions/wizard/step1.svelte | 2 +- 5 files changed, 167 insertions(+), 186 deletions(-) diff --git a/src/lib/components/permissions/team.svelte b/src/lib/components/permissions/team.svelte index 79434e101..43d08d1a6 100644 --- a/src/lib/components/permissions/team.svelte +++ b/src/lib/components/permissions/team.svelte @@ -1,5 +1,5 @@ -{#if show} -
- - Select teams - - {#if results?.teams?.length} -
- - - {#each results.teams as team (team.$id)} - {@const role = `team:${team.$id}`} - {@const exists = $groups.has(role)} - - - - - {/each} - -
- onSelection(event, role)} /> - - -
+ + Select teams + + {#if results?.teams?.length} +
+ + + {#each results.teams as team (team.$id)} + {@const role = `team:${team.$id}`} + {@const exists = $groups.has(role)} + + + + + {/each} + +
+ onSelection(event, role)} /> + + +
+
+
+

Total results: {results?.total}

+ +
+ {:else if search} + +
+
+ Sorry we couldn't find "{search}" +

There are no Teams that match your search.

-
-

Total results: {results?.total}

- +
+ +
- {:else if search} - -
-
- Sorry we couldn't find "{search}" -

There are no Teams that match your search.

-
-
- - -
-
-
- {:else} - -
-
- Sorry we couldn't find "{search}" +
+ + {:else} + +
+
+ Sorry we couldn't find "{search}" -

You have no Teams. Create a user to see them here.

-

- Need a hand? Check out our - documentation. -

-
-
-
- {/if} +

You have no Teams. Create a user to see them here.

+

+ Need a hand? Check out our + documentation. +

+
+
+ + {/if} - - - - - -{/if} + + + + diff --git a/src/lib/components/permissions/user.svelte b/src/lib/components/permissions/user.svelte index fd7c43670..a01e85f1e 100644 --- a/src/lib/components/permissions/user.svelte +++ b/src/lib/components/permissions/user.svelte @@ -1,5 +1,5 @@ -
- - Select users - - {#if results?.users?.length} -
- - - {#each results.users as user (user.$id)} - {@const role = `user:${user.$id}`} - {@const exists = $groups.has(role)} - - - + + {/each} + +
- onSelection(event, role)} /> - -
+
+
+

Total results: {results?.total}

+ +
+ {:else if search} + +
+
+ Sorry we couldn't find "{search}" +

There are no Users that match your search.

- - {:else} - -
-
- Sorry we couldn't find "{search}" - -

You have no Users. Create a user to see them here.

-

- Need a hand? Check out our - documentation. -

-
+
+ +
- - {/if} +
+
+ {:else} + +
+
+ Sorry we couldn't find "{search}" - - - - - +

You have no Users. Create a user to see them here.

+

+ Need a hand? Check out our + documentation. +

+
+
+
+ {/if} + + + + + diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index 40871db40..c805a6d01 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -28,13 +28,8 @@ let showExitModal = false; function handleKeydown(event: KeyboardEvent) { - const dialogArray = document.getElementsByTagName['dialog']; - let isModalOpen = false; - dialogArray?.forEach((dialog: HTMLDialogElement) => { - if (dialog.open) { - isModalOpen = true; - } - }); + const isModalOpen = document.querySelectorAll('dialog[open]'); + if (event.key === 'Escape' && !showExitModal && isModalOpen) { event.preventDefault(); dispatch('exit'); diff --git a/src/routes/console/project-[project]/functions/createFunction.svelte b/src/routes/console/project-[project]/functions/createFunction.svelte index 07f00c7fb..9030bb5c2 100644 --- a/src/routes/console/project-[project]/functions/createFunction.svelte +++ b/src/routes/console/project-[project]/functions/createFunction.svelte @@ -37,7 +37,7 @@ await sdkForProject.functions.createVariable(response.$id, v.key, v.value) ); await invalidate(Dependencies.FUNCTIONS); - await goto(`${base}/console/project-${projectId}/functions/function/${response.$id}`); + goto(`${base}/console/project-${projectId}/functions/function-${response.$id}`); addNotification({ message: 'Function has been created', diff --git a/src/routes/console/project-[project]/functions/wizard/step1.svelte b/src/routes/console/project-[project]/functions/wizard/step1.svelte index 93ac297e8..2701dadec 100644 --- a/src/routes/console/project-[project]/functions/wizard/step1.svelte +++ b/src/routes/console/project-[project]/functions/wizard/step1.svelte @@ -14,7 +14,7 @@ onMount(async () => { let runtimes = await sdkForProject.functions.listRuntimes(); options = runtimes.runtimes.map((runtime) => ({ - label: runtime.name, + label: `${runtime.name} - ${runtime.version}`, value: runtime.$id })); }); From 84fd57e7e68b86deac93aa440185735be0aaeb2c Mon Sep 17 00:00:00 2001 From: Arman Date: Mon, 31 Oct 2022 15:28:08 +0100 Subject: [PATCH 07/90] fix: small fix to dialog --- src/lib/layout/wizard.svelte | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index c805a6d01..6ca867e00 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -28,9 +28,8 @@ let showExitModal = false; function handleKeydown(event: KeyboardEvent) { - const isModalOpen = document.querySelectorAll('dialog[open]'); - - if (event.key === 'Escape' && !showExitModal && isModalOpen) { + const openDialog = document.querySelectorAll('dialog[open]'); + if (event.key === 'Escape' && !showExitModal && !openDialog?.length) { event.preventDefault(); dispatch('exit'); wizard.hide(); From 694a8cff84199e0460c028dca05228c8ab47b67d Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 10:50:34 +0100 Subject: [PATCH 08/90] fix: inner modal --- src/lib/components/innerModal.svelte | 48 +++++++++++-------- .../functions/wizard/step1.svelte | 24 +++++----- 2 files changed, 38 insertions(+), 34 deletions(-) diff --git a/src/lib/components/innerModal.svelte b/src/lib/components/innerModal.svelte index 384880389..96b170423 100644 --- a/src/lib/components/innerModal.svelte +++ b/src/lib/components/innerModal.svelte @@ -1,27 +1,33 @@ {#if show} - + + + {/if} diff --git a/src/routes/console/project-[project]/functions/wizard/step1.svelte b/src/routes/console/project-[project]/functions/wizard/step1.svelte index 2701dadec..6067d9af7 100644 --- a/src/routes/console/project-[project]/functions/wizard/step1.svelte +++ b/src/routes/console/project-[project]/functions/wizard/step1.svelte @@ -39,18 +39,16 @@ {options} required /> -
    - {#if !showCustomId} -
    - (showCustomId = !showCustomId)}> - -
    - {:else} - - {/if} -
+ {#if !showCustomId} +
+ (showCustomId = !showCustomId)}> + +
+ {:else} + + {/if} From a4611b78b8817c810c8cf456076d72f3acff713c Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 11:09:58 +0100 Subject: [PATCH 09/90] fix: can't add vars with same key name --- .../project-[project]/functions/wizard/step5.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/functions/wizard/step5.svelte b/src/routes/console/project-[project]/functions/wizard/step5.svelte index 4b791b433..2bf16ebda 100644 --- a/src/routes/console/project-[project]/functions/wizard/step5.svelte +++ b/src/routes/console/project-[project]/functions/wizard/step5.svelte @@ -22,7 +22,16 @@ function handleCreated(dispatchEvent: CustomEvent) { createFunction.update((n) => { - n.vars.push(dispatchEvent.detail); + if (n.vars.length) { + n.vars.map((v) => { + if (v.key !== dispatchEvent.detail.key) { + n.vars.push(dispatchEvent.detail); + } + }); + } else { + n.vars.push(dispatchEvent.detail); + } + return n; }); } From a259911261bc8459b4f71395c390427226c0862e Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 2 Nov 2022 11:21:08 +0100 Subject: [PATCH 10/90] fix: overall fixes --- src/lib/components/dropTabsLink.svelte | 4 +- src/lib/components/modal.svelte | 98 ++++++++++--------- src/lib/layout/usage.svelte | 17 ++-- .../[[page]]/+page.svelte | 11 +-- .../createProject.svelte | 19 +++- .../overview/keys/+page.svelte | 63 +++++++----- 6 files changed, 118 insertions(+), 94 deletions(-) diff --git a/src/lib/components/dropTabsLink.svelte b/src/lib/components/dropTabsLink.svelte index f1eb9481a..1b5ca8253 100644 --- a/src/lib/components/dropTabsLink.svelte +++ b/src/lib/components/dropTabsLink.svelte @@ -5,9 +5,9 @@
  • {#if disabled} - + {:else} diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index 4b124012c..e06853477 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -1,5 +1,5 @@ @@ -41,7 +44,13 @@ Create Project - + {#if !showCustomId}
    (showCustomId = !showCustomId)}> @@ -56,6 +65,6 @@ - + diff --git a/src/routes/console/project-[project]/overview/keys/+page.svelte b/src/routes/console/project-[project]/overview/keys/+page.svelte index 1709372d0..b7b54f506 100644 --- a/src/routes/console/project-[project]/overview/keys/+page.svelte +++ b/src/routes/console/project-[project]/overview/keys/+page.svelte @@ -1,5 +1,5 @@ From 6f7b52a57d1a42b2f6904ba2d2a2dd56c3c3f8bd Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 2 Nov 2022 11:37:05 +0100 Subject: [PATCH 13/90] fix: tests --- tests/unit/components/modal.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/unit/components/modal.test.ts b/tests/unit/components/modal.test.ts index b0df63c0c..d78907928 100644 --- a/tests/unit/components/modal.test.ts +++ b/tests/unit/components/modal.test.ts @@ -5,8 +5,7 @@ import Modal from '../../../src/lib/mock/modal.test.svelte'; afterEach(() => cleanup()); test('renders modal', async () => { - const { queryByText, container } = render(Modal); + const { container } = render(Modal); - expect(queryByText('Content')).toBeInTheDocument(); expect(container.querySelector('dialog')).toBeInTheDocument(); }); From 9c894454b69422a47114a8e33055cee7640304a6 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 11:44:05 +0100 Subject: [PATCH 14/90] fix: webhooks events --- .../settings/webhooks/[webhook]/+page.svelte | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 e399f46a3..021190570 100644 --- a/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte +++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte @@ -26,7 +26,6 @@ const projectId = $page.params.project; let name: string = null; let url: string = null; - let events = []; const eventSet: Writable> = writable(new Set()); @@ -41,7 +40,7 @@ onMount(async () => { name ??= $webhook.name; url ??= $webhook.url; - events = $webhook.events; + $eventSet = new Set($webhook.events); httpUser ??= $webhook.httpUser; httpPass ??= $webhook.httpPass; security = $webhook.security; @@ -144,8 +143,13 @@ eventSet.set($eventSet.add(event.detail)); } - $: if (difference(events, $webhook.events).length > 0) { - areEventsDisabled = false; + $: if ($eventSet) { + if ( + difference(Array.from($eventSet), $webhook.events).length || + difference($webhook.events, Array.from($eventSet)).length + ) { + areEventsDisabled = false; + } else areEventsDisabled = true; } From af2d84e52376ad5e05944f06082ec20842f0f96c Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 2 Nov 2022 12:09:37 +0100 Subject: [PATCH 15/90] fix: realtime --- src/lib/constants.ts | 1 + .../collection-[collection]/+layout.svelte | 23 +++++++++++++++++++ .../indexes/+page.svelte | 11 ++++++++- .../indexes/createIndex.svelte | 12 ++-------- .../function-[function]/+layout.svelte | 20 ++++++++++++++++ .../executions/[[page]]/+page.svelte | 21 +++++++++++++++-- .../executions/[[page]]/+page.ts | 5 ++-- 7 files changed, 78 insertions(+), 15 deletions(-) diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 5c2ecc465..c6089a6c6 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -25,6 +25,7 @@ export enum Dependencies { FUNCTIONS = 'functions', VARIABLES = 'variables', DEPLOYMENTS = 'deployments', + EXECUTIONS = 'executions', PLATFORM = 'platform', PLATFORMS = 'platforms', KEY = 'key', diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+layout.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+layout.svelte index 3a2840920..1eeef5a38 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+layout.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+layout.svelte @@ -1,5 +1,28 @@ diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte index 377c17561..0613707cb 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte @@ -1,5 +1,5 @@ +
    + Indexes + + +
    {#if data.indexes.total} 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 c8f444c73..f76d90eba 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 @@ -2,7 +2,6 @@ import { Modal } from '$lib/components'; import { Button, InputText, FormList, InputSelect } from '$lib/elements/forms'; import { collection } from '../store'; - import { onMount } from 'svelte'; import { sdkForProject } from '$lib/stores/sdk'; import { addNotification } from '$lib/stores/notifications'; import { page } from '$app/stores'; @@ -11,7 +10,6 @@ import { Dependencies } from '$lib/constants'; export let showCreateIndex = false; - export let externalAttribute: Attributes = null; const databaseId = $page.params.database; @@ -23,7 +21,7 @@ ]; let newAttr = false; let selectedType = ''; - let attributeOptions = $collection.attributes.map((attribute: Attributes) => ({ + $: attributeOptions = $collection.attributes.map((attribute: Attributes) => ({ value: attribute.key, label: attribute.key })); @@ -32,12 +30,6 @@ let selectedAttribute = ''; let selectedOrder = ''; - onMount(() => { - if (externalAttribute) { - attributeList = [{ value: externalAttribute.key, order: 'ASC' }]; - } - }); - $: if (showCreateIndex) { attributeList = []; selectedType = selectedOrder = selectedAttribute = ''; @@ -130,7 +122,7 @@
    diff --git a/src/routes/console/project-[project]/authentication/user-[user]/+page.svelte b/src/routes/console/project-[project]/authentication/user-[user]/+page.svelte index 11a18313d..73778b8ca 100644 --- a/src/routes/console/project-[project]/authentication/user-[user]/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user-[user]/+page.svelte @@ -264,14 +264,16 @@ - {:else if !$user.phone} + {:else if $user.email} - {:else if !$user.email} + {:else if $user.phone} + test {/if} + + {/if} {/if} diff --git a/src/routes/console/project-[project]/authentication/user-[user]/header.svelte b/src/routes/console/project-[project]/authentication/user-[user]/header.svelte index db724fc2c..a930cc71b 100644 --- a/src/routes/console/project-[project]/authentication/user-[user]/header.svelte +++ b/src/routes/console/project-[project]/authentication/user-[user]/header.svelte @@ -33,7 +33,7 @@ - {$user.name} + {$user.name ? $user.name : '-'} diff --git a/src/routes/console/project-[project]/functions/function-[function]/executions/[[page]]/+page.svelte b/src/routes/console/project-[project]/functions/function-[function]/executions/[[page]]/+page.svelte index 828ecc389..55ce97ab9 100644 --- a/src/routes/console/project-[project]/functions/function-[function]/executions/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/functions/function-[function]/executions/[[page]]/+page.svelte @@ -37,7 +37,7 @@ Status Trigger Type - Build Time + Execution Time
    {#each data.executions.executions as execution} From 0921a7cc1e1cf6653b6031401bd429d2d36c23ca Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 13:35:37 +0100 Subject: [PATCH 20/90] typo: capitalization --- src/routes/console/createOrganization.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/createOrganization.svelte b/src/routes/console/createOrganization.svelte index 80fdc2deb..f1f632ffa 100644 --- a/src/routes/console/createOrganization.svelte +++ b/src/routes/console/createOrganization.svelte @@ -55,7 +55,7 @@ {:else} - + {/if} From bacdcfe973ec6cbdcef8b5ff41b759e56af49fa8 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 2 Nov 2022 13:50:33 +0100 Subject: [PATCH 21/90] fix: realtime stats --- src/lib/charts/base.svelte | 1 + src/lib/layout/usage.svelte | 72 ++++++++++--------- .../console/project-[project]/+layout.svelte | 21 ++++++ .../project-[project]/overview/+layout.svelte | 64 +++++++++-------- src/routes/console/project-[project]/store.ts | 36 +++++++++- 5 files changed, 132 insertions(+), 62 deletions(-) diff --git a/src/lib/charts/base.svelte b/src/lib/charts/base.svelte index 54d8e2907..91a5064a0 100644 --- a/src/lib/charts/base.svelte +++ b/src/lib/charts/base.svelte @@ -86,5 +86,6 @@ .echart { width: 100%; min-height: 12rem; + height: 100%; } diff --git a/src/lib/layout/usage.svelte b/src/lib/layout/usage.svelte index 8b07ff126..a2c5860c4 100644 --- a/src/lib/layout/usage.svelte +++ b/src/lib/layout/usage.svelte @@ -75,14 +75,16 @@ {total(created)}

    {createdMetadata.title}

    - [e.date, e.value])], - color: Colors.Secondary - } - ]} /> +
    + [e.date, e.value])], + color: Colors.Secondary + } + ]} /> +
    {/if} @@ -90,14 +92,16 @@ {total(read)}

    {readMetadata.title}

    - [e.date, e.value])], - color: Colors.Tertiary - } - ]} /> +
    + [e.date, e.value])], + color: Colors.Tertiary + } + ]} /> +
    {/if} @@ -105,14 +109,16 @@ {total(updated)}

    {updatedMetadata.title}

    - [e.date, e.value])], - color: Colors.Quaternary - } - ]} /> +
    + [e.date, e.value])], + color: Colors.Quaternary + } + ]} /> +
    {/if} @@ -120,14 +126,16 @@ {total(deleted)}

    {deletedMetadata.title}

    - [e.date, e.value])], - color: Colors.Quinary - } - ]} /> +
    + [e.date, e.value])], + color: Colors.Quinary + } + ]} /> +
    {/if} diff --git a/src/routes/console/project-[project]/+layout.svelte b/src/routes/console/project-[project]/+layout.svelte index 6b69070e6..004daed0f 100644 --- a/src/routes/console/project-[project]/+layout.svelte +++ b/src/routes/console/project-[project]/+layout.svelte @@ -1,5 +1,26 @@ diff --git a/src/routes/console/project-[project]/overview/+layout.svelte b/src/routes/console/project-[project]/overview/+layout.svelte index 87145363e..c76947b11 100644 --- a/src/routes/console/project-[project]/overview/+layout.svelte +++ b/src/routes/console/project-[project]/overview/+layout.svelte @@ -2,9 +2,7 @@ import type { Models } from '@aw-labs/appwrite-console'; import { Container, type UsagePeriods } from '$lib/layout'; import { page } from '$app/stores'; - import { browser } from '$app/environment'; - import { sdkForConsole } from '$lib/stores/sdk'; - import { project } from '../store'; + import { project, stats } from '../store'; import { usage } from './store'; import { onMount } from 'svelte'; import { afterNavigate } from '$app/navigation'; @@ -14,7 +12,7 @@ $: projectId = $page.params.project; $: path = `/console/project-${projectId}/overview`; - + $: console.log($stats.get(projectId)); let period: UsagePeriods = '30d'; let showPeriodBandwidth = false; let showPeriodRequests = false; @@ -55,15 +53,6 @@ showPeriodRequests = false; } - if (browser) { - sdkForConsole.client.subscribe('console', (message) => { - if (message.events.includes('stats.connections')) { - // TODO: take care of realtime connections - return; - } - }); - } - //TODO: workaround for broken types $: network = $usage?.network as unknown as Array<{ date: number; @@ -119,13 +108,15 @@
    {#if network.length} - [e.date, e.value])] - } - ]} /> +
    + [e.date, e.value])] + } + ]} /> +
    {/if}
    @@ -160,13 +151,15 @@
    {#if network.length} - [e.date, e.value])] - } - ]} /> +
    + [e.date, e.value])] + } + ]} /> +
    {/if}
    @@ -262,8 +255,21 @@
    -
    XX
    -
    Realtime Connections
    + {#if $stats.get(projectId)} +
    + {format($stats.get(projectId)[11][1])} +
    +
    Realtime Connections
    + + {:else} +
    waiting for realtime connections
    + {/if}
    diff --git a/src/routes/console/project-[project]/store.ts b/src/routes/console/project-[project]/store.ts index c1ca42ac1..97c2372ec 100644 --- a/src/routes/console/project-[project]/store.ts +++ b/src/routes/console/project-[project]/store.ts @@ -1,5 +1,39 @@ -import { derived } from 'svelte/store'; +import { derived, writable } from 'svelte/store'; import { page } from '$app/stores'; import type { Models } from '@aw-labs/appwrite-console'; +import type { BarSeriesOption } from 'echarts/charts'; export const project = derived(page, ($page) => $page.data.project as Models.Project); + +function createStats() { + const { subscribe, set, update } = writable>(new Map()); + + return { + subscribe, + add: (projectId: string, data: BarSeriesOption['data'][number]) => + update((n) => { + let series = n.get(projectId) ?? []; + + if (series.length === 0) { + const date = new Date(data[0]); + for (let i = 0; i < 12; i++) { + series.push([date.toISOString(), 0]); + date.setSeconds(date.getSeconds() - 5); + } + } + + series.push(data); + + if (series.length > 12) { + series = series.slice(-12); + } + + n.set(projectId, series); + + return n; + }), + reset: () => set(new Map()) + }; +} + +export const stats = createStats(); From fe096257ac3673bea5420e7776066d0704a3e8a0 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 2 Nov 2022 13:58:25 +0100 Subject: [PATCH 22/90] fix: organization dependency --- src/lib/constants.ts | 1 - src/routes/console/organization-[organization]/+layout.ts | 5 ++--- .../console/organization-[organization]/createMember.svelte | 2 +- .../members/[[page]]/+page.svelte | 2 +- .../organization-[organization]/settings/+page.svelte | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 5c2ecc465..b5169922d 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -1,7 +1,6 @@ export const PAGE_LIMIT = 12; // default page limit export const CARD_LIMIT = 6; // default card limit export enum Dependencies { - ORGANIZATION = 'organization', PROJECT = 'project', PROJECTS = 'projects', ACCOUNT = 'account', diff --git a/src/routes/console/organization-[organization]/+layout.ts b/src/routes/console/organization-[organization]/+layout.ts index c01621c39..c110b411a 100644 --- a/src/routes/console/organization-[organization]/+layout.ts +++ b/src/routes/console/organization-[organization]/+layout.ts @@ -1,12 +1,11 @@ import Header from './header.svelte'; import Breadcrumbs from './breadcrumbs.svelte'; import { sdkForConsole } from '$lib/stores/sdk'; -import { Dependencies } from '$lib/constants'; import type { LayoutLoad } from './$types'; import { error } from '@sveltejs/kit'; -export const load: LayoutLoad = async ({ params, depends }) => { - depends(Dependencies.ORGANIZATION); +export const load: LayoutLoad = async ({ params, parent }) => { + await parent(); try { return { diff --git a/src/routes/console/organization-[organization]/createMember.svelte b/src/routes/console/organization-[organization]/createMember.svelte index 8149227b5..9bd58e34e 100644 --- a/src/routes/console/organization-[organization]/createMember.svelte +++ b/src/routes/console/organization-[organization]/createMember.svelte @@ -25,7 +25,7 @@ url, name ); - invalidate(Dependencies.ORGANIZATION); + invalidate(Dependencies.ACCOUNT); showCreate = false; addNotification({ type: 'success', diff --git a/src/routes/console/organization-[organization]/members/[[page]]/+page.svelte b/src/routes/console/organization-[organization]/members/[[page]]/+page.svelte index 533842134..933317b29 100644 --- a/src/routes/console/organization-[organization]/members/[[page]]/+page.svelte +++ b/src/routes/console/organization-[organization]/members/[[page]]/+page.svelte @@ -28,7 +28,7 @@ let showDelete = false; const url = `${$page.url.origin}/console/`; - const deleted = () => invalidate(Dependencies.ORGANIZATION); + const deleted = () => invalidate(Dependencies.ACCOUNT); const resend = async (member: Models.Membership) => { try { await sdkForConsole.teams.createMembership( diff --git a/src/routes/console/organization-[organization]/settings/+page.svelte b/src/routes/console/organization-[organization]/settings/+page.svelte index da6d54c0b..7c8eb3f63 100644 --- a/src/routes/console/organization-[organization]/settings/+page.svelte +++ b/src/routes/console/organization-[organization]/settings/+page.svelte @@ -20,7 +20,7 @@ async function updateName() { try { await sdkForConsole.teams.update($organization.$id, name); - invalidate(Dependencies.ORGANIZATION); + await invalidate(Dependencies.ACCOUNT); addNotification({ message: 'Name has been updated', type: 'success' From f7a8a42cfdffa65f38f240d44f4b6c0d824ef6b2 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 13:59:26 +0100 Subject: [PATCH 23/90] feat: add docs link to console --- .../project-[project]/authentication/[[page]]/+page.svelte | 4 +++- .../authentication/teams/[[page]]/+page.svelte | 4 +++- .../project-[project]/databases/[[page]]/+page.svelte | 4 +++- .../databases/database-[database]/[[page]]/+page.svelte | 4 +++- .../functions/function-[function]/create.svelte | 7 ++++++- .../functions/function-[function]/settings/+page.svelte | 2 +- .../project-[project]/functions/wizard/step2.svelte | 6 +++++- .../project-[project]/functions/wizard/step4.svelte | 2 +- .../console/project-[project]/overview/keys/+page.svelte | 2 +- src/routes/console/project-[project]/settings/+page.svelte | 7 ++++--- .../settings/domains/[[page]]/+page.svelte | 4 +++- .../project-[project]/settings/webhooks/+page.svelte | 2 +- .../settings/webhooks/[webhook]/+page.svelte | 6 +++++- .../settings/webhooks/wizard/step3.svelte | 6 +++++- .../project-[project]/storage/[[page]]/+page.svelte | 2 +- .../storage/bucket-[bucket]/[[page]]/+page.svelte | 4 +++- 16 files changed, 48 insertions(+), 18 deletions(-) diff --git a/src/routes/console/project-[project]/authentication/[[page]]/+page.svelte b/src/routes/console/project-[project]/authentication/[[page]]/+page.svelte index 3cf47bced..a8e10179e 100644 --- a/src/routes/console/project-[project]/authentication/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/authentication/[[page]]/+page.svelte @@ -154,7 +154,9 @@

    Need a hand? Check out our documentation.

    - +
    diff --git a/src/routes/console/project-[project]/authentication/teams/[[page]]/+page.svelte b/src/routes/console/project-[project]/authentication/teams/[[page]]/+page.svelte index c0954761f..a85a29c28 100644 --- a/src/routes/console/project-[project]/authentication/teams/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/authentication/teams/[[page]]/+page.svelte @@ -109,7 +109,9 @@

    Need a hand? Check out our documentation.

    - +
    diff --git a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte index e2bf04e5d..668ca2d5f 100644 --- a/src/routes/console/project-[project]/databases/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/[[page]]/+page.svelte @@ -64,7 +64,9 @@

    Need a hand? Check out our documentation.

    - +
    diff --git a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte index 758c0952e..5f30a7c5c 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/[[page]]/+page.svelte @@ -83,7 +83,9 @@

    Need a hand? Check out our documentation.

    - +
    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 d06639530..59322faff 100644 --- a/src/routes/console/project-[project]/functions/function-[function]/create.svelte +++ b/src/routes/console/project-[project]/functions/function-[function]/create.svelte @@ -91,7 +91,12 @@ rel="noopener noreferrer" class="link">deploying your functions, or how to install and use the - Appwrite CLI. + Appwrite CLI.

    {#each ['Unix', 'CMD', 'PowerShell'] as category} 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 80841688b..9d8277102 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 @@ -384,7 +384,7 @@ Update CRON Schedule

    Set a CRON schedule to trigger your function. Leave blank for no schedule. diff --git a/src/routes/console/project-[project]/functions/wizard/step2.svelte b/src/routes/console/project-[project]/functions/wizard/step2.svelte index 4a8394c9f..5189a77c3 100644 --- a/src/routes/console/project-[project]/functions/wizard/step2.svelte +++ b/src/routes/console/project-[project]/functions/wizard/step2.svelte @@ -8,7 +8,11 @@ Execute access (optional) Choose who can execute this function using the client API. Check out our documentation for - more on + more on Permissions. diff --git a/src/routes/console/project-[project]/functions/wizard/step4.svelte b/src/routes/console/project-[project]/functions/wizard/step4.svelte index 1adcbf147..e522a2ba0 100644 --- a/src/routes/console/project-[project]/functions/wizard/step4.svelte +++ b/src/routes/console/project-[project]/functions/wizard/step4.svelte @@ -8,7 +8,7 @@ Scheduling (optional) Set a CRON schedule to trigger your function. Leave blank for no schedule. More details on CRON syntax hereNeed a hand? Check out our documentation.

    - +
    diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index dc201d527..d5abcb2fc 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -88,10 +88,11 @@ API Credentials

    Access Appwrite services using your API Endpoint and Project ID. You can connect - Appwrite to your applications and server-side code by integrating a new platform + Appwrite to your applications and server-side code by integrating a new platform or - creating an API key. + creating an API key.

    diff --git a/src/routes/console/project-[project]/settings/domains/[[page]]/+page.svelte b/src/routes/console/project-[project]/settings/domains/[[page]]/+page.svelte index de3ef195a..1ee480cfb 100644 --- a/src/routes/console/project-[project]/settings/domains/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/settings/domains/[[page]]/+page.svelte @@ -145,7 +145,9 @@

    Create your first Domain to get started

    - +
    diff --git a/src/routes/console/project-[project]/settings/webhooks/+page.svelte b/src/routes/console/project-[project]/settings/webhooks/+page.svelte index 9fb631f50..debe1fa2a 100644 --- a/src/routes/console/project-[project]/settings/webhooks/+page.svelte +++ b/src/routes/console/project-[project]/settings/webhooks/+page.svelte @@ -77,7 +77,7 @@

    Check out our documentation.

    - + 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 a71badf95..5a6b3993c 100644 --- a/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte +++ b/src/routes/console/project-[project]/settings/webhooks/[webhook]/+page.svelte @@ -273,7 +273,11 @@ bind:value={security}> Warning: Untrusted or self-signed certificates may not be secure. - + Learn more diff --git a/src/routes/console/project-[project]/settings/webhooks/wizard/step3.svelte b/src/routes/console/project-[project]/settings/webhooks/wizard/step3.svelte index 4403ef024..0e669d50b 100644 --- a/src/routes/console/project-[project]/settings/webhooks/wizard/step3.svelte +++ b/src/routes/console/project-[project]/settings/webhooks/wizard/step3.svelte @@ -34,7 +34,11 @@ bind:value={$createWebhook.security}> Warning: Untrusted or self-signed certificates may not be secure. - + Learn more diff --git a/src/routes/console/project-[project]/storage/[[page]]/+page.svelte b/src/routes/console/project-[project]/storage/[[page]]/+page.svelte index 9a4563fba..6bde9181d 100644 --- a/src/routes/console/project-[project]/storage/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/storage/[[page]]/+page.svelte @@ -97,7 +97,7 @@

    Need a hand? Check out our documentation.

    - +
    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 8afe06ef2..26c2efd9b 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 @@ -197,7 +197,9 @@

    Need a hand? Check out our documentation.

    - +
    From 02e1862e8f539ea3f6f4a70dffa3e0d71111fb98 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 2 Nov 2022 14:37:06 +0100 Subject: [PATCH 24/90] fix: titles on reload --- src/routes/console/+layout.svelte | 4 ---- .../console/project-[project]/authentication/+layout.svelte | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/console/+layout.svelte b/src/routes/console/+layout.svelte index 0914ae989..0a74063a9 100644 --- a/src/routes/console/+layout.svelte +++ b/src/routes/console/+layout.svelte @@ -26,10 +26,6 @@ } - - Console - Appwrite - - + Authentication - Appwrite + + From 146fe201bb09a86b72e5f1aa082a4e3f54500c22 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 14:43:39 +0100 Subject: [PATCH 25/90] fix: code bg, bucket setting layout --- src/lib/components/code.svelte | 2 +- .../bucket-[bucket]/settings/+page.svelte | 29 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/lib/components/code.svelte b/src/lib/components/code.svelte index f8ac3d894..707fd5e87 100644 --- a/src/lib/components/code.svelte +++ b/src/lib/components/code.svelte @@ -58,7 +58,7 @@ @import 'prismjs/themes/prism.css'; .box { - --p-box-background-color: var(--color-neutral-300) !important; + --p-box-background-color: var(--color-neutral-400) !important; body.theme-light & { --p-box-background-color: var(--color-neutral-5) !important; 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 a65a043eb..498eb674b 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 @@ -9,7 +9,8 @@ InputTags, InputNumber, InputSelect, - InputSwitch + InputSwitch, + FormList } from '$lib/elements/forms'; import { bucket } from '../store'; import { toLocaleDateTime } from '$lib/helpers/date'; @@ -208,14 +209,16 @@ {$bucket.name} -
      - -
    -

    Created: {toLocaleDateTime($bucket.$createdAt)}

    -

    Last Updated: {toLocaleDateTime($bucket.$updatedAt)}

    +
    + + + +

    Created: {toLocaleDateTime($bucket.$createdAt)}

    +

    Last Updated: {toLocaleDateTime($bucket.$updatedAt)}

    +
    @@ -228,14 +231,14 @@ Update Name -
      + -
    +
    @@ -296,7 +299,7 @@ and Antivirus scanning.

    -
      +
    • -
    +
    From 7ee39005e7b77ee76f890fc5542e15a83c8f19d4 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 14:50:10 +0100 Subject: [PATCH 26/90] fix: inner modal --- src/lib/components/innerModal.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/innerModal.svelte b/src/lib/components/innerModal.svelte index 96b170423..b2d488dce 100644 --- a/src/lib/components/innerModal.svelte +++ b/src/lib/components/innerModal.svelte @@ -1,5 +1,5 @@ From 08fa252ee75c83c0e6b712cf3644912a6e5143c2 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 16:20:29 +0100 Subject: [PATCH 27/90] fix: roles --- src/lib/components/permissions/roles.svelte | 22 +++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/lib/components/permissions/roles.svelte b/src/lib/components/permissions/roles.svelte index 62f5aeed2..2bcca253f 100644 --- a/src/lib/components/permissions/roles.svelte +++ b/src/lib/components/permissions/roles.svelte @@ -71,16 +71,34 @@ return n; }); } + + function sortRoles(a: string, b: string) { + if ((a === 'any') !== (b === 'any')) { + return a === 'any' ? -1 : 1; + } + if ((a === 'users') !== (b === 'users')) { + return a === 'users' ? -1 : 1; + } + if ((a === 'guests') !== (b === 'guests')) { + return a === 'guests' ? -1 : 1; + } + + return a.localeCompare(b); + } + + $: if (roles) { + roles.forEach(addRole); + } -{#if roles?.length} +{#if [...$groups.keys()]?.length}
    Role - {#each [...$groups.keys()] as role} + {#each [...$groups.keys()].sort(sortRoles) as role} From aee3b7682e1c0ec7e37b59a294d590b0a6fc41aa Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 16:52:42 +0100 Subject: [PATCH 28/90] feat: add title to indexes page --- .../collection-[collection]/indexes/+page.svelte | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte index 377c17561..eece6ef68 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte @@ -1,5 +1,5 @@ +
    + Indexes + + +
    + {#if data.indexes.total}
    From 80641249f4afc3cc6208e595cfbc9f782cd9dfa4 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 2 Nov 2022 17:12:39 +0100 Subject: [PATCH 29/90] fix: data for attributes and indexes --- src/lib/constants.ts | 2 -- .../collection-[collection]/+layout.ts | 2 +- .../attributes/+page.svelte | 11 ++++------- .../attributes/+page.ts | 19 ------------------- .../attributes/createAttribute.svelte | 2 +- .../attributes/deleteAttribute.svelte | 2 +- .../indexes/+page.svelte | 16 +++++++--------- .../collection-[collection]/indexes/+page.ts | 12 ------------ .../indexes/createIndex.svelte | 2 +- .../collection-[collection]/store.ts | 1 + 10 files changed, 16 insertions(+), 53 deletions(-) delete mode 100644 src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.ts delete mode 100644 src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.ts diff --git a/src/lib/constants.ts b/src/lib/constants.ts index c6089a6c6..1c011ef74 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -16,8 +16,6 @@ export enum Dependencies { COLLECTION = 'collection', DOCUMENT = 'document', DOCUMENTS = 'documents', - ATTRIBUTES = 'attributes', - INDEXES = 'indexes', BUCKET = 'bucket', FILE = 'file', FILES = 'files', diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+layout.ts b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+layout.ts index 65447fe19..4cff24c2d 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+layout.ts +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/+layout.ts @@ -6,8 +6,8 @@ import Header from './header.svelte'; import { error } from '@sveltejs/kit'; export const load: LayoutLoad = async ({ params, parent, depends }) => { - await parent(); depends(Dependencies.COLLECTION); + await parent(); try { return { diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte index 2714091da..e63615b09 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.svelte @@ -10,16 +10,13 @@ } from '$lib/elements/table'; import { Button } from '$lib/elements/forms'; import { DropList, DropListItem, Empty, Heading } from '$lib/components'; - import type { Attributes } from '../store'; + import { attributes, type Attributes } from '../store'; import { Container } from '$lib/layout'; import { Pill } from '$lib/elements'; import Create from './createAttribute.svelte'; import CreateIndex from '../indexes/createIndex.svelte'; import Delete from './deleteAttribute.svelte'; import Overview from './overview.svelte'; - import type { PageData } from './$types'; - - export let data: PageData; let showDropdown = []; let selectedAttribute: Attributes = null; @@ -39,7 +36,7 @@ - {#if data.attributes.total} + {#if $attributes.length}
    Key @@ -48,7 +45,7 @@ - {#each data.attributes.attributes as attribute, index} + {#each $attributes as attribute, index}
    @@ -110,7 +107,7 @@
    -

    Total results: {data.attributes.total}

    +

    Total results: {$attributes.length}

    {:else} (showCreate = true)}> diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.ts b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.ts deleted file mode 100644 index 565b2e3c8..000000000 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/+page.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { sdkForProject } from '$lib/stores/sdk'; -import { Dependencies } from '$lib/constants'; -import type { PageLoad } from './$types'; -import type { Attributes } from '../store'; - -export const load: PageLoad = async ({ params, parent, depends }) => { - await parent(); - depends(Dependencies.ATTRIBUTES); - - return { - attributes: (await sdkForProject.databases.listAttributes( - params.database, - params.collection - )) as unknown as { - total: number; - attributes: Attributes[]; - } - }; -}; diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/createAttribute.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/createAttribute.svelte index 0d36d76c8..f234f1040 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/createAttribute.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/createAttribute.svelte @@ -12,7 +12,7 @@ let submitted = false; const created = async () => { - invalidate(Dependencies.ATTRIBUTES); + invalidate(Dependencies.COLLECTION); showCreate = false; }; diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/deleteAttribute.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/deleteAttribute.svelte index f3227e6f6..b866f01ec 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/deleteAttribute.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/deleteAttribute.svelte @@ -21,7 +21,7 @@ $collection.$id, selectedAttribute.key ); - invalidate(Dependencies.ATTRIBUTES); + invalidate(Dependencies.COLLECTION); showDelete = false; await goto( `${base}/console/project-${$page.params.project}/databases/database-${databaseId}/collection-${$page.params.collection}/attributes` diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte index 0613707cb..f5d2c9548 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte @@ -11,18 +11,15 @@ TableRow } from '$lib/elements/table'; import { Container } from '$lib/layout'; - import { collection } from '../store'; + import { indexes } from '../store'; import Delete from './deleteIndex.svelte'; import Create from './createIndex.svelte'; import Overview from './overviewIndex.svelte'; import type { Models } from '@aw-labs/appwrite-console'; - import type { PageData } from './$types'; import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import { Button } from '$lib/elements/forms'; - export let data: PageData; - let showDropdown = []; let selectedIndex: Models.Index = null; let showCreateIndex = false; @@ -30,7 +27,7 @@ let showDelete = false; const handleDelete = async () => { - invalidate(Dependencies.INDEXES); + invalidate(Dependencies.COLLECTION); }; @@ -43,7 +40,7 @@ Create index
    - {#if data.indexes.total} + {#if $indexes.length} Key @@ -53,7 +50,7 @@ - {#each data.indexes.indexes as index, i} + {#each $indexes as index, i}
    @@ -108,9 +105,9 @@
    -

    Total results: {data.indexes.total}

    +

    Total results: {$indexes.length}

    - {:else if $collection.indexes?.length} + {:else if $indexes?.length} (showCreateIndex = true)}>

    Create your first attribute to get started

    @@ -122,6 +119,7 @@ + {#if selectedIndex} diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.ts b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.ts deleted file mode 100644 index 48cb2571d..000000000 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/+page.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { sdkForProject } from '$lib/stores/sdk'; -import { Dependencies } from '$lib/constants'; -import type { PageLoad } from './$types'; - -export const load: PageLoad = async ({ params, parent, depends }) => { - await parent(); - depends(Dependencies.INDEXES); - - return { - indexes: await sdkForProject.databases.listIndexes(params.database, params.collection) - }; -}; 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 eb59fe3ad..d87c1e4aa 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 @@ -57,7 +57,7 @@ attributeList.map((a) => a.value), attributeList.map((a) => a.order) ); - invalidate(Dependencies.INDEXES); + invalidate(Dependencies.COLLECTION); addNotification({ message: 'Index created!', type: 'success' diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/store.ts index ee7b13498..6d30597ee 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/store.ts +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -21,3 +21,4 @@ export const attributes = derived( page, ($page) => $page.data.collection.attributes as Attributes[] ); +export const indexes = derived(page, ($page) => $page.data.collection.indexes as Models.Index[]); From 0dca33b98183c03fa75f8bb4d5c18ffda1ff8d11 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 17:13:40 +0100 Subject: [PATCH 30/90] typo fix --- .../function-[function]/executions/[[page]]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/functions/function-[function]/executions/[[page]]/+page.svelte b/src/routes/console/project-[project]/functions/function-[function]/executions/[[page]]/+page.svelte index 55ce97ab9..b0d11a087 100644 --- a/src/routes/console/project-[project]/functions/function-[function]/executions/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/functions/function-[function]/executions/[[page]]/+page.svelte @@ -37,7 +37,7 @@ Status Trigger Type - Execution Time + Duration {#each data.executions.executions as execution} From 1ee1aa00a3a62d9ec4f19778c09df586bd43491e Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 2 Nov 2022 17:26:13 +0100 Subject: [PATCH 31/90] fix: copy input --- src/lib/components/copyInput.svelte | 32 +++++++++++++++-------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/lib/components/copyInput.svelte b/src/lib/components/copyInput.svelte index 38e63c34c..65bd6bb81 100644 --- a/src/lib/components/copyInput.svelte +++ b/src/lib/components/copyInput.svelte @@ -22,21 +22,23 @@ }; -
    +
    - -
    - +
    + +
    + +
    From d231e9c15b7bdc8b32a94590d7915a376e2c9426 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 3 Nov 2022 10:24:19 +0100 Subject: [PATCH 32/90] feat: add missing notification messages --- .../console/project-[project]/databases/_create.svelte | 6 +++++- .../attributes/createAttribute.svelte | 5 +++++ .../attributes/deleteAttribute.svelte | 4 ++++ .../document-[document]/delete.svelte | 4 ++++ .../collection-[collection]/indexes/createIndex.svelte | 2 +- .../collection-[collection]/indexes/deleteIndex.svelte | 4 ++++ .../settings/deleteCollection.svelte | 4 ++++ .../databases/database-[database]/delete.svelte | 4 ++++ .../project-[project]/functions/createFunction.svelte | 2 +- .../storage/bucket-[bucket]/_deleteBucket.svelte | 4 ++++ .../storage/bucket-[bucket]/_deleteFile.svelte | 4 ++++ .../project-[project]/storage/bucket-[bucket]/create.svelte | 5 +++++ .../storage/bucket-[bucket]/file-[file]/deleteFile.svelte | 4 ++++ src/routes/console/project-[project]/storage/create.svelte | 5 +++++ 14 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/routes/console/project-[project]/databases/_create.svelte b/src/routes/console/project-[project]/databases/_create.svelte index eed9550f6..8c9dac6da 100644 --- a/src/routes/console/project-[project]/databases/_create.svelte +++ b/src/routes/console/project-[project]/databases/_create.svelte @@ -17,9 +17,13 @@ const create = async () => { try { const database = await sdkForProject.databases.create(id ? id : 'unique()', name); - name = id = null; showCreate = false; dispatch('created', database); + addNotification({ + type: 'success', + message: `${name} has been created` + }); + name = id = null; } catch (error) { addNotification({ type: 'error', diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/createAttribute.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/createAttribute.svelte index 0d36d76c8..8d760b070 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/createAttribute.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/createAttribute.svelte @@ -4,6 +4,7 @@ import { Button, InputText, FormList, InputSelect } from '$lib/elements/forms'; import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; + import { addNotification } from '$lib/stores/notifications'; export let showCreate = false; @@ -14,6 +15,10 @@ const created = async () => { invalidate(Dependencies.ATTRIBUTES); showCreate = false; + addNotification({ + type: 'success', + message: `Attribute has been created` + }); }; $: if (selectedOption) { diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/deleteAttribute.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/deleteAttribute.svelte index f3227e6f6..820e857e8 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/deleteAttribute.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/attributes/deleteAttribute.svelte @@ -23,6 +23,10 @@ ); invalidate(Dependencies.ATTRIBUTES); showDelete = false; + addNotification({ + type: 'success', + message: `Attribute has been deleted` + }); await goto( `${base}/console/project-${$page.params.project}/databases/database-${databaseId}/collection-${$page.params.collection}/attributes` ); diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/document-[document]/delete.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/document-[document]/delete.svelte index 7fcc6a4c4..e69daa4c5 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/document-[document]/delete.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/document-[document]/delete.svelte @@ -20,6 +20,10 @@ $page.params.document ); showDelete = false; + addNotification({ + type: 'success', + message: `Document has been deleted` + }); await goto( `${base}/console/project-${$page.params.project}/databases/database-${$page.params.database}/collection-${$page.params.collection}` ); 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 c8f444c73..2053b24cd 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 @@ -59,7 +59,7 @@ ); invalidate(Dependencies.INDEXES); addNotification({ - message: 'Index created!', + message: 'Index has been created', type: 'success' }); } catch (error) { diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/deleteIndex.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/deleteIndex.svelte index f4b59ec44..f33c28a36 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/deleteIndex.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/indexes/deleteIndex.svelte @@ -22,6 +22,10 @@ selectedIndex.key ); showDelete = false; + addNotification({ + type: 'success', + message: `Index has been deleted` + }); dispatch('deleted'); } catch (error) { addNotification({ diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/settings/deleteCollection.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/settings/deleteCollection.svelte index b5b57fc07..ed3246c05 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/settings/deleteCollection.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/settings/deleteCollection.svelte @@ -16,6 +16,10 @@ try { await sdkForProject.databases.deleteCollection(databaseId, $collection.$id); showDelete = false; + addNotification({ + type: 'success', + message: `${$collection.name} has been deleted` + }); await goto( `${base}/console/project-${$page.params.project}/databases/database/${$page.params.database}` ); diff --git a/src/routes/console/project-[project]/databases/database-[database]/delete.svelte b/src/routes/console/project-[project]/databases/database-[database]/delete.svelte index a82be62a9..2bbe8e69a 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/delete.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/delete.svelte @@ -15,6 +15,10 @@ try { await sdkForProject.databases.delete(databaseId); showDelete = false; + addNotification({ + type: 'success', + message: `${$database.name} has been deleted` + }); await goto(`${base}/console/project-${$page.params.project}/databases`); } catch (error) { addNotification({ diff --git a/src/routes/console/project-[project]/functions/createFunction.svelte b/src/routes/console/project-[project]/functions/createFunction.svelte index 96a756337..e2402afb3 100644 --- a/src/routes/console/project-[project]/functions/createFunction.svelte +++ b/src/routes/console/project-[project]/functions/createFunction.svelte @@ -37,7 +37,7 @@ await invalidate(Dependencies.FUNCTIONS); addNotification({ - message: 'Function has been created', + message: `${$createFunction.name} has been created`, type: 'success' }); wizard.hide(); diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/_deleteBucket.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/_deleteBucket.svelte index 3952d0d5c..3a205bc74 100644 --- a/src/routes/console/project-[project]/storage/bucket-[bucket]/_deleteBucket.svelte +++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/_deleteBucket.svelte @@ -14,6 +14,10 @@ try { await sdkForProject.storage.deleteBucket($bucket.$id); showDelete = false; + addNotification({ + type: 'success', + message: `${$bucket.name} has been deleted` + }); await goto(`${base}/console/project-${$page.params.project}/storage`); } catch (error) { addNotification({ diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/_deleteFile.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/_deleteFile.svelte index c8f934069..1d5cf7604 100644 --- a/src/routes/console/project-[project]/storage/bucket-[bucket]/_deleteFile.svelte +++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/_deleteFile.svelte @@ -16,6 +16,10 @@ await sdkForProject.storage.deleteFile(file.bucketId, file.$id); showDelete = false; dispatch('deleted', file); + addNotification({ + type: 'success', + message: `${file.name} has been deleted` + }); } catch (error) { addNotification({ type: 'error', 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 3a1fee89b..a529a4e1c 100644 --- a/src/routes/console/project-[project]/storage/bucket-[bucket]/create.svelte +++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/create.svelte @@ -9,6 +9,7 @@ import { bucket } from './store'; import { calculateSize } from '$lib/helpers/sizeConvertion'; import { Permissions } from '$lib/components/permissions'; + import { addNotification } from '$lib/stores/notifications'; export let showCreate = false; @@ -34,6 +35,10 @@ showCustomId = false; uploader.addFile(file); dispatch('created'); + addNotification({ + type: 'success', + message: `${file.name} has been created` + }); } catch ({ message }) { error = message; } diff --git a/src/routes/console/project-[project]/storage/bucket-[bucket]/file-[file]/deleteFile.svelte b/src/routes/console/project-[project]/storage/bucket-[bucket]/file-[file]/deleteFile.svelte index 3b8286a38..8ea385fa1 100644 --- a/src/routes/console/project-[project]/storage/bucket-[bucket]/file-[file]/deleteFile.svelte +++ b/src/routes/console/project-[project]/storage/bucket-[bucket]/file-[file]/deleteFile.svelte @@ -17,6 +17,10 @@ await goto( `${base}/console/project-${$page.params.project}/storage/bucket-${$file.bucketId}` ); + addNotification({ + type: 'success', + message: `${$file.name} has been deleted` + }); } catch (error) { addNotification({ type: 'error', diff --git a/src/routes/console/project-[project]/storage/create.svelte b/src/routes/console/project-[project]/storage/create.svelte index 0dda02bba..8125ba1aa 100644 --- a/src/routes/console/project-[project]/storage/create.svelte +++ b/src/routes/console/project-[project]/storage/create.svelte @@ -2,6 +2,7 @@ import { Modal, CustomId } from '$lib/components'; import { Pill } from '$lib/elements'; import { Button, InputText, FormList } from '$lib/elements/forms'; + import { addNotification } from '$lib/stores/notifications'; import { sdkForProject } from '$lib/stores/sdk'; import { createEventDispatcher } from 'svelte'; @@ -20,6 +21,10 @@ name = null; showCreate = false; dispatch('created', bucket); + addNotification({ + type: 'success', + message: `${name} has been created` + }); } catch ({ message }) { error = message; } From 24eb342fcd7f57c97ddd29e4138f071da0b9b94d Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 3 Nov 2022 10:51:14 +0100 Subject: [PATCH 33/90] feat: create component for activity page --- src/lib/layout/activity.svelte | 101 +++++++++++++++++ src/lib/layout/index.ts | 1 + .../account/activity/[[page]]/+page.svelte | 102 +----------------- .../activity/[[page]]/+page.svelte | 96 +---------------- .../activity/[[page]]/+page.svelte | 94 +--------------- .../activity/[[page]]/+page.svelte | 96 +---------------- .../activity/[[page]]/+page.svelte | 96 +---------------- 7 files changed, 117 insertions(+), 469 deletions(-) create mode 100644 src/lib/layout/activity.svelte diff --git a/src/lib/layout/activity.svelte b/src/lib/layout/activity.svelte new file mode 100644 index 000000000..802a63a76 --- /dev/null +++ b/src/lib/layout/activity.svelte @@ -0,0 +1,101 @@ + + + + {#if logs.total} + + + Client + Event + Location + IP + Date + + + {#each logs.logs as log} + + + {#if log.clientName} +
    +
    + {log.clientName} +
    + + {log.clientName} + {log.clientVersion} + on {log.osName} + {log.osVersion} + +
    + {:else} +
    + +

    Unknown

    +
    + {/if} +
    + {log.event} + + + {#if log.countryCode !== '--'} + {log.countryName} + {:else} + Unknown + {/if} + + {log.ip} + {toLocaleDateTime(log.time)} +
    + {/each} +
    +
    + {:else} + +
    +
    +

    No logs available

    +
    +
    + +
    +
    +
    + {/if} +
    +

    Total results: {logs.total}

    + +
    +
    diff --git a/src/lib/layout/index.ts b/src/lib/layout/index.ts index 227e9b8da..629bd3588 100644 --- a/src/lib/layout/index.ts +++ b/src/lib/layout/index.ts @@ -13,3 +13,4 @@ export { default as WizardStep } from './wizardStep.svelte'; export { default as Breadcrumbs } from './breadcrumbs.svelte'; export { default as Unauthenticated } from './unauthenticated.svelte'; export { default as Usage, type UsagePeriods } from './usage.svelte'; +export { default as Activity } from './activity.svelte'; diff --git a/src/routes/console/account/activity/[[page]]/+page.svelte b/src/routes/console/account/activity/[[page]]/+page.svelte index cce632015..c7f2c38da 100644 --- a/src/routes/console/account/activity/[[page]]/+page.svelte +++ b/src/routes/console/account/activity/[[page]]/+page.svelte @@ -1,105 +1,9 @@ - - {#if data.logs.total} - - - Date - Event - Client - Location - IP - - - {#each data.logs.logs as log} - - {toLocaleDateTime(log.time)} - {log.event} - - - {#if log.clientName} -
    -
    - {log.clientName} -
    -

    - {log.clientName} - {log.clientVersion} - on {log.osName} - {log.osVersion} -

    -
    - {:else} -
    - -

    Unknown

    -
    - {/if} -
    - - - {#if log.countryCode !== '--'} - {log.countryName} - {:else} - Unknown - {/if} - - {log.ip} -
    - {/each} -
    -
    - {:else} - -
    -
    -

    No logs available

    -
    -
    - -
    -
    -
    - {/if} -
    -

    Total results: {data.logs.total}

    - -
    -
    + diff --git a/src/routes/console/project-[project]/authentication/teams/team-[team]/activity/[[page]]/+page.svelte b/src/routes/console/project-[project]/authentication/teams/team-[team]/activity/[[page]]/+page.svelte index b624f59d9..6dfde400f 100644 --- a/src/routes/console/project-[project]/authentication/teams/team-[team]/activity/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/authentication/teams/team-[team]/activity/[[page]]/+page.svelte @@ -1,100 +1,10 @@ - - {#if data.logs.total} - - - Client - Event - Location - IP - Date - - - {#each data.logs.logs as log} - - - {#if log.clientName} -
    -
    - {log.clientName} -
    -

    - {log.clientName} - {log.clientVersion} - on {log.osName} - {log.osVersion} -

    -
    - {:else} -
    -

    - - Unknown -

    -
    - {/if} -
    - {log.event} - - {#if log.countryCode !== '--'} - {log.countryName} - {:else} - Unknown - {/if} - - {log.ip} - {toLocaleDateTime(log.time)} -
    - {/each} -
    -
    - {:else} - -
    -
    -

    No logs available

    -
    -
    - -
    -
    -
    - {/if} -
    -

    Total results: {data.logs.total}

    - -
    -
    + diff --git a/src/routes/console/project-[project]/authentication/user-[user]/activity/[[page]]/+page.svelte b/src/routes/console/project-[project]/authentication/user-[user]/activity/[[page]]/+page.svelte index cf8154ed6..529766497 100644 --- a/src/routes/console/project-[project]/authentication/user-[user]/activity/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user-[user]/activity/[[page]]/+page.svelte @@ -1,98 +1,10 @@ - - {#if data.logs.total} - - - Client - Event - Location - IP - Date - - - {#each data.logs.logs as log} - - - {#if log.clientName} -
    -
    - {log.clientName} -
    -

    - {log.clientName} - {log.clientVersion} - on {log.osName} - {log.osVersion} -

    -
    - {:else} -
    -

    - - - Unknown -

    -
    - {/if} -
    - {log.event} - - - {#if log.countryCode !== '--'} - {log.countryName} - {:else} - Unknown - {/if} - - {log.ip} - {toLocaleDateTime(log.time)} -
    - {/each} -
    -
    - {:else} - -

    No logs available

    - -
    - {/if} -
    -

    Total results: {data.logs.total}

    - -
    -
    + diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/activity/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/activity/[[page]]/+page.svelte index 9426dfff0..e7d9fb947 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/activity/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/activity/[[page]]/+page.svelte @@ -1,100 +1,10 @@ - - {#if data.logs.total} - - - Client - Event - Location - IP - Date - - - {#each data.logs.logs as log} - - - {#if log.clientName} -
    -
    - {log.clientName} -
    -

    - {log.clientName} - {log.clientVersion} - on {log.osName} - {log.osVersion} -

    -
    - {:else} -
    -

    - - Unknown -

    -
    - {/if} -
    - {log.event} - - {#if log.countryCode !== '--'} - {log.countryName} - {:else} - Unknown - {/if} - - {log.ip} - {toLocaleDateTime(log.time)} -
    - {/each} -
    -
    - {:else} - -
    -
    -

    No logs available

    -
    -
    - -
    -
    -
    - {/if} -
    -

    Total results: {data.logs.total}

    - -
    -
    + diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/document-[document]/activity/[[page]]/+page.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/document-[document]/activity/[[page]]/+page.svelte index 9426dfff0..e7d9fb947 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/document-[document]/activity/[[page]]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/document-[document]/activity/[[page]]/+page.svelte @@ -1,100 +1,10 @@ - - {#if data.logs.total} - - - Client - Event - Location - IP - Date - - - {#each data.logs.logs as log} - - - {#if log.clientName} -
    -
    - {log.clientName} -
    -

    - {log.clientName} - {log.clientVersion} - on {log.osName} - {log.osVersion} -

    -
    - {:else} -
    -

    - - Unknown -

    -
    - {/if} -
    - {log.event} - - {#if log.countryCode !== '--'} - {log.countryName} - {:else} - Unknown - {/if} - - {log.ip} - {toLocaleDateTime(log.time)} -
    - {/each} -
    -
    - {:else} - -
    -
    -

    No logs available

    -
    -
    - -
    -
    -
    - {/if} -
    -

    Total results: {data.logs.total}

    - -
    -
    + From e843aab8d8d724ebab7a06d43aff18bef8459566 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 3 Nov 2022 11:47:41 +0100 Subject: [PATCH 34/90] fix: code snippets --- src/lib/components/code.svelte | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/lib/components/code.svelte b/src/lib/components/code.svelte index 707fd5e87..24debe415 100644 --- a/src/lib/components/code.svelte +++ b/src/lib/components/code.svelte @@ -10,7 +10,6 @@ import 'prismjs/plugins/autoloader/prism-autoloader'; import 'prismjs/plugins/custom-class/prism-custom-class'; import 'prismjs/plugins/line-numbers/prism-line-numbers'; - import 'prismjs/plugins/line-numbers/prism-line-numbers.css'; import { afterUpdate } from 'svelte'; import { Copy } from '.'; @@ -49,13 +48,13 @@ {/if}
    -
    -        {code}
    -    
    +
    {code}
  • diff --git a/src/lib/constants.ts b/src/lib/constants.ts index db195e23c..f2f483edc 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -32,7 +32,11 @@ export enum Dependencies { WEBHOOKS = 'webhooks' } -export const scopes = [ +export const scopes: { + scope: string; + description: string; + category: string; +}[] = [ { scope: 'users.read', description: "Access to read your project's users", diff --git a/src/lib/stores/oauth-providers.ts b/src/lib/stores/oauth-providers.ts index e897255ed..64b254b00 100644 --- a/src/lib/stores/oauth-providers.ts +++ b/src/lib/stores/oauth-providers.ts @@ -26,7 +26,6 @@ const setProviders = (project: Models.Project): Provider[] => { switch (n.name.toLowerCase()) { case 'amazon': - console.log(n); docs = 'https://developer.amazon.com/apps-and-games/services-and-apis'; break; case 'apple': diff --git a/src/routes/console/project-[project]/functions/createFunction.svelte b/src/routes/console/project-[project]/functions/createFunction.svelte index e2402afb3..10d04101b 100644 --- a/src/routes/console/project-[project]/functions/createFunction.svelte +++ b/src/routes/console/project-[project]/functions/createFunction.svelte @@ -15,11 +15,9 @@ import { Dependencies } from '$lib/constants'; async function onFinish() { - console.log(2); await invalidate(Dependencies.FUNCTIONS); } async function create() { - console.log(1); try { const response = await sdkForProject.functions.create( $createFunction.id ?? 'unique()', diff --git a/src/routes/console/project-[project]/overview/+layout.svelte b/src/routes/console/project-[project]/overview/+layout.svelte index c76947b11..92681887a 100644 --- a/src/routes/console/project-[project]/overview/+layout.svelte +++ b/src/routes/console/project-[project]/overview/+layout.svelte @@ -12,7 +12,6 @@ $: projectId = $page.params.project; $: path = `/console/project-${projectId}/overview`; - $: console.log($stats.get(projectId)); let period: UsagePeriods = '30d'; let showPeriodBandwidth = false; let showPeriodRequests = false; diff --git a/src/routes/console/project-[project]/overview/keys/+page.svelte b/src/routes/console/project-[project]/overview/keys/+page.svelte index c75cc7ec9..cba2e3ed9 100644 --- a/src/routes/console/project-[project]/overview/keys/+page.svelte +++ b/src/routes/console/project-[project]/overview/keys/+page.svelte @@ -10,16 +10,21 @@ TableRowLink } from '$lib/elements/table'; import { toLocaleDateTime } from '$lib/helpers/date'; + import { wizard } from '$lib/stores/wizard'; import type { PageData } from './$types'; - import Create from './create.svelte'; + import Wizard from './wizard.svelte'; + export let data: PageData; - let show = false; + + function create() { + wizard.start(Wizard); + }
    API Keys - @@ -32,7 +37,7 @@ Name last accessed expiration date - clients + scopes {#each data.keys.keys as key} @@ -44,15 +49,17 @@ {key.accessedAt ? toLocaleDateTime(key.accessedAt) : 'never'} - {toLocaleDateTime(key.$updatedAt)} + {key.expire ? toLocaleDateTime(key.expire) : 'never'} + + + {key.scopes.length} Scopes - {/each} {:else} - (show = true)}> +

    Create your first API Key to get started

    Need a hand? Check out our documentation.

    @@ -63,5 +70,3 @@
    {/if} - - diff --git a/src/routes/console/project-[project]/overview/keys/create.svelte b/src/routes/console/project-[project]/overview/keys/create.svelte deleted file mode 100644 index dea215fe2..000000000 --- a/src/routes/console/project-[project]/overview/keys/create.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - - Create API Key - - - - - - - - - diff --git a/src/routes/console/project-[project]/overview/keys/scopes.svelte b/src/routes/console/project-[project]/overview/keys/scopes.svelte index d60f14730..da649acfb 100644 --- a/src/routes/console/project-[project]/overview/keys/scopes.svelte +++ b/src/routes/console/project-[project]/overview/keys/scopes.svelte @@ -7,6 +7,14 @@ export let scopes: string[]; + enum Category { + Authentication = 'Authentication', + Database = 'Database', + Functions = 'Functions', + Storage = 'Storage', + Other = 'Other' + } + let mounted = false; onMount(() => { @@ -28,6 +36,29 @@ } } + function categoryState(category: string, s: string[]): boolean | null { + const scopesByCategory = allScopes.filter((n) => n.category === category); + const filtered = scopesByCategory.filter((n) => s.includes(n.scope)); + if (filtered.length === 0) { + return false; + } else if (filtered.length === scopesByCategory.length) { + return true; + } else { + return null; + } + } + + function onCategoryChange( + event: Event & { currentTarget: EventTarget & HTMLInputElement }, + category: Category + ) { + allScopes.forEach((s) => { + if (s.category === category) { + activeScopes[s.scope] = event.currentTarget.checked; + } + }); + } + const activeScopes = allScopes.reduce((prev, next) => { prev[next.scope] = false; @@ -54,9 +85,21 @@
    - {#each ['Authentication', 'Database', 'Functions', 'Storage', 'Other'] as category} - - {category} + {#each [Category.Authentication, Category.Database, Category.Functions, Category.Storage, Category.Other] as category} + + + {@const checked = categoryState(category, scopes)} + onCategoryChange(e, category)} /> + {category} + + + ({allScopes.filter((n) => n.category === category && scopes.includes(n.scope)) + .length} Scopes) + {#each allScopes.filter((s) => s.category === category) as scope} + import { Wizard } from '$lib/layout'; + import { beforeNavigate, goto } from '$app/navigation'; + import { wizard } from '$lib/stores/wizard'; + import type { WizardStepsType } from '$lib/layout/wizard.svelte'; + import Step1 from './wizard/step1.svelte'; + import Step2 from './wizard/step2.svelte'; + import { key } from './wizard/store'; + import { sdkForConsole } from '$lib/stores/sdk'; + import { page } from '$app/stores'; + import { addNotification } from '$lib/stores/notifications'; + + async function onFinish() { + try { + const { $id } = await sdkForConsole.projects.createKey( + $page.params.project, + $key.name, + $key.scopes, + $key.expire ?? undefined + ); + key.reset(); + goto(`/console/project-${$page.params.project}/overview/keys/${$id}`); + } catch (error) { + addNotification({ + type: 'error', + message: error.message + }); + } + } + + beforeNavigate(() => { + wizard.hide(); + }); + + const stepsComponents: WizardStepsType = new Map(); + stepsComponents.set(1, { + label: 'Details', + component: Step1 + }); + stepsComponents.set(2, { + label: 'Scopes', + component: Step2 + }); + + + diff --git a/src/routes/console/project-[project]/overview/keys/wizard/step1.svelte b/src/routes/console/project-[project]/overview/keys/wizard/step1.svelte new file mode 100644 index 000000000..3637cd145 --- /dev/null +++ b/src/routes/console/project-[project]/overview/keys/wizard/step1.svelte @@ -0,0 +1,19 @@ + + + + Create an API Key + Let's create an API Key. + + + + + diff --git a/src/routes/console/project-[project]/overview/keys/wizard/step2.svelte b/src/routes/console/project-[project]/overview/keys/wizard/step2.svelte new file mode 100644 index 000000000..56638e8a0 --- /dev/null +++ b/src/routes/console/project-[project]/overview/keys/wizard/step2.svelte @@ -0,0 +1,17 @@ + + + + Add Scopes + + Choose which permission scopes to grant your application. It is best practice to allow only + the permissions you need to meet your project goals. + + + + + diff --git a/src/routes/console/project-[project]/overview/keys/wizard/store.ts b/src/routes/console/project-[project]/overview/keys/wizard/store.ts new file mode 100644 index 000000000..148e58193 --- /dev/null +++ b/src/routes/console/project-[project]/overview/keys/wizard/store.ts @@ -0,0 +1,25 @@ +import { writable } from 'svelte/store'; +import type { Models } from '@aw-labs/appwrite-console'; + +function createKeyStore() { + const { subscribe, update, set } = writable>({ + name: null, + expire: null, + scopes: [] + }); + + return { + subscribe, + update, + set, + reset() { + set({ + name: null, + expire: null, + scopes: [] + }); + } + }; +} + +export const key = createKeyStore(); From faf7fd585db8cef1894a82d6027224a5f84de88a Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Thu, 3 Nov 2022 14:20:39 +0100 Subject: [PATCH 37/90] fix: state dependencies --- src/lib/constants.ts | 59 ++++++++++--------- .../organization-[organization]/+layout.ts | 4 +- .../settings/+page.svelte | 2 +- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/src/lib/constants.ts b/src/lib/constants.ts index db195e23c..14f4ad826 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -1,35 +1,36 @@ export const PAGE_LIMIT = 12; // default page limit export const CARD_LIMIT = 6; // default card limit export enum Dependencies { - PROJECT = 'project', - PROJECTS = 'projects', - ACCOUNT = 'account', - ACCOUNT_SESSIONS = 'account_sessions', - USER = 'user', - USERS = 'users', - SESSIONS = 'sessions', - TEAM = 'team', - TEAMS = 'teams', - MEMBERSHIPS = 'memberships', - DATABASE = 'database', - COLLECTION = 'collection', - DOCUMENT = 'document', - DOCUMENTS = 'documents', - BUCKET = 'bucket', - FILE = 'file', - FILES = 'files', - FUNCTION = 'function', - FUNCTIONS = 'functions', - VARIABLES = 'variables', - DEPLOYMENTS = 'deployments', - EXECUTIONS = 'executions', - PLATFORM = 'platform', - PLATFORMS = 'platforms', - KEY = 'key', - KEYS = 'keys', - DOMAINS = 'domains', - WEBHOOK = 'webhook', - WEBHOOKS = 'webhooks' + ORGANIZATION = 'dependency:organization', + PROJECT = 'dependency:project', + PROJECTS = 'dependency:projects', + ACCOUNT = 'dependency:account', + ACCOUNT_SESSIONS = 'dependency:account_sessions', + USER = 'dependency:user', + USERS = 'dependency:users', + SESSIONS = 'dependency:sessions', + TEAM = 'dependency:team', + TEAMS = 'dependency:teams', + MEMBERSHIPS = 'dependency:memberships', + DATABASE = 'dependency:database', + COLLECTION = 'dependency:collection', + DOCUMENT = 'dependency:document', + DOCUMENTS = 'dependency:documents', + BUCKET = 'dependency:bucket', + FILE = 'dependency:file', + FILES = 'dependency:files', + FUNCTION = 'dependency:function', + FUNCTIONS = 'dependency:functions', + VARIABLES = 'dependency:variables', + DEPLOYMENTS = 'dependency:deployments', + EXECUTIONS = 'dependency:executions', + PLATFORM = 'dependency:platform', + PLATFORMS = 'dependency:platforms', + KEY = 'dependency:key', + KEYS = 'dependency:keys', + DOMAINS = 'dependency:domains', + WEBHOOK = 'dependency:webhook', + WEBHOOKS = 'dependency:webhooks' } export const scopes = [ diff --git a/src/routes/console/organization-[organization]/+layout.ts b/src/routes/console/organization-[organization]/+layout.ts index c110b411a..73e344c0c 100644 --- a/src/routes/console/organization-[organization]/+layout.ts +++ b/src/routes/console/organization-[organization]/+layout.ts @@ -3,9 +3,11 @@ import Breadcrumbs from './breadcrumbs.svelte'; import { sdkForConsole } from '$lib/stores/sdk'; import type { LayoutLoad } from './$types'; import { error } from '@sveltejs/kit'; +import { Dependencies } from '$lib/constants'; -export const load: LayoutLoad = async ({ params, parent }) => { +export const load: LayoutLoad = async ({ params, parent, depends }) => { await parent(); + depends(Dependencies.ORGANIZATION); try { return { diff --git a/src/routes/console/organization-[organization]/settings/+page.svelte b/src/routes/console/organization-[organization]/settings/+page.svelte index 7c8eb3f63..3e367cb4c 100644 --- a/src/routes/console/organization-[organization]/settings/+page.svelte +++ b/src/routes/console/organization-[organization]/settings/+page.svelte @@ -20,7 +20,7 @@ async function updateName() { try { await sdkForConsole.teams.update($organization.$id, name); - await invalidate(Dependencies.ACCOUNT); + await invalidate(Dependencies.ORGANIZATION); addNotification({ message: 'Name has been updated', type: 'success' From b46c48f366c586e42ee19473053ac6dbfacb42f3 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 3 Nov 2022 14:45:12 +0100 Subject: [PATCH 38/90] fix: apple platform creation --- .../overview/platforms/wizard/apple/step1.svelte | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/routes/console/project-[project]/overview/platforms/wizard/apple/step1.svelte b/src/routes/console/project-[project]/overview/platforms/wizard/apple/step1.svelte index 7478cd44f..a98f7eaae 100644 --- a/src/routes/console/project-[project]/overview/platforms/wizard/apple/step1.svelte +++ b/src/routes/console/project-[project]/overview/platforms/wizard/apple/step1.svelte @@ -1,6 +1,5 @@ - Register your Flutter app - - Note: If you are building your Flutter application for multiple devices, you will have to - follow this process for each different device. - + Register your Apple app From fc62797cbb0e8131617ba6fa46122049846538b7 Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 3 Nov 2022 14:58:25 +0100 Subject: [PATCH 39/90] feat: add sorting to enabled providers --- .../project-[project]/authentication/settings/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/authentication/settings/+page.svelte b/src/routes/console/project-[project]/authentication/settings/+page.svelte index ef4010fd9..df821ecb6 100644 --- a/src/routes/console/project-[project]/authentication/settings/+page.svelte +++ b/src/routes/console/project-[project]/authentication/settings/+page.svelte @@ -63,7 +63,7 @@

    OAuth2 Providers