Skip to content

Commit 405a4f1

Browse files
authored
Merge pull request #2238 from jaysomani/feat-10325-view-source-template-detail
2 parents f86b824 + c5de209 commit 405a4f1

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

src/lib/helpers/templateSource.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import type { Models } from '@appwrite.io/console';
2+
3+
/**
4+
* Build VCS repo URL from the template response model.
5+
* Example (GitHub): https://github.com/appwrite/templates-for-sites
6+
*/
7+
export function getTemplateSourceUrl(
8+
t: Models.TemplateSite | Models.TemplateFunction
9+
): string | null {
10+
const owner = t.providerOwner;
11+
const repo = t.providerRepositoryId;
12+
const provider = t.vcsProvider; // e.g., "github"
13+
14+
if (!owner || !repo || !provider) return null;
15+
16+
// Map provider → host (extend if needed)
17+
const hostMap: Record<string, string> = {
18+
github: 'github.com',
19+
gitlab: 'gitlab.com',
20+
bitbucket: 'bitbucket.org'
21+
};
22+
23+
const host = hostMap[provider.toLowerCase()] ?? provider; // fallback
24+
25+
return `https://${host}/${owner}/${repo}`;
26+
}

src/routes/(console)/project-[region]-[project]/sites/create-site/aside.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
</Typography.Text>
6363
</Layout.Stack>
6464
</Layout.Stack>
65+
<slot name="framework-actions" />
6566
{/if}
6667

6768
{#if domain && showAfter}

src/routes/(console)/project-[region]-[project]/sites/create-site/templates/template-[template]/+page.svelte

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import { connectGitHub } from '$lib/stores/git';
3838
import { getFrameworkIcon } from '$lib/stores/sites';
3939
import { regionalConsoleVariables } from '$routes/(console)/project-[region]-[project]/store';
40+
import { getTemplateSourceUrl } from '$lib/helpers/templateSource';
4041
4142
export let data;
4243
@@ -351,6 +352,16 @@
351352
alt={data.template.name}
352353
ratio="16/9" />
353354
</Layout.Stack>
355+
356+
<svelte:fragment slot="framework-actions">
357+
{@const sourceUrl = getTemplateSourceUrl(data.template)}
358+
{#if sourceUrl}
359+
<Button secondary size="s" external href={sourceUrl}>
360+
View source
361+
<Icon icon={IconExternalLink} slot="end" size="s" />
362+
</Button>
363+
{/if}
364+
</svelte:fragment>
354365
</Aside>
355366
</svelte:fragment>
356367

0 commit comments

Comments
 (0)