From 815b7f27d3aa20c81ed908d385ade935fc58c198 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 26 Mar 2023 06:40:26 +0000 Subject: [PATCH 01/44] restructure --- src/routes/console/project-[project]/settings/+page.svelte | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 4691bea04..5c2d77e5d 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -122,9 +122,10 @@ - Services -

Choose services you wish to enable or disable.

+ Configurations + Services +

Choose services you wish to enable or disable.

    From 646ace7f042534c70a5d6a2b000b1dddcd5593ae Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 26 Mar 2023 12:52:27 +0545 Subject: [PATCH 02/44] pause resume --- .../project-[project]/settings/+page.svelte | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 5c2d77e5d..49fd03669 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -44,6 +44,36 @@ } } + async function toggleProject() { + updating = true; + try { + const path = '/projects/' + $project.$id; + await sdk.forConsole.client.call( + 'PATCH', + new URL(sdk.forConsole.client.config.endpoint + path), + { + 'content-type': 'application/json' + }, + { + paused: !($project.paused ?? false), + name: $project.name + } + ); + invalidate(Dependencies.PROJECT); + addNotification({ + type: 'success', + message: 'Project has been ' + ($project.paused ? 'resumed' : 'paused') + '.' + }); + trackEvent(Submit.ProjectUpdateName); + } catch (error) { + addNotification({ + type: 'error', + message: error.message + }); + trackError(error, Submit.ProjectUpdateName); + } + } + $: { // When project name is updated, finalize the updating flow $project.name; @@ -124,7 +154,7 @@ Configurations - Services +

    Services

    Choose services you wish to enable or disable.

    @@ -141,6 +171,14 @@
+
+
+

Pause Project

+

While paused, you will not be able to make API requests.

+
+ +
From 73a1a4c08e0e55267abe87786711546df114db50 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 26 Mar 2023 12:57:20 +0545 Subject: [PATCH 03/44] paused tag --- src/routes/console/organization-[organization]/+page.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/routes/console/organization-[organization]/+page.svelte b/src/routes/console/organization-[organization]/+page.svelte index 888056de7..ad54b0778 100644 --- a/src/routes/console/organization-[organization]/+page.svelte +++ b/src/routes/console/organization-[organization]/+page.svelte @@ -66,6 +66,9 @@ {project.name} + {#if project.paused} + Paused + {/if} {@const platforms = filterPlatforms( project.platforms.map((platform) => getPlatformInfo(platform.type)) From f772440c57373367206191925aba20f9162b7ccf Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 26 Mar 2023 13:20:49 +0545 Subject: [PATCH 04/44] pause with dialog --- .../project-[project]/settings/+page.svelte | 9 +++++++++ .../settings/pauseProject.svelte | 20 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/routes/console/project-[project]/settings/pauseProject.svelte diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 49fd03669..736775acf 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -14,12 +14,14 @@ import { base } from '$app/paths'; import { page } from '$app/stores'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; + import PauseProject from './pauseProject.svelte'; let name: string = null; let showDelete = false; let updating = false; const endpoint = sdk.forConsole.client.config.endpoint; const projectId = $page.params.project; + let showPause = false; onMount(async () => { name ??= $project.name; @@ -45,6 +47,10 @@ } async function toggleProject() { + if (!$project.paused && !showPause) { + showPause = true; + return; + } updating = true; try { const path = '/projects/' + $project.$id; @@ -71,6 +77,8 @@ message: error.message }); trackError(error, Submit.ProjectUpdateName); + } finally { + showPause = false; } } @@ -207,3 +215,4 @@ + diff --git a/src/routes/console/project-[project]/settings/pauseProject.svelte b/src/routes/console/project-[project]/settings/pauseProject.svelte new file mode 100644 index 000000000..0ca501486 --- /dev/null +++ b/src/routes/console/project-[project]/settings/pauseProject.svelte @@ -0,0 +1,20 @@ + + + + Delete Database +

+ Are you sure you want to pause {$project.name}? While paused, you will not be able to + make API requests. +

+ + + + +
From 4072de02644776e1fa147f5095274e15dae6d38a Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 26 Mar 2023 14:18:59 +0545 Subject: [PATCH 05/44] typo and icon --- src/routes/console/organization-[organization]/+page.svelte | 3 ++- .../console/project-[project]/settings/pauseProject.svelte | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/routes/console/organization-[organization]/+page.svelte b/src/routes/console/organization-[organization]/+page.svelte index ad54b0778..43ae0d73e 100644 --- a/src/routes/console/organization-[organization]/+page.svelte +++ b/src/routes/console/organization-[organization]/+page.svelte @@ -67,7 +67,8 @@ {project.name} {#if project.paused} - Paused + + {/if} {@const platforms = filterPlatforms( diff --git a/src/routes/console/project-[project]/settings/pauseProject.svelte b/src/routes/console/project-[project]/settings/pauseProject.svelte index 0ca501486..9878c337c 100644 --- a/src/routes/console/project-[project]/settings/pauseProject.svelte +++ b/src/routes/console/project-[project]/settings/pauseProject.svelte @@ -8,7 +8,7 @@ - Delete Database + Pause Project

Are you sure you want to pause {$project.name}? While paused, you will not be able to make API requests. From c2c50a59e060b8243ad35f5fce230d61dcbe09e7 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 26 Mar 2023 14:25:01 +0545 Subject: [PATCH 06/44] fix resume also has dialog --- .../project-[project]/settings/+page.svelte | 12 ++++----- .../settings/pauseProject.svelte | 20 --------------- .../settings/toggleProject.svelte | 25 +++++++++++++++++++ 3 files changed, 31 insertions(+), 26 deletions(-) delete mode 100644 src/routes/console/project-[project]/settings/pauseProject.svelte create mode 100644 src/routes/console/project-[project]/settings/toggleProject.svelte diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 736775acf..6fd2e236e 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -14,14 +14,14 @@ import { base } from '$app/paths'; import { page } from '$app/stores'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; - import PauseProject from './pauseProject.svelte'; + import PauseProject from './toggleProject.svelte'; let name: string = null; let showDelete = false; let updating = false; const endpoint = sdk.forConsole.client.config.endpoint; const projectId = $page.params.project; - let showPause = false; + let showToggle = false; onMount(async () => { name ??= $project.name; @@ -47,8 +47,8 @@ } async function toggleProject() { - if (!$project.paused && !showPause) { - showPause = true; + if (!showToggle) { + showToggle = true; return; } updating = true; @@ -78,7 +78,7 @@ }); trackError(error, Submit.ProjectUpdateName); } finally { - showPause = false; + showToggle = false; } } @@ -215,4 +215,4 @@ - + diff --git a/src/routes/console/project-[project]/settings/pauseProject.svelte b/src/routes/console/project-[project]/settings/pauseProject.svelte deleted file mode 100644 index 9878c337c..000000000 --- a/src/routes/console/project-[project]/settings/pauseProject.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - Pause Project -

- Are you sure you want to pause {$project.name}? While paused, you will not be able to - make API requests. -

- - - - -
diff --git a/src/routes/console/project-[project]/settings/toggleProject.svelte b/src/routes/console/project-[project]/settings/toggleProject.svelte new file mode 100644 index 000000000..8e949e561 --- /dev/null +++ b/src/routes/console/project-[project]/settings/toggleProject.svelte @@ -0,0 +1,25 @@ + + + + {paused ? ' Resume' : 'Pause'} Project +

+ {#if paused} + Your project will be up-and-running again soon. + {:else} + Are you sure you want to pause {$project.name}? While paused, you will not be + able to make API requests. + {/if} +

+ + + + +
From 401403bad9f8c5245979497a5c77458bbf550b13 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Apr 2023 08:22:24 +0545 Subject: [PATCH 07/44] enable disable all services --- .../project-[project]/settings/+page.svelte | 58 +++++++++++-------- .../settings/disableAllServices.svelte | 19 ++++++ .../settings/enableAllServices.svelte | 16 +++++ .../settings/toggleProject.svelte | 25 -------- 4 files changed, 68 insertions(+), 50 deletions(-) create mode 100644 src/routes/console/project-[project]/settings/disableAllServices.svelte create mode 100644 src/routes/console/project-[project]/settings/enableAllServices.svelte delete mode 100644 src/routes/console/project-[project]/settings/toggleProject.svelte diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 6fd2e236e..a82d071c9 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -14,14 +14,16 @@ import { base } from '$app/paths'; import { page } from '$app/stores'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; - import PauseProject from './toggleProject.svelte'; + import EnableAllServices from './enableAllServices.svelte'; + import DisableAllServices from './disableAllServices.svelte'; let name: string = null; let showDelete = false; let updating = false; const endpoint = sdk.forConsole.client.config.endpoint; const projectId = $page.params.project; - let showToggle = false; + let showDisableAll = false; + let showEnableAll = false; onMount(async () => { name ??= $project.name; @@ -46,14 +48,19 @@ } } - async function toggleProject() { - if (!showToggle) { - showToggle = true; + async function toggleAllServices(status: boolean) { + if (status && !showEnableAll) { + showEnableAll = true; return; } + if (!status && !showDisableAll) { + showDisableAll = true; + return; + } + updating = true; try { - const path = '/projects/' + $project.$id; + const path = '/projects/' + $project.$id + '/service/all'; await sdk.forConsole.client.call( 'PATCH', new URL(sdk.forConsole.client.config.endpoint + path), @@ -61,24 +68,27 @@ 'content-type': 'application/json' }, { - paused: !($project.paused ?? false), - name: $project.name + status: status } ); invalidate(Dependencies.PROJECT); addNotification({ type: 'success', - message: 'Project has been ' + ($project.paused ? 'resumed' : 'paused') + '.' + message: + 'All services for' + $project.name + 'has been' + status + ? 'enabled.' + : 'disabled.' }); - trackEvent(Submit.ProjectUpdateName); + trackEvent(Submit.ProjectService); } catch (error) { addNotification({ type: 'error', message: error.message }); - trackError(error, Submit.ProjectUpdateName); + trackError(error, Submit.ProjectService); } finally { - showToggle = false; + showDisableAll = false; + showEnableAll = false; } } @@ -160,12 +170,17 @@ - Configurations + Services +

Choose services you wish to enable or disable.

-

Services

-

Choose services you wish to enable or disable.

-
+
+ | + +
+
    {#each $services.list as service} -
    -
    -

    Pause Project

    -

    While paused, you will not be able to make API requests.

    -
    - -
    @@ -215,4 +222,5 @@ - + toggleAllServices(false)} bind:show={showDisableAll} /> + toggleAllServices(true)} bind:show={showEnableAll} /> diff --git a/src/routes/console/project-[project]/settings/disableAllServices.svelte b/src/routes/console/project-[project]/settings/disableAllServices.svelte new file mode 100644 index 000000000..2774c5579 --- /dev/null +++ b/src/routes/console/project-[project]/settings/disableAllServices.svelte @@ -0,0 +1,19 @@ + + + + Disable all services +

    + Are you sure you want to disable all services? This will disable API requests to your + project. +

    + + + + +
    diff --git a/src/routes/console/project-[project]/settings/enableAllServices.svelte b/src/routes/console/project-[project]/settings/enableAllServices.svelte new file mode 100644 index 000000000..e3189a739 --- /dev/null +++ b/src/routes/console/project-[project]/settings/enableAllServices.svelte @@ -0,0 +1,16 @@ + + + + Enable all services +

    All project services will be enabled.

    + + + + +
    diff --git a/src/routes/console/project-[project]/settings/toggleProject.svelte b/src/routes/console/project-[project]/settings/toggleProject.svelte deleted file mode 100644 index 8e949e561..000000000 --- a/src/routes/console/project-[project]/settings/toggleProject.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - - {paused ? ' Resume' : 'Pause'} Project -

    - {#if paused} - Your project will be up-and-running again soon. - {:else} - Are you sure you want to pause {$project.name}? While paused, you will not be - able to make API requests. - {/if} -

    - - - - -
    From d806249f3527d46e966c2a78aa9220d71d95b2f1 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Apr 2023 08:28:10 +0545 Subject: [PATCH 08/44] fix white-space --- src/routes/console/project-[project]/settings/+page.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index a82d071c9..918e08985 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -75,9 +75,9 @@ addNotification({ type: 'success', message: - 'All services for' + $project.name + 'has been' + status + 'All services for ' + $project.name + ' has been ' + (status ? 'enabled.' - : 'disabled.' + : 'disabled.') }); trackEvent(Submit.ProjectService); } catch (error) { From 3ffd2be427c18f72474fe45e8f843184dcd9447e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Apr 2023 08:28:32 +0545 Subject: [PATCH 09/44] fix whitespace --- src/routes/console/project-[project]/settings/+page.svelte | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 918e08985..b46e3bcef 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -75,9 +75,10 @@ addNotification({ type: 'success', message: - 'All services for ' + $project.name + ' has been ' + (status - ? 'enabled.' - : 'disabled.') + 'All services for ' + + $project.name + + ' has been ' + + (status ? 'enabled.' : 'disabled.') }); trackEvent(Submit.ProjectService); } catch (error) { From b9726aa0c22f566911d5ea5c869ef652d8457cd1 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Apr 2023 08:52:18 +0545 Subject: [PATCH 10/44] button list --- .../console/project-[project]/settings/+page.svelte | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index b46e3bcef..193148a88 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -174,13 +174,17 @@ Services

    Choose services you wish to enable or disable.

    - -
    +
      +
    • | + >Enable all +
    • +
    • -
    + +
+
    {#each $services.list as service} From 42b60bf0f1e2796ef5ea27df6957a617e5630337 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Apr 2023 09:10:19 +0545 Subject: [PATCH 11/44] service status --- .../organization-[organization]/+page.svelte | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/routes/console/organization-[organization]/+page.svelte b/src/routes/console/organization-[organization]/+page.svelte index 43ae0d73e..3d9764bf5 100644 --- a/src/routes/console/organization-[organization]/+page.svelte +++ b/src/routes/console/organization-[organization]/+page.svelte @@ -8,6 +8,8 @@ import CreateOrganization from '../createOrganization.svelte'; import type { PageData } from './$types'; import { page } from '$app/stores'; + import { services } from '$lib/stores/project-services'; + import type { Models } from '@aw-labs/appwrite-console'; export let data: PageData; @@ -38,6 +40,17 @@ return { name, icon }; }; + function allServiceDisabled(project: Models.Project): boolean { + let disabled = true; + services.load(project); + $services.list.forEach((service) => { + if (service.value) { + disabled = false; + } + }); + return disabled; + } + function filterPlatforms(platforms: { name: string; icon: string }[]) { return platforms.filter( (value, index, self) => index === self.findIndex((t) => t.name === value.name) @@ -66,11 +79,12 @@ {project.name} - {#if project.paused} - - - {/if} + {#if allServiceDisabled(project)} +

    +

    + {/if} {@const platforms = filterPlatforms( project.platforms.map((platform) => getPlatformInfo(platform.type)) )} From 3020349a2aee6c025c33c40326b4aaf7fa8081d9 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 5 Apr 2023 09:19:12 +0545 Subject: [PATCH 12/44] update SDK --- src/routes/console/organization-[organization]/+page.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/console/organization-[organization]/+page.svelte b/src/routes/console/organization-[organization]/+page.svelte index 3d9764bf5..ed85e4a0b 100644 --- a/src/routes/console/organization-[organization]/+page.svelte +++ b/src/routes/console/organization-[organization]/+page.svelte @@ -9,7 +9,7 @@ import type { PageData } from './$types'; import { page } from '$app/stores'; import { services } from '$lib/stores/project-services'; - import type { Models } from '@aw-labs/appwrite-console'; + import type { Models } from '@appwrite.io/console'; export let data: PageData; @@ -40,7 +40,7 @@ return { name, icon }; }; - function allServiceDisabled(project: Models.Project): boolean { + function allServiceDisabled(project: Models.Projectj): boolean { let disabled = true; services.load(project); $services.list.forEach((service) => { From c0d16975b2196e53e1e8423f6e47a6d82cbc8d8b Mon Sep 17 00:00:00 2001 From: Arman Date: Thu, 13 Apr 2023 15:42:02 +0200 Subject: [PATCH 13/44] refactor: feedback dropdown and wizard --- .../{ => feedback}/evaluation.svelte | 0 .../feedback.svelte} | 47 +++--- .../feedback/feedbackGeneral.svelte | 19 +++ .../components/feedback/feedbackNPS.svelte | 30 ++++ src/lib/components/feedback/index.ts | 3 + src/lib/components/feedbackNPS.svelte | 78 ---------- src/lib/components/index.ts | 3 - src/lib/images/feedback/feedback-dark.svg | 138 ++++++++++++++++++ src/lib/images/feedback/feedback-light.svg | 126 ++++++++++++++++ src/lib/layout/header.svelte | 20 +-- src/lib/layout/navigation.svelte | 38 ++++- src/lib/stores/app.ts | 79 ---------- src/lib/stores/feedback.ts | 122 ++++++++++++++++ src/routes/console/+layout.svelte | 2 +- src/routes/console/feedbackWizard.svelte | 30 ++++ .../createAttribute.svelte | 2 +- .../console/wizardFeedback/step1.svelte | 39 +++++ .../console/wizardFeedback/step2.svelte | 18 +++ 18 files changed, 588 insertions(+), 206 deletions(-) rename src/lib/components/{ => feedback}/evaluation.svelte (100%) rename src/lib/components/{feedbackGeneral.svelte => feedback/feedback.svelte} (55%) create mode 100644 src/lib/components/feedback/feedbackGeneral.svelte create mode 100644 src/lib/components/feedback/feedbackNPS.svelte create mode 100644 src/lib/components/feedback/index.ts delete mode 100644 src/lib/components/feedbackNPS.svelte create mode 100644 src/lib/images/feedback/feedback-dark.svg create mode 100644 src/lib/images/feedback/feedback-light.svg create mode 100644 src/lib/stores/feedback.ts create mode 100644 src/routes/console/feedbackWizard.svelte create mode 100644 src/routes/console/wizardFeedback/step1.svelte create mode 100644 src/routes/console/wizardFeedback/step2.svelte diff --git a/src/lib/components/evaluation.svelte b/src/lib/components/feedback/evaluation.svelte similarity index 100% rename from src/lib/components/evaluation.svelte rename to src/lib/components/feedback/evaluation.svelte diff --git a/src/lib/components/feedbackGeneral.svelte b/src/lib/components/feedback/feedback.svelte similarity index 55% rename from src/lib/components/feedbackGeneral.svelte rename to src/lib/components/feedback/feedback.svelte index 7cef18c38..f9e9561d7 100644 --- a/src/lib/components/feedbackGeneral.svelte +++ b/src/lib/components/feedback/feedback.svelte @@ -1,22 +1,23 @@ + + + + + + diff --git a/src/lib/components/feedback/feedbackNPS.svelte b/src/lib/components/feedback/feedbackNPS.svelte new file mode 100644 index 000000000..613e10514 --- /dev/null +++ b/src/lib/components/feedback/feedbackNPS.svelte @@ -0,0 +1,30 @@ + + + + How likely are you to recommend Appwrite to a friend or colleague? + +{#if $feedbackData.value} + + + + + +{/if} diff --git a/src/lib/components/feedback/index.ts b/src/lib/components/feedback/index.ts new file mode 100644 index 000000000..15d522683 --- /dev/null +++ b/src/lib/components/feedback/index.ts @@ -0,0 +1,3 @@ +export { default as Feedback } from './feedback.svelte'; +export { default as FeedbackGeneral } from './feedbackGeneral.svelte'; +export { default as FeedbackNPS } from './feedbackNPS.svelte'; diff --git a/src/lib/components/feedbackNPS.svelte b/src/lib/components/feedbackNPS.svelte deleted file mode 100644 index a9276b4a7..000000000 --- a/src/lib/components/feedbackNPS.svelte +++ /dev/null @@ -1,78 +0,0 @@ - - -
    -
    -

    How are we doing?

    - -
    -
    - At Appwrite, we value the feedback of our users. That means you! We'd love to hear what you - think. -
    - - - - How likely are you to recommend Appwrite to a friend or colleague? - - {#if value} - - - - - - {/if} -
    - - -
    - -
    diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index f891b8255..f2cf6e0ee 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -31,9 +31,6 @@ export { default as Box } from './box.svelte'; export { default as Search } from './search.svelte'; export { default as SearchQuery } from './searchQuery.svelte'; export { default as GridItem1 } from './gridItem1.svelte'; -export { default as FeedbackGeneral } from './feedbackGeneral.svelte'; -export { default as FeedbackNPS } from './feedbackNPS.svelte'; -export { default as Evaluation } from './evaluation.svelte'; export { default as Steps } from './steps.svelte'; export { default as Step } from './step.svelte'; export { default as Code } from './code.svelte'; diff --git a/src/lib/images/feedback/feedback-dark.svg b/src/lib/images/feedback/feedback-dark.svg new file mode 100644 index 000000000..8f0b553d6 --- /dev/null +++ b/src/lib/images/feedback/feedback-dark.svg @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/lib/images/feedback/feedback-light.svg b/src/lib/images/feedback/feedback-light.svg new file mode 100644 index 000000000..d7ace402f --- /dev/null +++ b/src/lib/images/feedback/feedback-light.svg @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/lib/layout/header.svelte b/src/lib/layout/header.svelte index e9ec88e7f..099c1411f 100644 --- a/src/lib/layout/header.svelte +++ b/src/lib/layout/header.svelte @@ -1,26 +1,20 @@ @@ -122,6 +133,24 @@ Storage +
  • + trackEvent('click_menu_settings')} + class:is-selected={$page.url.pathname.startsWith( + `${projectPath}/settings` + )} + title="Settings" + use:tooltip={{ + content: 'Settings', + placement: 'right', + disabled: !narrow + }}> + +
@@ -129,7 +158,7 @@ {/if} diff --git a/src/lib/stores/app.ts b/src/lib/stores/app.ts index 11afe9d6a..7c4b2a184 100644 --- a/src/lib/stores/app.ts +++ b/src/lib/stores/app.ts @@ -1,5 +1,4 @@ import { browser } from '$app/environment'; -import { VARS } from '$lib/system'; import { writable } from 'svelte/store'; export type AppStore = { @@ -7,89 +6,11 @@ export type AppStore = { themeInUse: 'light' | 'dark'; }; -export type Feedback = { - elapsed: number; - visualized: number; - notification: boolean; - type: 'nps' | 'general'; - show: boolean; -}; - export const app = writable({ theme: 'auto', themeInUse: 'light' }); -function createFeedbackStore() { - const { subscribe, update } = writable({ - elapsed: browser ? parseInt(localStorage.getItem('feedbackElapsed')) : 0, - visualized: browser ? parseInt(localStorage.getItem('feedbackVisualized')) : 0, - notification: false, - type: 'general', - show: false - }); - return { - subscribe, - update, - toggleFeedback: () => { - update((feedback) => { - feedback.show = !feedback.show; - return feedback; - }); - }, - toggleNotification: () => - update((feedback) => { - feedback.notification = !feedback.notification; - return feedback; - }), - switchType: (feedType: Feedback['type']) => - update((feedback) => { - feedback.type = feedType; - return feedback; - }), - addVisualization: () => - update((feedback) => { - feedback.visualized += 1; - localStorage.setItem('feedbackVisualized', feedback.visualized.toString()); - return feedback; - }), - - increaseElapsed: (time: number) => { - update((feedback) => { - feedback.elapsed += time; - localStorage.setItem('feedbackElapsed', feedback.elapsed.toString()); - return feedback; - }); - }, - submitFeedback: async ( - subject: string, - message: string, - firstname?: string, - email?: string, - value?: number - ) => { - if (!VARS.GROWTH_ENDPOINT) return; - const response = await fetch(`${VARS.GROWTH_ENDPOINT}/feedback`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json' - }, - body: JSON.stringify({ - subject, - message, - email, - firstname: firstname ? firstname : undefined, - customFields: value ? [{ id: '40655', value }] : undefined - }) - }); - if (response.status >= 400) { - throw new Error('Failed to submit feedback'); - } - } - }; -} -export const feedback = createFeedbackStore(); - if (browser) { app.update((n) => ({ ...n, diff --git a/src/lib/stores/feedback.ts b/src/lib/stores/feedback.ts new file mode 100644 index 000000000..7afdbee52 --- /dev/null +++ b/src/lib/stores/feedback.ts @@ -0,0 +1,122 @@ +import { browser } from '$app/environment'; +import { VARS } from '$lib/system'; +import { writable } from 'svelte/store'; +import type { SvelteComponent } from 'svelte'; +import FeedbackGeneral from '$lib/components/feedback/feedbackGeneral.svelte'; +import FeedbackNps from '$lib/components/feedback/feedbackNPS.svelte'; + +export type Feedback = { + elapsed: number; + visualized: number; + notification: boolean; + type: 'nps' | 'general'; + show: boolean; +}; + +export type FeedbackData = { + message: string; + name?: string; + email?: string; + value?: number; +}; + +export const feedbackData = writable({ + message: '', + name: '', + email: '', + value: 0 +}); + +export type FeedbackOption = { + type: Feedback['type']; + title: string; + desc: string; + component: typeof SvelteComponent; +}; + +export const feedbackOptions: FeedbackOption[] = [ + { + type: 'general', + title: 'How can we improve?', + desc: 'Your feedback is important to us. Please be honest and tell us what you think.', + component: FeedbackGeneral + }, + { + type: 'nps', + title: 'How are we doing?', + desc: "At Appwrite, we value the feedback of our users. That means you! We'd love to hear what you think.", + component: FeedbackNps + } +]; + +export const selectedFeedback = writable(); + +function createFeedbackStore() { + const { subscribe, update } = writable({ + elapsed: browser ? parseInt(localStorage.getItem('feedbackElapsed')) : 0, + visualized: browser ? parseInt(localStorage.getItem('feedbackVisualized')) : 0, + notification: false, + type: 'general', + show: false + }); + return { + subscribe, + update, + toggleFeedback: () => { + update((feedback) => { + feedback.show = !feedback.show; + return feedback; + }); + }, + toggleNotification: () => + update((feedback) => { + feedback.notification = !feedback.notification; + return feedback; + }), + switchType: (feedType: Feedback['type']) => + update((feedback) => { + feedback.type = feedType; + return feedback; + }), + addVisualization: () => + update((feedback) => { + feedback.visualized += 1; + localStorage.setItem('feedbackVisualized', feedback.visualized.toString()); + return feedback; + }), + + increaseElapsed: (time: number) => { + update((feedback) => { + feedback.elapsed += time; + localStorage.setItem('feedbackElapsed', feedback.elapsed.toString()); + return feedback; + }); + }, + submitFeedback: async ( + subject: string, + message: string, + firstname?: string, + email?: string, + value?: number + ) => { + if (!VARS.GROWTH_ENDPOINT) return; + const response = await fetch(`${VARS.GROWTH_ENDPOINT}/feedback`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + subject, + message, + email, + firstname: firstname ? firstname : undefined, + customFields: value ? [{ id: '40655', value }] : undefined + }) + }); + if (response.status >= 400) { + throw new Error('Failed to submit feedback'); + } + } + }; +} +export const feedback = createFeedbackStore(); diff --git a/src/routes/console/+layout.svelte b/src/routes/console/+layout.svelte index 870794b40..04518a68c 100644 --- a/src/routes/console/+layout.svelte +++ b/src/routes/console/+layout.svelte @@ -7,7 +7,7 @@ import Header from '$lib/layout/header.svelte'; import SideNavigation from '$lib/layout/navigation.svelte'; import Shell from '$lib/layout/shell.svelte'; - import { feedback } from '$lib/stores/app'; + import { feedback } from '$lib/stores/feedback'; import { log } from '$lib/stores/logs'; import { newOrgModal } from '$lib/stores/organization'; import { wizard } from '$lib/stores/wizard'; diff --git a/src/routes/console/feedbackWizard.svelte b/src/routes/console/feedbackWizard.svelte new file mode 100644 index 000000000..44c023874 --- /dev/null +++ b/src/routes/console/feedbackWizard.svelte @@ -0,0 +1,30 @@ + + + diff --git a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/createAttribute.svelte b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/createAttribute.svelte index 8f6c64749..acc089046 100644 --- a/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/createAttribute.svelte +++ b/src/routes/console/project-[project]/databases/database-[database]/collection-[collection]/createAttribute.svelte @@ -10,7 +10,7 @@ import type { Attributes } from './store'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; import { preferences } from '$lib/stores/preferences'; - import { feedback } from '$lib/stores/app'; + import { feedback } from '$lib/stores/feedback'; export let showCreate = false; export let selectedOption: string = null; diff --git a/src/routes/console/wizardFeedback/step1.svelte b/src/routes/console/wizardFeedback/step1.svelte new file mode 100644 index 000000000..c3a665590 --- /dev/null +++ b/src/routes/console/wizardFeedback/step1.svelte @@ -0,0 +1,39 @@ + + + + {$selectedFeedback.title} + {$selectedFeedback.desc} + + + diff --git a/src/routes/console/wizardFeedback/step2.svelte b/src/routes/console/wizardFeedback/step2.svelte new file mode 100644 index 000000000..1e91272cf --- /dev/null +++ b/src/routes/console/wizardFeedback/step2.svelte @@ -0,0 +1,18 @@ + + + + Thanks for the feedback! + +
+ {#if $app.themeInUse === 'dark'} + + {:else} + + {/if} +
+
From 11cb07f0250669ef36808601c684a54539cc6c3d Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Thu, 13 Apr 2023 14:57:36 +0100 Subject: [PATCH 14/44] fix: empty db text truncating on mobile --- src/lib/components/empty.svelte | 8 +++++--- .../overview/platforms/wizard/flutter/step1.svelte | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib/components/empty.svelte b/src/lib/components/empty.svelte index ab7d091a4..23d9c89c2 100644 --- a/src/lib/components/empty.svelte +++ b/src/lib/components/empty.svelte @@ -21,7 +21,8 @@ {#if single}
-
+
+ + + From 2120d77f27964ecab7d048607c2ca9d107fc5d72 Mon Sep 17 00:00:00 2001 From: Bhaskar Singh Date: Sun, 16 Apr 2023 15:55:48 +0530 Subject: [PATCH 16/44] Updating Re-Build to Retry Build --- .../functions/function-[function]/+page.svelte | 4 ++-- .../functions/function-[function]/rebuild.svelte | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/routes/console/project-[project]/functions/function-[function]/+page.svelte b/src/routes/console/project-[project]/functions/function-[function]/+page.svelte index bbadee285..119a813a4 100644 --- a/src/routes/console/project-[project]/functions/function-[function]/+page.svelte +++ b/src/routes/console/project-[project]/functions/function-[function]/+page.svelte @@ -221,7 +221,7 @@ }}> Activate - {#if ['failed'].includes(deployment.status)} + {#if 'failed' === deployment.status} { @@ -229,7 +229,7 @@ showRebuild = true; showDropdown = []; }}> - Re-Build + Retry Build {/if} - Re-build Deployment -

Are you sure you want to re-build this deployment?

+ Retry build Deployment +

Are you sure you want to retry build this deployment?

- +
From 89263731c474b825ca9309378ceb5dfccd1cc08d Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Mon, 17 Apr 2023 11:01:37 +0100 Subject: [PATCH 17/44] refactor: code style changes --- src/lib/components/empty.svelte | 5 +++-- src/lib/layout/shell.svelte | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib/components/empty.svelte b/src/lib/components/empty.svelte index 23d9c89c2..4a3a614e3 100644 --- a/src/lib/components/empty.svelte +++ b/src/lib/components/empty.svelte @@ -41,8 +41,9 @@
- Create your first {target} to get started. + + Create your first {target} to get started. +

Need a hand? Check out our documentation.

diff --git a/src/lib/layout/shell.svelte b/src/lib/layout/shell.svelte index f4f5fd0cf..dfec2d000 100644 --- a/src/lib/layout/shell.svelte +++ b/src/lib/layout/shell.svelte @@ -92,4 +92,8 @@ grid-template-columns: auto 1fr !important; } } + + .main-content { + flex-grow: 1; + } From 25299adfc339c788ae58a48850ddc4f27029b610 Mon Sep 17 00:00:00 2001 From: Bhaskar Singh Date: Fri, 21 Apr 2023 22:25:54 +0530 Subject: [PATCH 18/44] Updated library name from @aw-labs/appwrite-console to @appwrite.io/console for rebuild.svelte --- .../functions/function-[function]/rebuild.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/functions/function-[function]/rebuild.svelte b/src/routes/console/project-[project]/functions/function-[function]/rebuild.svelte index 877a06e6c..255e50e49 100644 --- a/src/routes/console/project-[project]/functions/function-[function]/rebuild.svelte +++ b/src/routes/console/project-[project]/functions/function-[function]/rebuild.svelte @@ -4,7 +4,7 @@ import { Button } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; import { sdk } from '$lib/stores/sdk'; - import type { Models } from '@aw-labs/appwrite-console'; + import type { Models } from '@appwrite.io/console'; import { createEventDispatcher } from 'svelte'; export let showRebuild = false; From 869a084e486e27d0d8a1752b43b59503dcf1d5c3 Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Wed, 26 Apr 2023 11:42:22 +0100 Subject: [PATCH 19/44] refactor: remove footer hack --- src/lib/layout/shell.svelte | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/lib/layout/shell.svelte b/src/lib/layout/shell.svelte index dfec2d000..f4f5fd0cf 100644 --- a/src/lib/layout/shell.svelte +++ b/src/lib/layout/shell.svelte @@ -92,8 +92,4 @@ grid-template-columns: auto 1fr !important; } } - - .main-content { - flex-grow: 1; - } From 9ef1cef8d3e8936aa5a6e85622c76d85d74388e8 Mon Sep 17 00:00:00 2001 From: Bhaskar Singh Date: Wed, 26 Apr 2023 23:38:24 +0530 Subject: [PATCH 20/44] Fixing the typo for rebuild Modal --- .../functions/function-[function]/rebuild.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/console/project-[project]/functions/function-[function]/rebuild.svelte b/src/routes/console/project-[project]/functions/function-[function]/rebuild.svelte index 255e50e49..a3d1b4e1d 100644 --- a/src/routes/console/project-[project]/functions/function-[function]/rebuild.svelte +++ b/src/routes/console/project-[project]/functions/function-[function]/rebuild.svelte @@ -37,8 +37,8 @@ - Retry build Deployment -

Are you sure you want to retry build this deployment?

+ Retry build +

Are you sure you want to retry building this deployment?

From bdfcadfee321a73bec45a60312cc6a5380bfc9f7 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Tue, 9 May 2023 10:20:07 -0700 Subject: [PATCH 21/44] Replace image-item with avatar class The image-item class had a bug where the width could be incorrect causing the iamge to look squished. The new avatar class fixes this problem. --- .../project-[project]/auth/settings/+page.svelte | 14 +++++++------- .../auth/user-[user]/sessions/+page.svelte | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/routes/console/project-[project]/auth/settings/+page.svelte b/src/routes/console/project-[project]/auth/settings/+page.svelte index eba59cea4..42f640d07 100644 --- a/src/routes/console/project-[project]/auth/settings/+page.svelte +++ b/src/routes/console/project-[project]/auth/settings/+page.svelte @@ -1,17 +1,17 @@
  • {#if href} - + {:else} @@ -22,7 +82,10 @@ class="tabs-button" class:is-selected={selected} on:click|preventDefault - on:click={track}> + on:click={track} + tabindex={selected ? 0 : -1} + on:keydown={handleKeyDown} + role="tab"> {/if} diff --git a/src/lib/helpers/style.ts b/src/lib/helpers/style.ts new file mode 100644 index 000000000..fef15c8cc --- /dev/null +++ b/src/lib/helpers/style.ts @@ -0,0 +1,16 @@ +type Direction = 'rtl' | 'ltr'; + +function isDirection(dir: string): dir is Direction { + return dir === 'rtl' || dir === 'ltr'; +} + +function parseDirection(dir: string): Direction { + return isDirection(dir) ? dir : 'ltr'; +} + +export function getElementDir(el: HTMLElement): Direction { + if (window.getComputedStyle) { + return parseDirection(window.getComputedStyle(el, null).getPropertyValue('direction')); + } + return parseDirection(el.style.direction); +} From ecebcf025814d762afb3703088d4d8d31db05f25 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 16 May 2023 07:07:37 +0545 Subject: [PATCH 23/44] fix typo --- src/routes/console/organization-[organization]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/organization-[organization]/+page.svelte b/src/routes/console/organization-[organization]/+page.svelte index 9fbe8bbe9..2b5d3759b 100644 --- a/src/routes/console/organization-[organization]/+page.svelte +++ b/src/routes/console/organization-[organization]/+page.svelte @@ -40,7 +40,7 @@ return { name, icon }; }; - function allServiceDisabled(project: Models.Projectj): boolean { + function allServiceDisabled(project: Models.Project): boolean { let disabled = true; services.load(project); $services.list.forEach((service) => { From b6a8e6a190887c77f7ea4deac1a1a88733323b69 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 16 May 2023 07:08:23 +0545 Subject: [PATCH 24/44] remove unnecessary code --- src/routes/console/project-[project]/settings/+page.svelte | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 3df967027..a03e4e6e2 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -90,11 +90,6 @@ } } - $: { - // When project name is updated, finalize the updating flow - $project.name; - } - async function serviceUpdate(service: Service) { try { await sdk.forConsole.projects.updateServiceStatus( From 5061cb3b2f42f9595a01b8d23122a89dd3e8f2b9 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 16 May 2023 07:11:29 +0545 Subject: [PATCH 25/44] fix --- .../project-[project]/settings/disableAllServices.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/settings/disableAllServices.svelte b/src/routes/console/project-[project]/settings/disableAllServices.svelte index 2774c5579..1cf11235e 100644 --- a/src/routes/console/project-[project]/settings/disableAllServices.svelte +++ b/src/routes/console/project-[project]/settings/disableAllServices.svelte @@ -6,7 +6,7 @@ export let handleDisableAll; - + Disable all services

    Are you sure you want to disable all services? This will disable API requests to your From ede7a8e1b4ca7c9e88f3456bade223107c13635e Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 16 May 2023 13:55:05 +0545 Subject: [PATCH 26/44] transfer project UI --- src/lib/actions/analytics.ts | 1 + .../project-[project]/settings/+page.svelte | 33 +++++++++++ .../settings/transferProject.svelte | 59 +++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 src/routes/console/project-[project]/settings/transferProject.svelte diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 84c178cc4..b9724ff75 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -131,6 +131,7 @@ export enum Submit { ProjectCreate = 'submit_project_create', ProjectDelete = 'submit_project_delete', ProjectUpdateName = 'submit_project_update_name', + ProjectUpdateTeam = 'submit_project_update_team', ProjectService = 'submit_project_service', MemberCreate = 'submit_member_create', MemberDelete = 'submit_member_delete', diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index ccce2b50b..80c5f4e97 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -3,6 +3,7 @@ import { onMount } from 'svelte'; import { toLocaleDateTime } from '$lib/helpers/date'; import { addNotification } from '$lib/stores/notifications'; + import { organizationList } from '$lib/stores/organization'; import { project } from '../store'; import { services, type Service } from '$lib/stores/project-services'; import { CardGrid, CopyInput, Box, Heading } from '$lib/components'; @@ -14,14 +15,19 @@ import { base } from '$app/paths'; import { page } from '$app/stores'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; + import InputSelect from '$lib/elements/forms/inputSelect.svelte'; + import Transfer from './transferProject.svelte'; let name: string = null; + let teamId: string = null; let showDelete = false; + let showTransfer = false; const endpoint = sdk.forConsole.client.config.endpoint; const projectId = $page.params.project; onMount(async () => { name ??= $project.name; + teamId ??= $project.teamId; }); async function updateName() { @@ -134,7 +140,28 @@ + + Transfer project +

    Transfer your project to another organization that you own.

    + + + ({ + value: team.$id, + label: team.name + }))} /> + + + + + + +
    Delete Project @@ -160,3 +187,9 @@ +{#if teamId} + t.$id == teamId).name} + bind:show={showTransfer} /> +{/if} diff --git a/src/routes/console/project-[project]/settings/transferProject.svelte b/src/routes/console/project-[project]/settings/transferProject.svelte new file mode 100644 index 000000000..bc9c9d34a --- /dev/null +++ b/src/routes/console/project-[project]/settings/transferProject.svelte @@ -0,0 +1,59 @@ + + + + Delete Project +

    Are you sure you want to transfer {$project.name} to {teamName}?

    +

    + Members who are not part of the destination organization must be invited to gain access to + this project. +

    + + + + + +
    From 7fcba3c21c4cbbb908f67058af8f583d8fc56595 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 17 May 2023 13:16:16 +0545 Subject: [PATCH 27/44] fix import --- .../console/project-[project]/settings/+page.svelte | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 80c5f4e97..4508266b1 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -7,7 +7,14 @@ import { project } from '../store'; import { services, type Service } from '$lib/stores/project-services'; import { CardGrid, CopyInput, Box, Heading } from '$lib/components'; - import { Button, Form, FormList, InputText, InputSwitch } from '$lib/elements/forms'; + import { + Button, + Form, + FormList, + InputText, + InputSwitch, + InputSelect + } from '$lib/elements/forms'; import { Container } from '$lib/layout'; import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; @@ -15,7 +22,6 @@ import { base } from '$app/paths'; import { page } from '$app/stores'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; - import InputSelect from '$lib/elements/forms/inputSelect.svelte'; import Transfer from './transferProject.svelte'; let name: string = null; From e6d02cfdcfa52f3ab26ea0b07a3ac9ef4c799119 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 17 May 2023 13:20:22 +0545 Subject: [PATCH 28/44] fix title and design --- .../console/project-[project]/settings/transferProject.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/console/project-[project]/settings/transferProject.svelte b/src/routes/console/project-[project]/settings/transferProject.svelte index bc9c9d34a..2384b6c7e 100644 --- a/src/routes/console/project-[project]/settings/transferProject.svelte +++ b/src/routes/console/project-[project]/settings/transferProject.svelte @@ -44,8 +44,8 @@ }; - - Delete Project + + Transfer Project

    Are you sure you want to transfer {$project.name} to {teamName}?

    Members who are not part of the destination organization must be invited to gain access to From 43a0d8ebe504de99da42c20b2be5601ed100a461 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 17 May 2023 14:02:38 +0545 Subject: [PATCH 29/44] fixed --- src/routes/console/project-[project]/settings/+page.svelte | 6 ++++-- .../project-[project]/settings/transferProject.svelte | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 4508266b1..95d9a3171 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -164,8 +164,10 @@ - + diff --git a/src/routes/console/project-[project]/settings/transferProject.svelte b/src/routes/console/project-[project]/settings/transferProject.svelte index 2384b6c7e..9e16d5611 100644 --- a/src/routes/console/project-[project]/settings/transferProject.svelte +++ b/src/routes/console/project-[project]/settings/transferProject.svelte @@ -45,7 +45,7 @@ - Transfer Project + Transfer project

    Are you sure you want to transfer {$project.name} to {teamName}?

    Members who are not part of the destination organization must be invited to gain access to From 602c2268ab1ef87159f4d2c5d8b404e755960964 Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Wed, 17 May 2023 12:02:27 -0700 Subject: [PATCH 30/44] Update CONTRIBUTING.md to fix linting error --- CONTRIBUTING.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 607bb07f6..ad67fbd68 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,12 +40,15 @@ git clone https://github.com/appwrite/console.git appwrite-console ``` ### 2. Install dependencies with npm + Navigate to the Appwrite Console repository and install dependencies. + ```bash cd appwrite-console && npm install ``` ### 3. Install and run Appwrite locally + When you run the Appwrite Console locally, it needs to point to a backend as well. The easiest way to do this is to run an Appwrite instance locally. Follow the [install instructions](https://appwrite.io/docs/installation) in the Appwrite docs. From f2622f0f78beedf131b43f6fcc3bcee24495e08b Mon Sep 17 00:00:00 2001 From: Arman Date: Tue, 23 May 2023 15:05:58 +0200 Subject: [PATCH 31/44] fix: reset data after submission --- src/lib/components/feedback/feedback.svelte | 4 +-- src/lib/stores/feedback.ts | 31 ++++++++++++++++----- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/src/lib/components/feedback/feedback.svelte b/src/lib/components/feedback/feedback.svelte index f9e9561d7..98cb759bd 100644 --- a/src/lib/components/feedback/feedback.svelte +++ b/src/lib/components/feedback/feedback.svelte @@ -22,13 +22,13 @@ type: 'success', message: 'Feedback submitted successfully' }); + feedback.toggleFeedback(); + feedbackData.reset(); } catch (error) { addNotification({ type: 'error', message: error.message }); - } finally { - feedback.toggleFeedback(); } } diff --git a/src/lib/stores/feedback.ts b/src/lib/stores/feedback.ts index 7afdbee52..d63e1d2ec 100644 --- a/src/lib/stores/feedback.ts +++ b/src/lib/stores/feedback.ts @@ -20,13 +20,6 @@ export type FeedbackData = { value?: number; }; -export const feedbackData = writable({ - message: '', - name: '', - email: '', - value: 0 -}); - export type FeedbackOption = { type: Feedback['type']; title: string; @@ -51,6 +44,30 @@ export const feedbackOptions: FeedbackOption[] = [ export const selectedFeedback = writable(); +function createFeedbackDataStore() { + const { subscribe, update } = writable({ + message: '', + name: '', + email: '', + value: 0 + }); + return { + subscribe, + update, + reset: () => { + update((feedbackData) => { + feedbackData.message = ''; + feedbackData.name = ''; + feedbackData.email = ''; + feedbackData.value = 0; + return feedbackData; + }); + } + }; +} + +export const feedbackData = createFeedbackDataStore(); + function createFeedbackStore() { const { subscribe, update } = writable({ elapsed: browser ? parseInt(localStorage.getItem('feedbackElapsed')) : 0, From b3ca78f4ae0a527609e9e803f378d4d26a4cb9e1 Mon Sep 17 00:00:00 2001 From: "Vincent (Wen Yu) Ge" Date: Tue, 23 May 2023 21:38:18 +0000 Subject: [PATCH 32/44] Add custom copy for google oauth provider --- src/lib/stores/oauth-providers.ts | 2 + .../project-[project]/auth/googleOAuth.svelte | 82 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 src/routes/console/project-[project]/auth/googleOAuth.svelte diff --git a/src/lib/stores/oauth-providers.ts b/src/lib/stores/oauth-providers.ts index 8047d6bdb..40bcff26a 100644 --- a/src/lib/stores/oauth-providers.ts +++ b/src/lib/stores/oauth-providers.ts @@ -7,6 +7,7 @@ import Okta from '../../routes/console/project-[project]/auth/oktaOAuth.svelte'; import Auth0 from '../../routes/console/project-[project]/auth/auth0OAuth.svelte'; import Authentik from '../../routes/console/project-[project]/auth/authentikOAuth.svelte'; import GitLab from '../../routes/console/project-[project]/auth/gitlabOAuth.svelte'; +import Google from '../../routes/console/project-[project]/auth/googleOAuth.svelte'; import Main from '../../routes/console/project-[project]/auth/mainOAuth.svelte'; export type Provider = Models.Provider & { @@ -81,6 +82,7 @@ const setProviders = (project: Models.Project): Provider[] => { break; case 'google': docs = 'https://support.google.com/googleapi/answer/6158849'; + component = Google; break; case 'linkedin': docs = 'https://developer.linkedin.com/'; diff --git a/src/routes/console/project-[project]/auth/googleOAuth.svelte b/src/routes/console/project-[project]/auth/googleOAuth.svelte new file mode 100644 index 000000000..1b4d3c986 --- /dev/null +++ b/src/routes/console/project-[project]/auth/googleOAuth.svelte @@ -0,0 +1,82 @@ + + + + {provider.name} OAuth2 Settings + +

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

    + + + + + To complete set up, add this OAuth2 redirect URI to your {provider.name} app configuration + and select web application as the application type. + +
    +

    URI

    + +
    + + + + + +
    From 3c9f7b62b91042518d0f792056edb374665bd4b0 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 31 May 2023 17:26:14 +0200 Subject: [PATCH 33/44] run linter --- CONTRIBUTING.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 607bb07f6..ad67fbd68 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,12 +40,15 @@ git clone https://github.com/appwrite/console.git appwrite-console ``` ### 2. Install dependencies with npm + Navigate to the Appwrite Console repository and install dependencies. + ```bash cd appwrite-console && npm install ``` ### 3. Install and run Appwrite locally + When you run the Appwrite Console locally, it needs to point to a backend as well. The easiest way to do this is to run an Appwrite instance locally. Follow the [install instructions](https://appwrite.io/docs/installation) in the Appwrite docs. From ac4d003a14cfd1bbb0249d917a648013225610c1 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 31 May 2023 17:42:10 +0200 Subject: [PATCH 34/44] fix: mobile wizard not closing --- src/lib/layout/navigation.svelte | 3 +++ src/routes/console/+layout.svelte | 5 ++++- src/routes/console/feedbackWizard.svelte | 13 ++++++------- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/lib/layout/navigation.svelte b/src/lib/layout/navigation.svelte index 3b8e6b1d4..96892c26b 100644 --- a/src/lib/layout/navigation.svelte +++ b/src/lib/layout/navigation.svelte @@ -9,6 +9,8 @@ import { wizard } from '$lib/stores/wizard'; import Create from '$routes/console/feedbackWizard.svelte'; + export let isOpen = false; + $: project = $page.params.project; $: projectPath = `${base}/console/project-${project}`; @@ -32,6 +34,7 @@ } function openWizard() { + isOpen = false; wizard.start(Create); } diff --git a/src/routes/console/+layout.svelte b/src/routes/console/+layout.svelte index 04518a68c..38e74b324 100644 --- a/src/routes/console/+layout.svelte +++ b/src/routes/console/+layout.svelte @@ -15,6 +15,8 @@ import { loading } from '../store'; import Create from './createOrganization.svelte'; + let isOpen = false; + onMount(() => { loading.set(false); @@ -47,12 +49,13 @@
    - +
    {#if attribute.status !== 'available'}