Skip to content

Commit c86838c

Browse files
Merge pull request #2683 from appwrite/feat-profiles-templates-route
2 parents 5f7bc14 + 389e0f2 commit c86838c

5 files changed

Lines changed: 110 additions & 14 deletions

File tree

src/lib/studio/studio-widget.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -331,13 +331,25 @@ export async function initImagine(
331331
props: {}
332332
},
333333
onNavigate(route) {
334-
if (route.id === 'project') {
335-
goto(
336-
resolve('/(console)/project-[region]-[project]/(studio)/studio', {
337-
region: route.props.region,
338-
project: route.props.projectId
339-
})
340-
);
334+
switch (route.id) {
335+
case 'project':
336+
goto(
337+
resolve('/(console)/project-[region]-[project]/(studio)/studio', {
338+
region: route.props.region,
339+
project: route.props.projectId
340+
})
341+
);
342+
break;
343+
case 'view':
344+
goto(
345+
resolve('/(console)/(redirects)/template/[template]', {
346+
template: route.props.projectId
347+
})
348+
);
349+
break;
350+
case 'home':
351+
goto(resolve('/'));
352+
break;
341353
}
342354
}
343355
});
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { redirect } from '@sveltejs/kit';
2-
import { base } from '$app/paths';
2+
import { resolve } from '$app/paths';
33
import type { PageLoad } from './$types';
44
import { resolvedProfile } from '$lib/profiles/index.svelte';
55

@@ -9,7 +9,12 @@ export const load: PageLoad = async ({ parent }) => {
99
const teamId =
1010
account.prefs[resolvedProfile.organizationPrefKey] ?? organizations.teams[0]?.$id;
1111
if (teamId) {
12-
redirect(303, `${base}/organization-${teamId}/members`);
12+
redirect(
13+
303,
14+
resolve('/(console)/organization-[organization]/members', {
15+
organization: teamId
16+
})
17+
);
1318
}
14-
redirect(303, base);
19+
redirect(303, resolve('/'));
1520
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { redirect } from '@sveltejs/kit';
2+
import { resolve } from '$app/paths';
3+
import type { PageLoad } from './$types';
4+
import { resolvedProfile } from '$lib/profiles/index.svelte';
5+
6+
export const load: PageLoad = async ({ parent, params }) => {
7+
const { organizations, account } = await parent();
8+
9+
const teamId =
10+
account.prefs[resolvedProfile.organizationPrefKey] ?? organizations.teams[0]?.$id;
11+
if (teamId) {
12+
redirect(
13+
303,
14+
resolve(
15+
'/(console)/organization-[organization]/(studio)/template-[region]-[template]',
16+
{
17+
organization: teamId,
18+
template: params.template,
19+
region: 'fra'
20+
}
21+
)
22+
);
23+
}
24+
redirect(303, resolve('/'));
25+
};
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<script lang="ts">
2+
import { onDestroy, onMount, tick } from 'svelte';
3+
import {
4+
attachStudioTo,
5+
ensureStudioComponent,
6+
hideStudio,
7+
navigateToRoute
8+
} from '$lib/studio/studio-widget';
9+
import { resolvedProfile } from '$lib/profiles/index.svelte';
10+
11+
let { params } = $props();
12+
let anchor: HTMLElement = $state();
13+
14+
function positionStudio() {
15+
if (!anchor) return;
16+
attachStudioTo(anchor, { offsetX: 0, offsetY: 0 });
17+
}
18+
19+
onMount(async () => {
20+
ensureStudioComponent();
21+
await tick();
22+
positionStudio();
23+
navigateToRoute({
24+
id: 'view',
25+
props: {
26+
projectId: params.template,
27+
region: params.region
28+
}
29+
});
30+
});
31+
32+
onDestroy(() => {
33+
hideStudio();
34+
});
35+
36+
$effect(() => {
37+
positionStudio();
38+
});
39+
</script>
40+
41+
<svelte:head>
42+
<title>Template - {resolvedProfile.platform}</title>
43+
</svelte:head>
44+
45+
<div class="studio-page" bind:this={anchor}></div>
46+
47+
<style>
48+
.studio-page {
49+
position: relative;
50+
width: 100%;
51+
background: var(--bgcolor-neutral-primary);
52+
}
53+
</style>

src/routes/(console)/project-[region]-[project]/(studio)/studio/+page.svelte

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
hideStudio,
77
navigateToRoute
88
} from '$lib/studio/studio-widget';
9-
import { page } from '$app/state';
109
import { getPageTitle } from '../../store';
1110
import { resolvedProfile } from '$lib/profiles/index.svelte';
11+
import type { PageProps } from './$types';
1212
13+
let { params, data }: PageProps = $props();
1314
let anchor: HTMLElement = $state();
1415
1516
function positionStudio() {
@@ -24,8 +25,8 @@
2425
navigateToRoute({
2526
id: 'project',
2627
props: {
27-
projectId: page.params.project,
28-
region: page.params.region
28+
projectId: params.project,
29+
region: params.region
2930
}
3031
});
3132
});
@@ -40,7 +41,7 @@
4041
</script>
4142

4243
<svelte:head>
43-
<title>{getPageTitle(page.data?.project?.name, 'Studio', resolvedProfile.platform)}</title>
44+
<title>{getPageTitle(data.project.name, 'Studio', resolvedProfile.platform)}</title>
4445
</svelte:head>
4546

4647
<div class="studio-page" bind:this={anchor}></div>

0 commit comments

Comments
 (0)