From 7a3958ab4a9159ccd1568e0bafbe32fdb31677af Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Mon, 4 Apr 2022 16:43:29 +0200 Subject: [PATCH] Improve error when http-api outdated Signed-off-by: Sebastian Martinez --- src/api.ts | 10 ++--- src/base/projects/History.svelte | 11 ++++-- src/commit.ts | 63 +++++++++++++++++--------------- 3 files changed, 47 insertions(+), 37 deletions(-) diff --git a/src/api.ts b/src/api.ts index b9673b626..dc56ab6cb 100644 --- a/src/api.ts +++ b/src/api.ts @@ -38,19 +38,19 @@ export async function get( } }); } catch (err) { - throw new ApiError(urlString, "API request failed"); + throw new ApiError("API request failed", urlString); } if (! response.ok) { - throw new ApiError(urlString, "Not found"); + throw new ApiError("Not found", urlString); } return response.json(); } -class ApiError extends Error { - url: string; +export class ApiError extends Error { + url?: string; - constructor(url: string, message: string) { + constructor(message: string, url?: string) { super(message); if (Error.captureStackTrace) { diff --git a/src/base/projects/History.svelte b/src/base/projects/History.svelte index c0d76585a..84937c5ba 100644 --- a/src/base/projects/History.svelte +++ b/src/base/projects/History.svelte @@ -3,6 +3,7 @@ import type { Project } from "@app/project"; import Loading from "@app/Loading.svelte"; import { groupCommitHistory, GroupedCommitsHistory } from "@app/commit"; + import Message from "@app/Message.svelte"; export let project: Project; export let commit: string; @@ -66,8 +67,12 @@ {:catch err}
-
-
API request to {err.url} failed.
-
+ + {#if err.url} + API request to {err.url} failed. + {:else} + {err.message} + {/if} +
{/await} diff --git a/src/commit.ts b/src/commit.ts index 43c54190a..3714c0fc1 100644 --- a/src/commit.ts +++ b/src/commit.ts @@ -1,5 +1,6 @@ import type { Stats } from "@app/project"; import type { Diff } from "@app/diff"; +import { ApiError } from "@app/api"; export interface CommitsHistory { headers: CommitMetadata[]; @@ -37,7 +38,7 @@ export interface Person { } export interface CommitContext { - committer: { + committer?: { peer: { id: string; person: Person; @@ -92,36 +93,40 @@ export function groupCommits(commits: { header: CommitHeader; context: CommitCon const groupedCommits: CommitGroup[] = []; let groupDate: Date | undefined = undefined; - commits = commits.sort((a, b) => { - if (a.header.committerTime > b.header.committerTime) { - return -1; - } else if (a.header.committerTime < b.header.committerTime) { - return 1; + try { + commits = commits.sort((a, b) => { + if (a.header.committerTime > b.header.committerTime) { + return -1; + } else if (a.header.committerTime < b.header.committerTime) { + return 1; + } + + return 0; + }); + + for (const commit of commits) { + const time = commit.header.committerTime * 1000; + const date = new Date(time); + const isNewDay = + !groupedCommits.length || + !groupDate || + date.getDate() < groupDate.getDate() || + date.getMonth() < groupDate.getMonth() || + date.getFullYear() < groupDate.getFullYear(); + + if (isNewDay) { + groupedCommits.push({ + time: formatGroupTime(time), + commits: [], + }); + groupDate = date; + } + groupedCommits[groupedCommits.length - 1].commits.push(commit); } - - return 0; - }); - - for (const commit of commits) { - const time = commit.header.committerTime * 1000; - const date = new Date(time); - const isNewDay = - !groupedCommits.length || - !groupDate || - date.getDate() < groupDate.getDate() || - date.getMonth() < groupDate.getMonth() || - date.getFullYear() < groupDate.getFullYear(); - - if (isNewDay) { - groupedCommits.push({ - time: formatGroupTime(time), - commits: [], - }); - groupDate = date; - } - groupedCommits[groupedCommits.length - 1].commits.push(commit); + return groupedCommits; + } catch (err) { + throw new ApiError("Not able to create commit history, please consider updating seed HTTP API."); } - return groupedCommits; } export const formatCommitTime = (t: number): string => {