From c6529a035dbc91d01baaa26ea7a1cd65fbf32318 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 29 May 2025 13:06:15 +0530 Subject: [PATCH 1/4] refactor: URL management for project route area! --- src/lib/components/backupRestoreBox.svelte | 9 +--- src/lib/components/breadcrumbs.svelte | 6 +-- src/lib/components/csvImportBox.svelte | 5 +- src/lib/components/filePicker.svelte | 6 +-- src/lib/components/logs/loggingAlert.svelte | 8 ++-- src/lib/components/navbar.svelte | 5 +- src/lib/components/permissions/row.svelte | 6 +-- src/lib/helpers/project.ts | 47 +++++++++++++++++++ src/lib/pages/domains/index.svelte | 8 +--- .../(migration-wizard)/wizard.svelte | 6 +-- src/routes/(console)/+layout.svelte | 15 +++--- .../onboarding/create-project/+page.svelte | 4 +- .../organization-[organization]/+page.svelte | 6 +-- .../createProject.svelte | 4 +- .../createProjectCloud.svelte | 15 ++---- .../project-[region]-[project]/+layout.svelte | 20 ++++---- .../auth/+layout.svelte | 15 +++--- .../auth/+page.svelte | 16 ++----- .../auth/breadcrumbs.svelte | 5 +- .../auth/header.svelte | 4 +- .../auth/teams/+page.svelte | 15 ++---- .../auth/teams/team-[team]/breadcrumbs.svelte | 8 ++-- .../teams/team-[team]/deleteMembership.svelte | 6 +-- .../auth/teams/team-[team]/deleteTeam.svelte | 4 +- .../auth/teams/team-[team]/header.svelte | 7 ++- .../teams/team-[team]/members/+page.svelte | 9 +--- .../auth/templates/+page.svelte | 17 ++----- .../auth/templates/emailSignature.svelte | 4 +- .../auth/usage/[[period]]/+page.svelte | 5 +- .../auth/user-[user]/breadcrumbs.svelte | 8 ++-- .../auth/user-[user]/dangerZone.svelte | 5 +- .../auth/user-[user]/deleteMembership.svelte | 6 +-- .../auth/user-[user]/deleteUser.svelte | 4 +- .../auth/user-[user]/header.svelte | 6 +-- .../auth/user-[user]/memberships/+page.svelte | 8 +--- .../createVariableModal.svelte | 5 +- .../databases/+layout.svelte | 5 +- .../databases/+page.svelte | 13 ++--- .../databases/breadcrumbs.svelte | 5 +- .../database-[database]/+layout.svelte | 33 ++++--------- .../database-[database]/breadcrumbs.svelte | 7 +-- .../collection-[collection]/+layout.svelte | 43 ++++++++++++----- .../collection-[collection]/+page.svelte | 14 ++++-- .../attributes/+page.svelte | 7 +-- .../attributes/deleteAttribute.svelte | 6 ++- .../attributes/edit.svelte | 6 ++- .../breadcrumbs.svelte | 11 +++-- .../create/+page.svelte | 10 ++-- .../createAttribute.svelte | 6 ++- .../document-[document]/breadcrumbs.svelte | 13 +++-- .../document-[document]/delete.svelte | 6 ++- .../document-[document]/header.svelte | 9 ++-- .../collection-[collection]/header.svelte | 7 ++- .../indexes/createIndex.svelte | 6 ++- .../relationshipsModal.svelte | 6 ++- .../settings/deleteCollection.svelte | 6 +-- .../subNavigation.svelte | 20 ++++---- .../collection-[collection]/table.svelte | 10 ++-- .../usage/[[period]]/+page.svelte | 6 ++- .../database-[database]/delete.svelte | 4 +- .../databases/database-[database]/grid.svelte | 9 ++-- .../database-[database]/header.svelte | 7 ++- .../database-[database]/table.svelte | 6 ++- .../usage/[[period]]/+page.svelte | 6 +-- .../databases/grid.svelte | 7 +-- .../databases/header.svelte | 5 +- .../databases/table.svelte | 7 +-- .../databases/usage/[[period]]/+page.svelte | 9 ++-- .../functions/+page.svelte | 34 +++++--------- .../functions/breadcrumbs.svelte | 6 +-- .../functions/create-function/+page.svelte | 6 +-- .../create-function/manual/+page.svelte | 8 ++-- .../repository-[repository]/+page.svelte | 12 ++--- .../repository-[repository]/repoCard.svelte | 9 +--- .../template-[template]/+page.svelte | 12 ++--- .../(components)/deploymentCard.svelte | 7 +-- .../(modals)/redeployModal.svelte | 4 +- .../function-[function]/+layout.svelte | 41 +++++----------- .../function-[function]/+page.svelte | 13 +++-- .../function-[function]/breadcrumbs.svelte | 8 ++-- .../deployment-[deployment]/+page.svelte | 6 ++- .../breadcrumbs.svelte | 11 +++-- .../deployment-[deployment]/header.svelte | 8 ++-- .../function-[function]/domains/+page.svelte | 7 ++- .../domains/add-domain/+page.svelte | 4 +- .../add-domain/verify-[domain]/+page.svelte | 4 +- .../executions/+page.svelte | 11 +++-- .../executions/execute-function/+page.svelte | 10 ++-- .../function-[function]/header.svelte | 7 ++- .../function-[function]/redeployModal.svelte | 6 ++- .../settings/deleteModal.svelte | 4 +- .../settings/executeFunction.svelte | 5 +- .../function-[function]/table.svelte | 6 ++- .../usage/[[period]]/+page.svelte | 12 ++--- .../functions/header.svelte | 5 +- .../functions/templates/+page.svelte | 10 ++-- .../template-[template]/+page.svelte | 7 +-- .../template-[template]/header.svelte | 6 +-- .../functions/usage/[[period]]/+page.svelte | 5 +- .../messaging/+layout.svelte | 7 ++- .../messaging/+page.svelte | 8 ++-- .../messaging/breadcrumbs.svelte | 6 +-- .../create-[type]/(type)/email.svelte | 8 ++-- .../create-[type]/(type)/push.svelte | 8 ++-- .../messaging/create-[type]/(type)/sms.svelte | 8 ++-- .../messaging/create.svelte | 7 +-- .../messaging/createMessageDropdown.svelte | 5 +- .../messaging/header.svelte | 4 +- .../message-[message]/breadcrumbs.svelte | 6 +-- .../message-[message]/deleteModal.svelte | 4 +- .../messaging/message-[message]/header.svelte | 7 +-- .../messaging/providers/+page.svelte | 9 +--- .../messaging/providers/create.svelte | 7 +-- .../provider-[provider]/breadcrumbs.svelte | 7 +-- .../provider-[provider]/dangerZone.svelte | 11 ++--- .../provider-[provider]/deleteProvider.svelte | 6 +-- .../provider-[provider]/header.svelte | 9 ++-- .../messaging/providers/table.svelte | 5 +- .../messaging/topics/+page.svelte | 15 ++---- .../messaging/topics/table.svelte | 4 +- .../topics/topic-[topic]/+layout.svelte | 17 ++----- .../topics/topic-[topic]/+page.svelte | 4 +- .../topics/topic-[topic]/breadcrumbs.svelte | 7 +-- .../topics/topic-[topic]/deleteTopic.svelte | 6 +-- .../topics/topic-[topic]/header.svelte | 11 ++--- .../topics/topic-[topic]/table.svelte | 5 +- .../overview/(components)/create.svelte | 8 ++-- .../overview/(components)/delete.svelte | 6 +-- .../overview/(components)/deleteBatch.svelte | 6 +-- .../overview/(components)/table.svelte | 7 +-- .../overview/+layout.svelte | 12 ++--- .../overview/breadcrumbs.svelte | 4 +- .../dev-keys/[key]/breadcrumbs.svelte | 8 ++-- .../overview/dev-keys/[key]/header.svelte | 6 +-- .../overview/dev-keys/action.svelte | 6 +-- .../overview/header.svelte | 4 +- .../overview/keys/[key]/breadcrumbs.svelte | 8 ++-- .../overview/keys/[key]/header.svelte | 9 ++-- .../overview/keys/action.svelte | 6 +-- .../overview/onboard.svelte | 21 +++++---- .../overview/platforms/+page.svelte | 5 +- .../platforms/[platform]/breadcrumbs.svelte | 7 +-- .../platforms/[platform]/delete.svelte | 4 +- .../platforms/[platform]/header.svelte | 9 ++-- .../settings/+layout.svelte | 10 ++-- .../settings/breadcrumbs.svelte | 6 +-- .../settings/domains/+page.svelte | 6 +-- .../settings/domains/add-domain/+page.svelte | 4 +- .../add-domain/verify-[domain]/+page.svelte | 4 +- .../settings/header.svelte | 4 +- .../settings/smtp/+page.svelte | 5 +- .../settings/updateName.svelte | 9 +--- .../settings/usage/[[invoice]]/+page.svelte | 5 +- .../settings/webhooks/+page.svelte | 16 ++----- .../webhooks/[webhook]/breadcrumbs.svelte | 8 ++-- .../settings/webhooks/[webhook]/delete.svelte | 4 +- .../settings/webhooks/[webhook]/header.svelte | 9 ++-- .../settings/webhooks/create/+page.svelte | 9 ++-- .../settings/webhooks/failedModal.svelte | 11 +---- .../sites/breadcrumbs.svelte | 6 +-- .../create-site/createVariableModal.svelte | 7 +-- .../sites/create-site/deploying/+page.svelte | 13 ++--- .../sites/create-site/finish/+page.svelte | 12 ++--- .../sites/create-site/manual/+page.svelte | 12 ++--- .../sites/create-site/manual/aside.svelte | 7 ++- .../create-site/repositories/+page.svelte | 17 +++---- .../repository-[repository]/+page.svelte | 16 +++---- .../sites/create-site/templates/+page.svelte | 16 +++---- .../template-[template]/+page.svelte | 11 ++--- .../create-site/updateVariableModal.svelte | 6 +-- .../sites/createSiteModal.svelte | 9 ++-- .../sites/grid.svelte | 10 ++-- .../sites/header.svelte | 4 +- .../sites/redeployModal.svelte | 6 ++- .../sites/site-[site]/breadcrumbs.svelte | 7 +-- .../site-[site]/deployments/+layout.svelte | 31 ++++-------- .../deployments/deleteDeploymentModal.svelte | 6 +-- .../breadcrumbs.svelte | 13 +++-- .../deployment-[deployment]/header.svelte | 5 +- .../site-[site]/deployments/table.svelte | 6 ++- .../site-[site]/deploymentsOverview.svelte | 10 ++-- .../sites/site-[site]/domains/+page.svelte | 5 +- .../domains/add-domain/+page.svelte | 4 +- .../add-domain/verify-[domain]/+page.svelte | 4 +- .../sites/site-[site]/domainsOverview.svelte | 10 ++-- .../sites/site-[site]/header.svelte | 7 ++- .../site-[site]/settings/deleteModal.svelte | 4 +- .../site-[site]/usage/[[period]]/+page.svelte | 8 ++-- .../sites/sitesActionMenu.svelte | 7 ++- .../sites/table.svelte | 11 ++--- .../sites/usage/[[period]]/+page.svelte | 5 +- .../storage/+layout.svelte | 7 ++- .../storage/+page.svelte | 9 +--- .../storage/breadcrumbs.svelte | 5 +- .../storage/bucket-[bucket]/+layout.svelte | 29 ++++-------- .../storage/bucket-[bucket]/+page.svelte | 14 ++---- .../bucket-[bucket]/breadcrumbs.svelte | 8 ++-- .../bucket-[bucket]/create/+page.svelte | 12 ++--- .../bucket-[bucket]/deleteBucket.svelte | 4 +- .../file-[file]/breadcrumbs.svelte | 13 +++-- .../file-[file]/deleteFile.svelte | 6 +-- .../bucket-[bucket]/file-[file]/header.svelte | 8 ++-- .../storage/bucket-[bucket]/header.svelte | 8 ++-- .../usage/[[period]]/+page.svelte | 6 +-- .../storage/grid.svelte | 8 +--- .../storage/header.svelte | 4 +- .../storage/table.svelte | 7 +-- .../storage/usage/[[period]]/+page.svelte | 5 +- .../updateVariables.svelte | 14 ++---- .../updateVariablesModal.svelte | 5 +- .../(public)/template-[template]/+page.svelte | 11 ++++- 211 files changed, 833 insertions(+), 1028 deletions(-) diff --git a/src/lib/components/backupRestoreBox.svelte b/src/lib/components/backupRestoreBox.svelte index 1598341f79..716bfba12f 100644 --- a/src/lib/components/backupRestoreBox.svelte +++ b/src/lib/components/backupRestoreBox.svelte @@ -9,8 +9,7 @@ import { goto, invalidate } from '$app/navigation'; import { page } from '$app/state'; import { addNotification } from '$lib/stores/notifications'; - import { base } from '$app/paths'; - import { getProjectId } from '$lib/helpers/project'; + import { getProjectId, getProjectRoute } from '$lib/helpers/project'; import { toLocaleDate } from '$lib/helpers/date'; import { Typography } from '@appwrite.io/pink-svelte'; @@ -34,8 +33,6 @@ function showRestoreNotification(newDatabaseId: string, newDatabaseName: string) { if (newDatabaseId && newDatabaseName && lastDatabaseRestorationId !== newDatabaseId) { - const region = page.params.region; - const project = page.params.project; lastDatabaseRestorationId = newDatabaseId; addNotification({ @@ -46,9 +43,7 @@ { name: 'View restored data', method: () => { - goto( - `${base}/project-${region}-${project}/databases/database-${newDatabaseId}` - ); + goto(getProjectRoute(`/databases/database-${newDatabaseId}`)); } } ] diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index 0951839d87..72609a162c 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -15,6 +15,7 @@ import { newOrgModal } from '$lib/stores/organization'; import { Click, trackEvent } from '$lib/actions/analytics'; import { page } from '$app/stores'; + import { getProjectRoute } from '$lib/helpers/project'; type Project = { name: string; @@ -141,7 +142,7 @@ if (index < 4) { return { name: project.name, - href: `${base}/project-${project.region}-${project.$id}/overview` + href: getProjectRoute(project, '/overview') }; } else if (index === 4) { return { @@ -317,8 +318,7 @@ {#if index < 4}
- + {project.name} diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index 8c0e48b8a3..5726bdeaee 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -1,11 +1,10 @@ @@ -10,16 +10,14 @@ {#if product === 'site'} To view logs and errors, enable them in your - + site settings. {:else if product === 'function'} To view execution logs and errors, enable them in your - + function settings. diff --git a/src/lib/components/navbar.svelte b/src/lib/components/navbar.svelte index 02ac75d285..6238e6b613 100644 --- a/src/lib/components/navbar.svelte +++ b/src/lib/components/navbar.svelte @@ -55,6 +55,7 @@ import { user } from '$lib/stores/user'; import { Click, trackEvent } from '$lib/actions/analytics'; import type { HTMLAttributes } from 'svelte/elements'; + import { getProjectRoute } from '$lib/helpers/project'; let showSupport = false; @@ -135,9 +136,9 @@ {#if selectedProject && selectedProject.pingCount === 0}
Connect + href={getProjectRoute(selectedProject, '/get-started')}>Connect
{/if}
diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte index 31a6fd4db5..840541803c 100644 --- a/src/lib/components/permissions/row.svelte +++ b/src/lib/components/permissions/row.svelte @@ -14,8 +14,8 @@ } from '@appwrite.io/pink-svelte'; import Avatar from '../avatar.svelte'; import { IconAnonymous, IconExternalLink, IconMinusSm } from '@appwrite.io/pink-icons-svelte'; - import { base } from '$app/paths'; import { page } from '$app/state'; + import { getProjectRoute } from '$lib/helpers/project'; export let role: string; @@ -88,7 +88,7 @@ {/if}
@@ -100,7 +100,7 @@ Members: {data?.total}
diff --git a/src/lib/helpers/project.ts b/src/lib/helpers/project.ts index 58cfe7bcc5..77d4716c21 100644 --- a/src/lib/helpers/project.ts +++ b/src/lib/helpers/project.ts @@ -1,6 +1,8 @@ +import { base } from '$app/paths'; import { page } from '$app/state'; import { get } from 'svelte/store'; import { sdk } from '$lib/stores/sdk'; +import type { Models } from '@appwrite.io/console'; import { projectRegion } from '$routes/(console)/project-[region]-[project]/store'; /** @@ -42,3 +44,48 @@ export function getProjectEndpoint(): string { return currentProjectRegion ? `${protocol}//${currentProjectRegion.$id}.${hostname}/v1` : href; } + +/** + * A minimal project shape with - + * 1. `$id` and + * 2. optional `region`. + * + * Compatible with full `Models.Project`. + */ +type CompatibleProjectInstance = + | Models.Project + | { + $id: string; + region?: string; + }; + +/** + * Generates the project route URL, optionally using a custom project and/or path. + * Falls back to the current route's project and region if not provided. + * + * @param projectOrPath Either a project object or a path string (e.g., "/databases"). + * @param maybePath Optional path string if the first argument is a project. + * + * @returns Project route URL (e.g., "/project-fra-console/databases"). + */ +export function getProjectRoute( + projectOrPath?: string | CompatibleProjectInstance, + maybePath?: string +): string { + let withPath: string | undefined; + let projectInstance: CompatibleProjectInstance | undefined; + + if (typeof projectOrPath === 'string') { + withPath = projectOrPath; + projectInstance = undefined; + } else { + withPath = maybePath; + projectInstance = projectOrPath; + } + + const projectId = projectInstance?.$id ?? page?.params?.project; + const projectRegion = projectInstance?.region ?? page?.params?.region ?? 'default'; + const suffix = withPath?.trim() ? (withPath.startsWith('/') ? withPath : `/${withPath}`) : ''; + + return `${base}/project-${projectRegion}-${projectId}${suffix}`; +} diff --git a/src/lib/pages/domains/index.svelte b/src/lib/pages/domains/index.svelte index 7db4005068..c9d077fd64 100644 --- a/src/lib/pages/domains/index.svelte +++ b/src/lib/pages/domains/index.svelte @@ -28,8 +28,7 @@ IconRefresh, IconTrash } from '@appwrite.io/pink-icons-svelte'; - import { page } from '$app/state'; - import { base } from '$app/paths'; + import { getProjectRoute } from '$lib/helpers/project'; export let rules: Models.ProxyRuleList; export let dependency: Dependencies; @@ -60,10 +59,7 @@ - diff --git a/src/routes/(console)/(migration-wizard)/wizard.svelte b/src/routes/(console)/(migration-wizard)/wizard.svelte index 99c23b7d24..03f5364c70 100644 --- a/src/routes/(console)/(migration-wizard)/wizard.svelte +++ b/src/routes/(console)/(migration-wizard)/wizard.svelte @@ -23,7 +23,6 @@ import { regions } from '$lib/stores/organization'; import { addNotification } from '$lib/stores/notifications'; import { goto, invalidate } from '$app/navigation'; - import { base } from '$app/paths'; import { migrationFormToResources } from '$lib/stores/migration'; import { EyebrowHeading } from '$lib/components'; import { @@ -35,6 +34,7 @@ } from '@appwrite.io/pink-icons-svelte'; import { Dependencies } from '$lib/constants'; import { filterRegions } from '$lib/helpers/regions'; + import { getProjectRoute } from '$lib/helpers/project'; const onExit = () => { formData.reset(); @@ -123,9 +123,7 @@ }); onExit(); await invalidate(Dependencies.PROJECTS); - await goto( - `${base}/project-${currentSelectedProject.region}-${currentSelectedProject.$id}/settings/migrations` - ); + await goto(`${getProjectRoute(currentSelectedProject, '/settings/migrations')}`); } catch (error) { addNotification({ type: 'error', diff --git a/src/routes/(console)/+layout.svelte b/src/routes/(console)/+layout.svelte index 9d7a72d6d2..340e31ab9a 100644 --- a/src/routes/(console)/+layout.svelte +++ b/src/routes/(console)/+layout.svelte @@ -54,6 +54,7 @@ } from '@appwrite.io/pink-icons-svelte'; import type { LayoutData } from './$types'; import type { NavbarProject } from '$lib/components/navbar.svelte'; + import { getProjectRoute } from '$lib/helpers/project'; function kebabToSentenceCase(str: string) { return str @@ -175,9 +176,7 @@ ({ label: kebabToSentenceCase(heading), async callback() { - await goto( - `${base}/project-${$project.region}-${$project.$id}/auth/security#${heading}` - ); + await goto(getProjectRoute($project, `/auth/security#${heading}`)); scrollBy({ top: -100 }); }, disabled: !$project?.$id, @@ -191,7 +190,7 @@ keys: isOnSettingsLayout ? ['g', 'o'] : undefined, callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/settings`); + goto(getProjectRoute('/settings')); }, disabled: !$project?.$id || (isOnSettingsLayout && page.url.pathname.endsWith('settings')), @@ -203,7 +202,7 @@ keys: isOnSettingsLayout ? ['g', 'd'] : undefined, callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/settings/domains`); + goto(getProjectRoute('/settings/domains')); }, disabled: !$project?.$id || (isOnSettingsLayout && page.url.pathname.includes('domains')), @@ -214,7 +213,7 @@ label: 'Go to webhooks', keys: isOnSettingsLayout ? ['g', 'w'] : undefined, callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/settings/webhooks`); + goto(getProjectRoute('/settings/webhooks')); }, disabled: !$project?.$id || (isOnSettingsLayout && page.url.pathname.includes('webhooks')), @@ -226,7 +225,7 @@ label: 'Go to migrations', keys: isOnSettingsLayout ? ['g', 'm'] : undefined, callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/settings/migrations`); + goto(getProjectRoute('/settings/migrations')); }, disabled: !$project?.$id || (isOnSettingsLayout && page.url.pathname.includes('migrations')), @@ -238,7 +237,7 @@ label: 'Go to SMTP settings', keys: isOnSettingsLayout ? ['g', 's'] : undefined, callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/settings/smtp`); + goto(getProjectRoute('/settings/smtp')); }, disabled: !$project?.$id || (isOnSettingsLayout && page.url.pathname.includes('smtp')), group: isOnSettingsLayout ? 'navigation' : 'settings', diff --git a/src/routes/(console)/onboarding/create-project/+page.svelte b/src/routes/(console)/onboarding/create-project/+page.svelte index 61c5395feb..cb1627dbb0 100644 --- a/src/routes/(console)/onboarding/create-project/+page.svelte +++ b/src/routes/(console)/onboarding/create-project/+page.svelte @@ -7,11 +7,11 @@ import { Dependencies } from '$lib/constants'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { goto, invalidate } from '$app/navigation'; - import { base } from '$app/paths'; import { addNotification } from '$lib/stores/notifications'; import CreateProject from '$lib/layout/createProject.svelte'; import { loadAvailableRegions } from '$routes/(console)/regions'; import { regions as regionsStore } from '$lib/stores/organization'; + import { getProjectRoute } from '$lib/helpers/project'; let isLoading = false; let id: string; @@ -40,7 +40,7 @@ setTimeout(async () => { await invalidate(Dependencies.ACCOUNT); - goto(`${base}/project-${project.region ?? 'default'}-${project.$id}`); + goto(getProjectRoute(project)); }, 3000); } catch (e) { trackError(e, Submit.ProjectCreate); diff --git a/src/routes/(console)/organization-[organization]/+page.svelte b/src/routes/(console)/organization-[organization]/+page.svelte index 19090c22a4..c2a9618818 100644 --- a/src/routes/(console)/organization-[organization]/+page.svelte +++ b/src/routes/(console)/organization-[organization]/+page.svelte @@ -1,5 +1,4 @@ diff --git a/src/routes/(console)/project-[region]-[project]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/+layout.svelte index 0254a8cdc2..540f17a446 100644 --- a/src/routes/(console)/project-[region]-[project]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/+layout.svelte @@ -2,7 +2,7 @@ import { BackupRestoreBox, MigrationBox, UploadBox } from '$lib/components'; import { realtime } from '$lib/stores/sdk'; import { onMount } from 'svelte'; - import { project, stats } from './store'; + import { stats } from './store'; import { goto } from '$app/navigation'; import { registerCommands, registerSearchers } from '$lib/commandCenter'; @@ -15,7 +15,6 @@ userSearcher } from '$lib/commandCenter/searchers'; import { page } from '$app/state'; - import { base } from '$app/paths'; import { canSeeBuckets, canSeeDatabases, @@ -25,6 +24,7 @@ canWriteSites } from '$lib/stores/roles'; import CsvImportBox from '$lib/components/csvImportBox.svelte'; + import { getProjectRoute } from '$lib/helpers/project'; onMount(() => { return realtime @@ -42,7 +42,7 @@ { label: 'Go to Auth', callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/auth`); + goto(getProjectRoute('/auth')); }, keys: ['g', 'a'], group: 'navigation' @@ -50,7 +50,7 @@ { label: 'Go to Databases', callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/databases`); + goto(getProjectRoute('/databases')); }, keys: ['g', 'd'], group: 'navigation', @@ -59,7 +59,7 @@ { label: 'Go to Functions', callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/functions`); + goto(getProjectRoute('/functions')); }, keys: ['g', 'f'], group: 'navigation', @@ -68,7 +68,7 @@ { label: 'Go to Messaging', callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/messaging`); + goto(getProjectRoute('/messaging')); }, keys: ['g', 'm'], disabled: page.url.pathname.endsWith('messaging') || !$canSeeMessages, @@ -77,7 +77,7 @@ { label: 'Go to Storage', callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/storage`); + goto(getProjectRoute('/storage')); }, keys: ['g', 's'], group: 'navigation', @@ -86,7 +86,7 @@ { label: 'Go to Settings', callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/settings`); + goto(getProjectRoute('/settings')); }, keys: ['g', 'e'], group: 'navigation', @@ -95,7 +95,7 @@ { label: 'Go to Sites', callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}/sites`); + goto(getProjectRoute('/sites')); }, keys: ['g', 'i'], group: 'navigation', @@ -104,7 +104,7 @@ { label: 'Go to Overview', callback: () => { - goto(`${base}/project-${$project.region}-${$project.$id}`); + goto(getProjectRoute()); }, keys: ['g', 'o'], group: 'navigation' diff --git a/src/routes/(console)/project-[region]-[project]/auth/+layout.svelte b/src/routes/(console)/project-[region]-[project]/auth/+layout.svelte index 674167aa30..6aee41a31d 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/+layout.svelte @@ -1,23 +1,22 @@ @@ -75,9 +72,7 @@ {/each} {#each data.users.users as user} - + {#each $columns as { id } (id)} {#if id === '$id'} @@ -162,10 +157,7 @@ total={data.users.total} /> {:else if data.search} - + {:else} - import { base } from '$app/paths'; import { page } from '$app/state'; import { Tab, Tabs } from '$lib/components'; import { isTabSelected } from '$lib/helpers/load'; import { Cover } from '$lib/layout'; import { canWriteProjects } from '$lib/stores/roles'; import { Typography } from '@appwrite.io/pink-svelte'; + import { getProjectRoute } from '$lib/helpers/project'; - const path = `${base}/project-${page.params.region}-${page.params.project}/auth`; + const path = getProjectRoute('/auth'); const tabs = [ { href: path, diff --git a/src/routes/(console)/project-[region]-[project]/auth/teams/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/teams/+page.svelte index cbefb02fb1..800579a172 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/teams/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/teams/+page.svelte @@ -3,7 +3,6 @@ @@ -53,9 +50,7 @@ Created {#each data.teams.teams as team} - + @@ -79,9 +74,7 @@ total={data.teams.total} /> {:else if data.search} - + {:else} import { base } from '$app/paths'; - import { page } from '$app/state'; import { Breadcrumbs } from '$lib/layout'; import { organization } from '$lib/stores/organization'; import { project } from '../../../store'; import { team } from './store'; + import { getProjectRoute } from '$lib/helpers/project'; $: breadcrumbs = [ { @@ -12,15 +12,15 @@ title: $organization?.name }, { - href: `${base}/project-${page.params.region}-${page.params.project}`, + href: getProjectRoute(), title: $project?.name }, { - href: `${base}/project-${page.params.region}-${page.params.project}/auth`, + href: getProjectRoute('/auth'), title: 'Auth' }, { - href: `${base}/project-${page.params.region}-${page.params.project}/auth/teams/team-${$team?.$id}`, + href: getProjectRoute(`/auth/teams/team-${$team?.$id}`), title: $team?.name } ]; diff --git a/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/deleteMembership.svelte b/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/deleteMembership.svelte index 9aa4e66854..8c7804ff2b 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/deleteMembership.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/teams/team-[team]/deleteMembership.svelte @@ -1,6 +1,5 @@ @@ -89,10 +88,7 @@ title="Custom SMTP server is required for customizing emails"> Configure a custom SMTP server to enable custom email templates and prevent emails from being labeled as spam. - @@ -187,6 +183,7 @@ { @@ -201,11 +198,7 @@ - + {#if isCloud && $currentPlan.emailBranding} diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailSignature.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailSignature.svelte index 4c463b0c69..bf91e85547 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailSignature.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailSignature.svelte @@ -21,12 +21,12 @@ {#if $app.themeInUse === 'dark'} Email Signature Example {:else} Email Signature Example {/if}
diff --git a/src/routes/(console)/project-[region]-[project]/auth/usage/[[period]]/+page.svelte b/src/routes/(console)/project-[region]-[project]/auth/usage/[[period]]/+page.svelte index 9879c54e4d..0180c25734 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/usage/[[period]]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/usage/[[period]]/+page.svelte @@ -1,7 +1,6 @@ diff --git a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteMembership.svelte b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteMembership.svelte index 88d2ebc1bb..1337ed7c57 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteMembership.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/user-[user]/deleteMembership.svelte @@ -1,6 +1,5 @@ @@ -38,7 +34,7 @@ {#each data.memberships.memberships as membership} + href={getProjectRoute(`/auth/teams/team-${membership.teamId}`)}> diff --git a/src/routes/(console)/project-[region]-[project]/createVariableModal.svelte b/src/routes/(console)/project-[region]-[project]/createVariableModal.svelte index 0cf5fa2135..73fac40201 100644 --- a/src/routes/(console)/project-[region]-[project]/createVariableModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/createVariableModal.svelte @@ -4,11 +4,10 @@ import { InputText } from '$lib/elements/forms'; import { createEventDispatcher } from 'svelte'; import type { Models } from '@appwrite.io/console'; - import { project } from './store'; - import { base } from '$app/paths'; import { Alert, Layout, Selector, Button as PinkButton, Icon } from '@appwrite.io/pink-svelte'; import { Link } from '$lib/elements'; import { IconPlus, IconX } from '@appwrite.io/pink-icons-svelte'; + import { getProjectRoute } from '$lib/helpers/project'; export let isGlobal: boolean; export let product: 'function' | 'site' = 'function'; @@ -61,7 +60,7 @@ {#if !isGlobal} When there is a naming conflict with a global variable in your + href={getProjectRoute('/settings/variables')}> project settings and a {product} environment variable, the global variable will be ignored. diff --git a/src/routes/(console)/project-[region]-[project]/databases/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/+layout.svelte index 7e8347e4da..3d1799a48d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/+layout.svelte @@ -1,16 +1,15 @@ @@ -18,7 +19,9 @@ event="collection"> {#each data.collections.collections as collection} + href={getProjectRoute( + `/databases/database-${databaseId}/collection-${collection.$id}` + )}> {collection.name} {#if !collection.enabled} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/header.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/header.svelte index e220dba394..654f762903 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/header.svelte @@ -1,15 +1,14 @@ {#each data.databases.databases as database} - + {database.name} {#if data.lastBackups && data.lastBackups[database.$id]} diff --git a/src/routes/(console)/project-[region]-[project]/databases/header.svelte b/src/routes/(console)/project-[region]-[project]/databases/header.svelte index 796c86d09f..6f5d1c9443 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/header.svelte @@ -1,13 +1,12 @@ @@ -17,10 +16,6 @@ {repository?.organization}/{repository?.name} - + diff --git a/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/+page.svelte index 1def9654f0..eb45c7a354 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/create-function/template-[template]/+page.svelte @@ -1,6 +1,5 @@ - + Deployment {$deployment.$id} diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/+page.svelte index 3e30d3a86f..7305c6533e 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/+page.svelte @@ -13,6 +13,7 @@ import { app } from '$lib/stores/app'; import { Click, trackEvent } from '$lib/actions/analytics'; import Table from './table.svelte'; + import { getProjectRoute } from '$lib/helpers/project'; let { data } = $props(); @@ -25,7 +26,7 @@ diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte index e7a55a9566..bf7a97517e 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/domains/add-domain/+page.svelte @@ -1,5 +1,4 @@ @@ -41,7 +40,7 @@ diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/table.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/table.svelte index fdfdfdb145..5435ccbe97 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/table.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/table.svelte @@ -13,7 +13,6 @@ import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import Cancel from './(modals)/cancelDeploymentModal.svelte'; - import { base } from '$app/paths'; import { ActionMenu, Badge, @@ -39,6 +38,7 @@ import { Menu } from '$lib/components/menu'; import { sdk } from '$lib/stores/sdk'; import { addNotification } from '$lib/stores/notifications'; + import { getProjectRoute } from '$lib/helpers/project'; export let columns: Column[]; export let data: PageData; @@ -103,7 +103,9 @@ + href={getProjectRoute( + `/functions/function-${page.params.function}/deployment-${deployment.$id}` + )}> {#each columns as column} {#if column.id === '$id'} diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte index 30c05dd10d..cae354000a 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte @@ -1,21 +1,21 @@ {#if count} - import { base } from '$app/paths'; import { page } from '$app/state'; import { Tab, Tabs } from '$lib/components'; import { isTabSelected } from '$lib/helpers/load'; import { Cover } from '$lib/layout'; import { Typography } from '@appwrite.io/pink-svelte'; + import { getProjectRoute } from '$lib/helpers/project'; - $: projectId = page.params.project; - $: path = `${base}/project-${page.params.region}-${projectId}/functions`; + $: path = getProjectRoute('/functions'); $: tabs = [ { href: path, diff --git a/src/routes/(console)/project-[region]-[project]/functions/templates/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/templates/+page.svelte index de53032daf..6e711a96a8 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/templates/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/templates/+page.svelte @@ -1,6 +1,5 @@ - + {$template.name} {$template.id} diff --git a/src/routes/(console)/project-[region]-[project]/functions/usage/[[period]]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/usage/[[period]]/+page.svelte index a91d5a6f3f..f2e6d11ec6 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/usage/[[period]]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/usage/[[period]]/+page.svelte @@ -1,7 +1,6 @@ @@ -18,7 +17,7 @@ {#each Object.entries(providers) as [type, option]} + href={getProjectRoute(`/messaging/create-${type}`)}> {option.name} {/each} diff --git a/src/routes/(console)/project-[region]-[project]/messaging/header.svelte b/src/routes/(console)/project-[region]-[project]/messaging/header.svelte index d0e5082cf1..c8d9545393 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/header.svelte @@ -1,12 +1,12 @@ - + {$message.data.title ?? $message.data.subject ?? $message.data.content ?? 'Message'} {$message.$id} diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/+page.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/+page.svelte index 8aed8a13be..047a775ce4 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/+page.svelte @@ -1,5 +1,4 @@ @@ -57,11 +56,7 @@ Sorry, we couldn't find '{data.search}'

There are no providers that match your search.

- + {:else} diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte index 5b8cef881f..4dd11ce2fa 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/create.svelte @@ -5,8 +5,6 @@ import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { addNotification } from '$lib/stores/notifications'; import { goto } from '$app/navigation'; - import { base } from '$app/paths'; - import { project } from '../../store'; import { wizard } from '$lib/stores/wizard'; import { provider, providerParams, providerType } from './wizard/store'; import { ID, MessagingProviderType, type Models } from '@appwrite.io/console'; @@ -20,6 +18,7 @@ import { getProviderText } from '../helper'; import { providers } from './store'; import CreateMember from '$routes/(console)/organization-[organization]/createMember.svelte'; + import { getProjectRoute } from '$lib/helpers/project'; async function create() { try { @@ -169,9 +168,7 @@ trackEvent(Submit.MessagingProviderCreate, { provider: $provider }); - await goto( - `${base}/project-${$project.region}-${$project.$id}/messaging/providers/provider-${response.$id}` - ); + await goto(getProjectRoute(`/messaging/providers/provider-${response.$id}`)); } catch (error) { addNotification({ type: 'error', diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/breadcrumbs.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/breadcrumbs.svelte index 09e63d399a..02de2832cc 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/breadcrumbs.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/breadcrumbs.svelte @@ -4,6 +4,7 @@ import { organization } from '$lib/stores/organization'; import { project } from '$routes/(console)/project-[region]-[project]/store'; import { provider } from './store'; + import { getProjectRoute } from '$lib/helpers/project'; $: breadcrumbs = [ { @@ -11,15 +12,15 @@ title: $organization.name }, { - href: `${base}/project-${$project.region}-${$project.$id}`, + href: getProjectRoute(), title: $project.name }, { - href: `${base}/project-${$project.region}-${$project.$id}/messaging`, + href: getProjectRoute('/messaging'), title: 'Messaging' }, { - href: `${base}/project-${$project.region}-${$project.$id}/messaging/providers/provider-${$provider?.$id}`, + href: getProjectRoute(`/messaging/providers/provider-${$provider?.$id}`), title: $provider?.name } ]; diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/dangerZone.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/dangerZone.svelte index a5f725ed59..4d39f78f77 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/dangerZone.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/dangerZone.svelte @@ -1,25 +1,22 @@ diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/deleteProvider.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/deleteProvider.svelte index cb0eb24a81..75f8e2fcf8 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/deleteProvider.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/provider-[provider]/deleteProvider.svelte @@ -1,6 +1,5 @@ - + {$provider?.name ? $provider?.name : '-'} {$provider?.$id} diff --git a/src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte b/src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte index 47f1b776e1..9e47ee2037 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/providers/table.svelte @@ -1,12 +1,10 @@ @@ -109,11 +104,7 @@ Sorry, we couldn't find '{data.search}'

There are no topics that match your search.

- + {:else} - import { base } from '$app/paths'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { Id } from '$lib/components'; import { Button } from '$lib/elements/forms'; @@ -14,6 +13,7 @@ import { canWriteTopics } from '$lib/stores/roles'; import { Badge, FloatingActionBar, Table, Typography } from '@appwrite.io/pink-svelte'; import Confirm from '$lib/components/confirm.svelte'; + import { getProjectRoute } from '$lib/helpers/project'; export let columns: Column[]; export let data: PageData; @@ -62,7 +62,7 @@ + href={getProjectRoute(`/messaging/topics/topic-${topic.$id}`)}> {#each columns as column (column.id)} {#if column.id === '$id'} diff --git a/src/routes/(console)/project-[region]-[project]/messaging/topics/topic-[topic]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/messaging/topics/topic-[topic]/+layout.svelte index 015c066ee2..8bf5c1329d 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/topics/topic-[topic]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/topics/topic-[topic]/+layout.svelte @@ -1,9 +1,8 @@ - + {$devKey?.name} diff --git a/src/routes/(console)/project-[region]-[project]/overview/dev-keys/action.svelte b/src/routes/(console)/project-[region]-[project]/overview/dev-keys/action.svelte index cf9287ef75..ef33b68e42 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/dev-keys/action.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/dev-keys/action.svelte @@ -8,10 +8,10 @@ import { sdk } from '$lib/stores/sdk'; import { goto } from '$app/navigation'; import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; - import { base } from '$app/paths'; import { addNotification } from '$lib/stores/notifications'; import { page } from '$app/state'; import { showDevKeysCreateModal } from '$routes/(console)/project-[region]-[project]/overview/store'; + import { getProjectRoute } from '$lib/helpers/project'; let isSubmitting = false; let name = '', @@ -30,9 +30,7 @@ $showDevKeysCreateModal = false; trackEvent(Submit.DevKeyCreate); - await goto( - `${base}/project-${page.params.region}-${page.params.project}/overview/dev-keys/${$id}` - ); + await goto(getProjectRoute(`/overview/dev-keys/${$id}`)); addNotification({ message: `Dev key has been created`, type: 'success' diff --git a/src/routes/(console)/project-[region]-[project]/overview/header.svelte b/src/routes/(console)/project-[region]-[project]/overview/header.svelte index a59b86d80a..0c6a48ad74 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/header.svelte @@ -5,12 +5,12 @@ import { project } from '../store'; import { hasOnboardingDismissed, setHasOnboardingDismissed } from '$lib/helpers/onboarding'; import { goto, invalidate } from '$app/navigation'; - import { base } from '$app/paths'; import { Layout, Button, Typography } from '@appwrite.io/pink-svelte'; import { user } from '$lib/stores/user'; import { isSmallViewport } from '$lib/stores/viewport'; import { Dependencies } from '$lib/constants'; import { trackEvent } from '$lib/actions/analytics'; + import { getProjectRoute } from '$lib/helpers/project'; {#if !page.url.pathname.includes('get-started')} @@ -52,7 +52,7 @@ trackEvent('onboarding_hub_platform_dismiss'); await setHasOnboardingDismissed($project.$id); await invalidate(Dependencies.ORGANIZATION); - goto(`${base}/project-${$project.region}-${$project.$id}/overview`); + goto(getProjectRoute('/overview')); }}>Dismiss this page {/if} diff --git a/src/routes/(console)/project-[region]-[project]/overview/keys/[key]/breadcrumbs.svelte b/src/routes/(console)/project-[region]-[project]/overview/keys/[key]/breadcrumbs.svelte index 00fa0e8f7e..cc3384b336 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/keys/[key]/breadcrumbs.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/keys/[key]/breadcrumbs.svelte @@ -1,10 +1,10 @@ - + {$key?.name} diff --git a/src/routes/(console)/project-[region]-[project]/overview/keys/action.svelte b/src/routes/(console)/project-[region]-[project]/overview/keys/action.svelte index ba746e54af..8c3a0ad26a 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/keys/action.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/keys/action.svelte @@ -3,13 +3,11 @@ import { canWriteKeys } from '$lib/stores/roles'; import { Icon } from '@appwrite.io/pink-svelte'; import { IconPlus } from '@appwrite.io/pink-icons-svelte'; - import { base } from '$app/paths'; - import { page } from '$app/state'; + import { getProjectRoute } from '$lib/helpers/project.js'; {#if $canWriteKeys} - diff --git a/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte b/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte index 3a7d7d5a5e..432a9ae798 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte @@ -30,20 +30,19 @@ import PlatformAndroidImgSourceDark from './assets/platform-android-dark.svg'; import PlatformFlutterImgSource from './assets/platform-flutter.svg'; import PlatformFlutterImgSourceDark from './assets/platform-flutter-dark.svg'; - import { base } from '$app/paths'; import { isSmallViewport } from '$lib/stores/viewport'; import { AvatarGroup } from '$lib/components'; import type { Models } from '@appwrite.io/console'; import { getPlatformInfo } from '$lib/helpers/platform'; import { Click, trackEvent } from '$lib/actions/analytics'; import { goto } from '$app/navigation'; - import { page } from '$app/state'; + import { getProjectRoute } from '$lib/helpers/project'; function createKey() { trackEvent(Click.KeyCreateClick, { source: 'onboarding' }); - goto(`${base}/project-${page.params.region}-${page.params.project}/overview/keys/create`, { + goto(getProjectRoute('/overview/keys/create'), { replaceState: true }); } @@ -393,9 +392,7 @@ { trackEvent(Click.OnboardingSetupDatabaseClick); - goto( - `${base}/project-${page.params.region}-${page.params.project}/databases` - ); + goto(getProjectRoute('/databases')); }} padding="s" > { trackEvent( Click.OnboardingAuthEmailPasswordClick @@ -498,7 +497,9 @@ { trackEvent( Click.OnboardingAuthOauth2Click @@ -506,7 +507,9 @@ }}>OAuth 2 { trackEvent( Click.OnboardingAuthAllMethodsClick diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte index ff85cf31a5..d405f1a33d 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/+page.svelte @@ -59,8 +59,6 @@ - + {$platform?.name} diff --git a/src/routes/(console)/project-[region]-[project]/settings/+layout.svelte b/src/routes/(console)/project-[region]-[project]/settings/+layout.svelte index fbe135724f..072330b436 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/+layout.svelte @@ -1,21 +1,17 @@ @@ -21,7 +21,7 @@ searchPlaceholder="Search by domain" analyticsSource="settings_domain_overview"> diff --git a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte index 781c68bb2a..5296f40d21 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/domains/add-domain/+page.svelte @@ -1,5 +1,4 @@ - + {$webhook?.name} {$webhook?.$id} diff --git a/src/routes/(console)/project-[region]-[project]/settings/webhooks/create/+page.svelte b/src/routes/(console)/project-[region]-[project]/settings/webhooks/create/+page.svelte index 4b21c88480..953bab3afc 100644 --- a/src/routes/(console)/project-[region]-[project]/settings/webhooks/create/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/settings/webhooks/create/+page.svelte @@ -1,6 +1,4 @@ - + @@ -84,7 +79,7 @@ size="s" fullWidthMobile secondary - href={`${base}/project-${page.params.region}-${page.params.project}/sites/site-${data.site.$id}`}> + href={getProjectRoute(`/sites/site-${data.site.$id}`)}> Go to dashboard diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/finish/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/finish/+page.svelte index 152a41aa29..5776ab7e61 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/finish/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/finish/+page.svelte @@ -1,5 +1,4 @@ - +
@@ -132,7 +130,7 @@ source: 'sites_create_finish' }); }} - href={`${base}/project-${page.params.region}-${page.params.project}/sites/site-${data.site.$id}/domains`}> + href={getProjectRoute(`/sites/site-${data.site.$id}/domains`)}> + href={getProjectRoute(`/sites/site-${data.site.$id}`)}> Go to dashboard @@ -208,9 +206,9 @@ {#if showConnectRepositry} {/if} diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte index eaea816785..7cad25ee86 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/manual/+page.svelte @@ -1,6 +1,5 @@ - + {#if !!data?.installations?.total}
- + {:else} diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.svelte index 1def9713b6..4fd59b703e 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/repositories/repository-[repository]/+page.svelte @@ -1,6 +1,5 @@ @@ -20,7 +19,7 @@ variant="secondary" padding="xs" radius="s" - href={`${base}/project-${page.params.region}-${page.params.project}/sites/create-site/templates`}> + href={getProjectRoute('/sites/create-site/templates')}> repositories + href={getProjectRoute('/sites/create-site/repositories')}> repositories Or simply drag and drop your files to create a site + href={getProjectRoute('/sites/create-site/manual')}> manually. diff --git a/src/routes/(console)/project-[region]-[project]/sites/grid.svelte b/src/routes/(console)/project-[region]-[project]/sites/grid.svelte index 59effbc6df..84a984f210 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/grid.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/grid.svelte @@ -1,6 +1,5 @@ - + Deployment {$deployment.$id} diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/table.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/table.svelte index fc380e6848..73cfffa022 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/table.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/table.svelte @@ -10,7 +10,6 @@ import Delete from './deleteDeploymentModal.svelte'; import RedeployModal from '../../redeployModal.svelte'; import Cancel from './cancelDeploymentModal.svelte'; - import { base } from '$app/paths'; import { Badge, FloatingActionBar, Layout, Status, Table } from '@appwrite.io/pink-svelte'; import { columns } from './store'; import ActivateDeploymentModal from '../../activateDeploymentModal.svelte'; @@ -24,6 +23,7 @@ import { Dependencies } from '$lib/constants'; import { Button } from '$lib/elements/forms'; import { site } from '$routes/(console)/project-[region]-[project]/sites/site-[site]/store'; + import { getProjectRoute } from '$lib/helpers/project'; export let data: PageData; @@ -81,7 +81,9 @@ + href={getProjectRoute( + `/sites/site-${page.params.site}/deployments/deployment-${deployment.$id}` + )}> {#each $columns as column} {#if column.id === '$id'} diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deploymentsOverview.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deploymentsOverview.svelte index 96a5091eb9..05c1a89a08 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deploymentsOverview.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deploymentsOverview.svelte @@ -1,7 +1,6 @@ @@ -18,7 +19,7 @@ diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte index 5fe1dde878..098310597a 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/domains/add-domain/+page.svelte @@ -1,5 +1,4 @@