From c76e42d49331b55aae6947b962bbd072ed026754 Mon Sep 17 00:00:00 2001 From: Alexis Sellier Date: Fri, 11 Jun 2021 09:52:33 +0200 Subject: [PATCH] Allow browsing projects my HEAD --- src/base/projects/Browser.svelte | 94 ++++++++++++++++++++++++++ src/base/projects/Routes.svelte | 4 ++ src/base/projects/View.svelte | 110 +++++++------------------------ src/project.ts | 7 +- 4 files changed, 127 insertions(+), 88 deletions(-) create mode 100644 src/base/projects/Browser.svelte diff --git a/src/base/projects/Browser.svelte b/src/base/projects/Browser.svelte new file mode 100644 index 000000000..7776217cf --- /dev/null +++ b/src/base/projects/Browser.svelte @@ -0,0 +1,94 @@ + + + + +
+ {#if commit} +
+
+ {#await proj.getTree(urn, commit, "/", config)} + Loading.. + {:then tree} + + {:catch err} + {err} + {/await} +
+
+
+ {#await blob} + + {:then blob} + {#if blob} + + {:else} + + {/if} + {:catch} + + {/await} +
+ {/if} +
diff --git a/src/base/projects/Routes.svelte b/src/base/projects/Routes.svelte index 29999a8f2..ad506b997 100644 --- a/src/base/projects/Routes.svelte +++ b/src/base/projects/Routes.svelte @@ -17,3 +17,7 @@ + + + + diff --git a/src/base/projects/View.svelte b/src/base/projects/View.svelte index edb25128a..0e947f22b 100644 --- a/src/base/projects/View.svelte +++ b/src/base/projects/View.svelte @@ -5,35 +5,23 @@ import * as proj from '@app/project'; import Loading from '@app/Loading.svelte'; - import Tree from './Tree.svelte'; - import Blob from './Blob.svelte'; + import Browser from './Browser.svelte'; + + enum State { + Loading, + }; export let urn: string; - export let commit: string; + export let commit: string | null; export let config: Config; export let path: string; - let meta: "loading" | proj.Meta | null = null; - let blob: Promise | null = null; - - const fetchTree = async (path: string) => { - return proj.getTree(urn, commit, path, config); - }; - - const onSelect = async ({ detail: path }: { detail: string }) => { - navigate(`/projects/${urn}/${commit}/${path}`); - }; + let project: State.Loading | proj.Info | null = null; onMount(async () => { - meta = "loading"; - meta = await proj.getMetadata(urn, config); + project = State.Loading; + project = await proj.getInfo(urn, config); }); - - $: if (path === "/") { - blob = proj.getReadme(urn, commit, config); - } else { - blob = proj.getBlob(urn, commit, path, config); - }
-
- {#if meta === "loading"} + {#if project === State.Loading} +
- {:else if meta} -
{meta.name}
+
+ {:else if project} +
+
{project.meta.name}
{urn}
-
{meta.description}
- {/if} -
- commit {commit} -
-
-
-
-
- {#await proj.getTree(urn, commit, "/", config)} - Loading.. - {:then tree} - - {:catch err} - {err} - {/await} +
{project.meta.description}
+
+ commit {commit || project.head}
-
-
- {#await blob} - - {:then blob} - {#if blob} - - {:else} - - {/if} - {:catch} - - {/await} -
-
+
+ + {:else} + + {/if}
diff --git a/src/project.ts b/src/project.ts index 003e3c1a3..df5bc1cea 100644 --- a/src/project.ts +++ b/src/project.ts @@ -10,6 +10,11 @@ export interface Project { }; } +export interface Info { + head: string; + meta: Meta; +} + export interface Meta { name: string; description: string; @@ -61,7 +66,7 @@ export interface Tree { path: string; } -export async function getMetadata(urn: string, config: Config): Promise { +export async function getInfo(urn: string, config: Config): Promise { return api.get(`projects/${urn}`, config); }