From 815b7f27d3aa20c81ed908d385ade935fc58c198 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Sun, 26 Mar 2023 06:40:26 +0000 Subject: [PATCH 01/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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 ecebcf025814d762afb3703088d4d8d31db05f25 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Tue, 16 May 2023 07:07:37 +0545 Subject: [PATCH 13/21] 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 14/21] 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 15/21] 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 16/21] 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 17/21] 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 18/21] 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 19/21] 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 10afbd9777a47a0f339da7acc833acb85bad6aae Mon Sep 17 00:00:00 2001 From: Steven Nguyen Date: Tue, 23 May 2023 10:17:15 -0700 Subject: [PATCH 20/21] Update the OAuth2 success and failure pages 1. Update design to be more consistent with other pages, while still unbranded 2. Update sizing to be more mobile friendly as the original heading size was truncated on mobile 3. Show a different message when redirecting back to the app to clarify the login was successful 4. Close the window after redirecting so the user doesn't have to --- src/routes/auth/oauth2/failure/+page.svelte | 60 ++++++++++++++++----- src/routes/auth/oauth2/success/+page.svelte | 60 ++++++++++++++++----- 2 files changed, 96 insertions(+), 24 deletions(-) diff --git a/src/routes/auth/oauth2/failure/+page.svelte b/src/routes/auth/oauth2/failure/+page.svelte index 359c6ffdc..928ad82c4 100644 --- a/src/routes/auth/oauth2/failure/+page.svelte +++ b/src/routes/auth/oauth2/failure/+page.svelte @@ -2,20 +2,56 @@ import { goto } from '$app/navigation'; import { page } from '$app/stores'; import { Heading } from '$lib/components'; - import { onMount } from 'svelte'; - onMount(async () => { - const project = $page.url.searchParams.get('project'); - if (project) { - await goto(`appwrite-callback-${project}://${$page.url.search}`); + const project = $page.url.searchParams.get('project'); + const link = `appwrite-callback-${project}://${$page.url.search}`; + + const redirect = new Promise((resolve, reject) => { + if (!project) { + reject('no-project'); } + // this timeout is needed because goto does not + // throw an exception if the redirect does not work + setTimeout(() => reject('timeout'), 500); + // goto will resolve on successful redirect + goto(link).then(resolve); }); -Missing Redirect URL -

    - Your OAuth login flow is missing a proper redirect URL. Please check the - OAuth docs - and send request for new session with a valid callback URL. -

    +{#await redirect then} +
    +
    + Login failed +

    You will be automatically redirected back to your app shortly.

    +

    + If you are not redirected, please click on the following + link. +

    +
    +
    +{:catch} +
    +
    + Missing Redirect URL +

    + Your OAuth login flow is missing a proper redirect URL. Please check the + OAuth docs + and send request for new session with a valid callback URL. +

    +
    +
    +{/await} + + diff --git a/src/routes/auth/oauth2/success/+page.svelte b/src/routes/auth/oauth2/success/+page.svelte index 359c6ffdc..b67ad0ce6 100644 --- a/src/routes/auth/oauth2/success/+page.svelte +++ b/src/routes/auth/oauth2/success/+page.svelte @@ -2,20 +2,56 @@ import { goto } from '$app/navigation'; import { page } from '$app/stores'; import { Heading } from '$lib/components'; - import { onMount } from 'svelte'; - onMount(async () => { - const project = $page.url.searchParams.get('project'); - if (project) { - await goto(`appwrite-callback-${project}://${$page.url.search}`); + const project = $page.url.searchParams.get('project'); + const link = `appwrite-callback-${project}://${$page.url.search}`; + + const redirect = new Promise((resolve, reject) => { + if (!project) { + reject('no-project'); } + // this timeout is needed because goto does not + // throw an exception if the redirect does not work + setTimeout(() => reject('timeout'), 500); + // goto will resolve on successful redirect + goto(link).then(resolve); }); -Missing Redirect URL -

    - Your OAuth login flow is missing a proper redirect URL. Please check the - OAuth docs - and send request for new session with a valid callback URL. -

    +{#await redirect then} +
    +
    + You're now logged in +

    You will be automatically redirected back to your app shortly.

    +

    + If you are not redirected, please click on the following + link. +

    +
    +
    +{:catch} +
    +
    + Missing Redirect URL +

    + Your OAuth login flow is missing a proper redirect URL. Please check the + OAuth docs + and send request for new session with a valid callback URL. +

    +
    +
    +{/await} + + From 183d5f3c25c3bc0b8b930ba629558fcfe1ced046 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 19 Jul 2023 17:27:07 +0200 Subject: [PATCH 21/21] fix: lint issues --- src/routes/console/project-[project]/settings/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index 60cb06450..699f12ddf 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -263,4 +263,4 @@ bind:teamId teamName={$organizationList.teams.find((t) => t.$id == teamId).name} bind:show={showTransfer} /> -{/if} \ No newline at end of file +{/if}