fix: fallback to 'default' region in project switcher dropdown for self-hosted

This commit is contained in:
Harsh Mahajan
2025-07-21 19:04:41 +05:30
parent 6fb93f2fc8
commit 39b8042af0
3 changed files with 27 additions and 13 deletions
+8 -5
View File
@@ -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 @@
<div use:melt={$itemProjects}>
<ActionMenu.Root>
<ActionMenu.Item.Anchor
href={`${base}/project-${project.region}-${project.$id}/overview/platforms`}>
href={`${base}/project-${project.region || (!isCloud ? 'default' : project.region)}-${project.$id}/overview/platforms`}>
<span class="projectName dropdown">{project.name}</span>
</ActionMenu.Item.Anchor>
</ActionMenu.Root>
@@ -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'
@@ -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