diff --git a/src/routes/console/organization-[organization]/+page.svelte b/src/routes/console/organization-[organization]/+page.svelte
index d039ac7d37..2b5d3759ba 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 '@appwrite.io/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)
@@ -67,6 +80,11 @@
+ All services are disabled. +
+ {/if} {@const platforms = filterPlatforms( project.platforms.map((platform) => getPlatformInfo(platform.type)) )} diff --git a/src/routes/console/project-[project]/settings/+page.svelte b/src/routes/console/project-[project]/settings/+page.svelte index cbd241faed..699f12ddf8 100644 --- a/src/routes/console/project-[project]/settings/+page.svelte +++ b/src/routes/console/project-[project]/settings/+page.svelte @@ -22,6 +22,8 @@ import { base } from '$app/paths'; import { page } from '$app/stores'; import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; + import EnableAllServices from './enableAllServices.svelte'; + import DisableAllServices from './disableAllServices.svelte'; import Transfer from './transferProject.svelte'; let name: string = null; @@ -30,6 +32,8 @@ let showTransfer = false; const endpoint = sdk.forConsole.client.config.endpoint; const projectId = $page.params.project; + let showDisableAll = false; + let showEnableAll = false; onMount(async () => { name ??= $project.name; @@ -54,6 +58,50 @@ } } + async function toggleAllServices(status: boolean) { + if (status && !showEnableAll) { + showEnableAll = true; + return; + } + if (!status && !showDisableAll) { + showDisableAll = true; + return; + } + + try { + const path = '/projects/' + $project.$id + '/service/all'; + await sdk.forConsole.client.call( + 'PATCH', + new URL(sdk.forConsole.client.config.endpoint + path), + { + 'content-type': 'application/json' + }, + { + status: status + } + ); + invalidate(Dependencies.PROJECT); + addNotification({ + type: 'success', + message: + 'All services for ' + + $project.name + + ' has been ' + + (status ? 'enabled.' : 'disabled.') + }); + trackEvent(Submit.ProjectService); + } catch (error) { + addNotification({ + type: 'error', + message: error.message + }); + trackError(error, Submit.ProjectService); + } finally { + showDisableAll = false; + showEnableAll = false; + } + } + async function serviceUpdate(service: Service) { try { await sdk.forConsole.projects.updateServiceStatus( @@ -132,8 +180,18 @@ services are not accessible to client SDKs but remain accessible to server SDKs.