From 39b8042af0d26ed61d3e184ae96edc19e652d6d1 Mon Sep 17 00:00:00 2001
From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com>
Date: Mon, 21 Jul 2025 19:04:41 +0530
Subject: [PATCH] fix: fallback to 'default' region in project switcher
dropdown for self-hosted
---
src/lib/components/breadcrumbs.svelte | 13 ++++++----
.../project-[region]-[project]/+layout.svelte | 25 +++++++++++++------
.../project-[region]-[project]/+layout.ts | 2 ++
3 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte
index e29c4c8d0..7355f8397 100644
--- a/src/lib/components/breadcrumbs.svelte
+++ b/src/lib/components/breadcrumbs.svelte
@@ -112,10 +112,13 @@
};
if (loadedProjects.total > 1 && selectedOrg) {
- const projectLinks = loadedProjects.projects.slice(0, 4).map((project) => ({
- name: project.name,
- href: `${base}/project-${project.region}-${project.$id}/overview/platforms`
- }));
+ const projectLinks = loadedProjects.projects.slice(0, 4).map((project) => {
+ const region = project.region || (!isCloud ? 'default' : project.region);
+ return {
+ name: project.name,
+ href: `${base}/project-${region}-${project.$id}/overview/platforms`
+ };
+ });
if (loadedProjects.projects.length > 4) {
projectLinks.push({
@@ -341,7 +344,7 @@
+ href={`${base}/project-${project.region || (!isCloud ? 'default' : project.region)}-${project.$id}/overview/platforms`}>
{project.name}
diff --git a/src/routes/(console)/project-[region]-[project]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/+layout.svelte
index 0254a8cdc..3e5975878 100644
--- a/src/routes/(console)/project-[region]-[project]/+layout.svelte
+++ b/src/routes/(console)/project-[region]-[project]/+layout.svelte
@@ -25,6 +25,7 @@
canWriteSites
} from '$lib/stores/roles';
import CsvImportBox from '$lib/components/csvImportBox.svelte';
+ import { isCloud } from '$lib/system';
onMount(() => {
return realtime
@@ -42,7 +43,8 @@
{
label: 'Go to Auth',
callback: () => {
- goto(`${base}/project-${$project.region}-${$project.$id}/auth`);
+ const region = $project.region || (!isCloud ? 'default' : $project.region);
+ goto(`${base}/project-${region}-${$project.$id}/auth`);
},
keys: ['g', 'a'],
group: 'navigation'
@@ -50,7 +52,8 @@
{
label: 'Go to Databases',
callback: () => {
- goto(`${base}/project-${$project.region}-${$project.$id}/databases`);
+ const region = $project.region || (!isCloud ? 'default' : $project.region);
+ goto(`${base}/project-${region}-${$project.$id}/databases`);
},
keys: ['g', 'd'],
group: 'navigation',
@@ -59,7 +62,8 @@
{
label: 'Go to Functions',
callback: () => {
- goto(`${base}/project-${$project.region}-${$project.$id}/functions`);
+ const region = $project.region || (!isCloud ? 'default' : $project.region);
+ goto(`${base}/project-${region}-${$project.$id}/functions`);
},
keys: ['g', 'f'],
group: 'navigation',
@@ -68,7 +72,8 @@
{
label: 'Go to Messaging',
callback: () => {
- goto(`${base}/project-${$project.region}-${$project.$id}/messaging`);
+ const region = $project.region || (!isCloud ? 'default' : $project.region);
+ goto(`${base}/project-${region}-${$project.$id}/messaging`);
},
keys: ['g', 'm'],
disabled: page.url.pathname.endsWith('messaging') || !$canSeeMessages,
@@ -77,7 +82,8 @@
{
label: 'Go to Storage',
callback: () => {
- goto(`${base}/project-${$project.region}-${$project.$id}/storage`);
+ const region = $project.region || (!isCloud ? 'default' : $project.region);
+ goto(`${base}/project-${region}-${$project.$id}/storage`);
},
keys: ['g', 's'],
group: 'navigation',
@@ -86,7 +92,8 @@
{
label: 'Go to Settings',
callback: () => {
- goto(`${base}/project-${$project.region}-${$project.$id}/settings`);
+ const region = $project.region || (!isCloud ? 'default' : $project.region);
+ goto(`${base}/project-${region}-${$project.$id}/settings`);
},
keys: ['g', 'e'],
group: 'navigation',
@@ -95,7 +102,8 @@
{
label: 'Go to Sites',
callback: () => {
- goto(`${base}/project-${$project.region}-${$project.$id}/sites`);
+ const region = $project.region || (!isCloud ? 'default' : $project.region);
+ goto(`${base}/project-${region}-${$project.$id}/sites`);
},
keys: ['g', 'i'],
group: 'navigation',
@@ -104,7 +112,8 @@
{
label: 'Go to Overview',
callback: () => {
- goto(`${base}/project-${$project.region}-${$project.$id}`);
+ const region = $project.region || (!isCloud ? 'default' : $project.region);
+ goto(`${base}/project-${region}-${$project.$id}`);
},
keys: ['g', 'o'],
group: 'navigation'
diff --git a/src/routes/(console)/project-[region]-[project]/+layout.ts b/src/routes/(console)/project-[region]-[project]/+layout.ts
index c1fb52045..77df693ca 100644
--- a/src/routes/(console)/project-[region]-[project]/+layout.ts
+++ b/src/routes/(console)/project-[region]-[project]/+layout.ts
@@ -17,6 +17,8 @@ export const load: LayoutLoad = async ({ params, depends, parent }) => {
const project = await sdk.forConsole.projects.get(params.project);
+ if (!isCloud && !project.region) project.region = 'default';
+
// fast path without a network call!
let organization = (organizations as OrganizationList)?.teams?.find(
(org) => org.$id === project.teamId