From cfc5f4a095064bbeea14825b890fd3c9b18904e8 Mon Sep 17 00:00:00 2001 From: Alexis Sellier Date: Wed, 2 Mar 2022 11:41:49 +0100 Subject: [PATCH] Improve project error handling Fail gracefully if we can't load a peer. Signed-off-by: Alexis Sellier --- src/Placeholder.svelte | 29 +++++++++++++ src/base/projects/Browser.svelte | 40 ++++++------------ src/base/projects/Project.svelte | 61 +++++++++++++++++---------- src/base/projects/ProjectRoute.svelte | 2 +- src/project.ts | 6 ++- 5 files changed, 86 insertions(+), 52 deletions(-) create mode 100644 src/Placeholder.svelte diff --git a/src/Placeholder.svelte b/src/Placeholder.svelte new file mode 100644 index 000000000..4d48bb2f4 --- /dev/null +++ b/src/Placeholder.svelte @@ -0,0 +1,29 @@ + + + + +
+
+
{icon}
+ +
+ +
diff --git a/src/base/projects/Browser.svelte b/src/base/projects/Browser.svelte index c69673519..d6afc1908 100644 --- a/src/base/projects/Browser.svelte +++ b/src/base/projects/Browser.svelte @@ -2,6 +2,7 @@ import type { Readable } from 'svelte/store'; import * as proj from '@app/project'; import Loading from '@app/Loading.svelte'; + import Placeholder from '@app/Placeholder.svelte'; import * as utils from '@app/utils'; import Tree from './Tree.svelte'; @@ -100,27 +101,9 @@ width: 100%; } - .error-grey { - color: var(--color-foreground-faded) !important; - background-color: var(--color-foreground-background); - } - .source-tree { overflow-x: hidden; } - .file-not-found { - text-align: center; - border-radius: 0.25rem; - padding-bottom: 2rem; - } - .file-not-found header { - padding: 1rem 0; - font-weight: bold; - } - .file-not-found .icon { - font-size: 1.5rem; - margin-bottom: 1rem; - } nav { padding: 0 2rem; } @@ -181,19 +164,20 @@ {/if} {:catch} -
-
-
🍂
+ + {#if path != "/"}
{path}
{/if} -
- {#if path == "/"} - The README could not be loaded. - {:else} - This path could not be loaded. - {/if} -
+ + + {#if path == "/"} + The README could not be loaded. + {:else} + This path could not be loaded. + {/if} + + {/await} {/if} diff --git a/src/base/projects/Project.svelte b/src/base/projects/Project.svelte index 04156ca4a..9e6adea3b 100644 --- a/src/base/projects/Project.svelte +++ b/src/base/projects/Project.svelte @@ -3,6 +3,7 @@ import type { Config } from '@app/config'; import * as proj from '@app/project'; import Avatar from '@app/Avatar.svelte'; + import Placeholder from '@app/Placeholder.svelte'; import Clipboard from '@app/Clipboard.svelte'; import { formatProfile, formatSeedId, setOpenGraphMetaTag } from '@app/utils'; import { browserStore } from '@app/project'; @@ -17,7 +18,7 @@ export let config: Config; export let project: proj.Project; export let content: proj.ProjectContent; - export let revision: string; + export let revision: string | null; let parentName = project.profile ? formatProfile(project.profile.nameOrAddress, config) : null; let pageTitle = parentName ? `${parentName}/${project.name}` : project.name; @@ -49,9 +50,6 @@