diff --git a/src/lib/components/backupRestoreBox.svelte b/src/lib/components/backupRestoreBox.svelte
index 1598341f7..716bfba12 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 0951839d8..72609a162 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 8c0e48b8a..5726bdeae 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 02ac75d28..6238e6b61 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 31a6fd4db..840541803 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 58cfe7bcc..77d4716c2 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 7db400506..c9d077fd6 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 @@
-
-
- SMTP settings
-
+ SMTP settings
{#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 4c463b0c6..bf91e8554 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'}
{:else}
{/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 9879c54e4..0180c2573 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 88d2ebc1b..1337ed7c5 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 0cf5fa213..73fac4020 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 7e8347e4d..3d1799a48 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 e220dba39..654f76290 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 796c86d09..6f5d1c944 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}
-
- Change
-
+ Change
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 1def9654f..eb45c7a35 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 3e30d3a86..7305c6533 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 @@
{
trackEvent(Click.DomainCreateClick, {
source: 'functions_domain_overview'
@@ -72,7 +73,9 @@
Add domain
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 e7a55a956..bf7a97517 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 @@
+ href={getProjectRoute(`/functions/function-${$func.$id}/executions/execute-function`)}>
Execute
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 fdfdfdb14..5435ccbe9 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 30c05dd10..cae354000 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 de53032da..6e711a96a 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 a91d5a6f3..f2e6d11ec 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 d0e5082cf..c8d954539 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 8aed8a13b..047a775ce 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.
-
- Clear search
-
+ Clear 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 5b8cef881..4dd11ce2f 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 09e63d399..02de2832c 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 a5f725ed5..4d39f78f7 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 cb0eb24a8..75f8e2fcf 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 47f1b776e..9e47ee203 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.
-
- Clear Search
-
+ Clear 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 015c066ee..8bf5c1329 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 cf9287ef7..ef33b68e4 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 a59b86d80..0c6a48ad7 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 00fa0e8f7..cc3384b33 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 ba746e54a..8c3a0ad26 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}
-
+
Create API key
diff --git a/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte b/src/routes/(console)/project-[region]-[project]/overview/onboard.svelte
index 3a7d7d5a5..432a9ae79 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 ff85cf31a..d405f1a33 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 fbe135724..072330b43 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">
{
trackEvent(Click.DomainCreateClick, {
source: 'settings_domain_overview'
@@ -66,7 +66,7 @@
Add domain
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 781c68bb2..5296f40d2 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 4b21c8848..953bab3af 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 152a41aa2..5776ab7e6 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 eaea81678..7cad25ee8 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}
- View templates
+ View templates
{: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 1def9713b..4fd59b703 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')}>
+ href={getProjectRoute('/sites/create-site/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 59effbc6d..84a984f21 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 fc380e684..73cfffa02 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 96a5091eb..05c1a89a0 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 @@
{
trackEvent(Click.DomainCreateClick, {
source: 'sites_domain_overview'
@@ -64,7 +65,7 @@
Add domain
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 5fe1dde87..098310597 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 @@
diff --git a/src/routes/(console)/project-[region]-[project]/storage/breadcrumbs.svelte b/src/routes/(console)/project-[region]-[project]/storage/breadcrumbs.svelte
index 8f5fca263..463a5bd1a 100644
--- a/src/routes/(console)/project-[region]-[project]/storage/breadcrumbs.svelte
+++ b/src/routes/(console)/project-[region]-[project]/storage/breadcrumbs.svelte
@@ -3,6 +3,7 @@
import { Breadcrumbs } from '$lib/layout';
import { organization } from '$lib/stores/organization';
import { project } from '../store';
+ import { getProjectRoute } from '$lib/helpers/project';
$: breadcrumbs = [
{
@@ -10,11 +11,11 @@
title: $organization.name
},
{
- href: `${base}/project-${$project.region}-${$project.$id}`,
+ href: getProjectRoute(),
title: $project.name
},
{
- href: `${base}/project-${$project.region}-${$project.$id}/storage`,
+ href: getProjectRoute('/storage'),
title: 'Storage'
}
];
diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+layout.svelte
index 5988aa94c..986664b3a 100644
--- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+layout.svelte
+++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/+layout.svelte
@@ -1,6 +1,5 @@
-
+
{$file?.name}
{$file?.$id}
diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/header.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/header.svelte
index 5bdf52183..1490c767a 100644
--- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/header.svelte
+++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/header.svelte
@@ -1,15 +1,13 @@
(showCreate = true)}>
{#each data.buckets.buckets as bucket}
-
+
{bucket.name}
{#if !bucket.enabled}
diff --git a/src/routes/(console)/project-[region]-[project]/storage/header.svelte b/src/routes/(console)/project-[region]-[project]/storage/header.svelte
index 24aa16ec3..995dc047c 100644
--- a/src/routes/(console)/project-[region]-[project]/storage/header.svelte
+++ b/src/routes/(console)/project-[region]-[project]/storage/header.svelte
@@ -1,12 +1,12 @@
@@ -17,9 +16,7 @@
{/each}
{#each data.buckets.buckets as bucket (bucket.$id)}
-
+
{#each $columns as column}
{#if column.id === '$id'}
diff --git a/src/routes/(console)/project-[region]-[project]/storage/usage/[[period]]/+page.svelte b/src/routes/(console)/project-[region]-[project]/storage/usage/[[period]]/+page.svelte
index 659277fbd..0541d45a7 100644
--- a/src/routes/(console)/project-[region]-[project]/storage/usage/[[period]]/+page.svelte
+++ b/src/routes/(console)/project-[region]-[project]/storage/usage/[[period]]/+page.svelte
@@ -1,7 +1,6 @@