From 7e6568d13a02fda61803771ecd1bfc29a3a35905 Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Wed, 20 Sep 2023 11:34:21 +0100 Subject: [PATCH] Improve error handling, backend isn't providing correct data --- src/lib/ldb/staff/staff-ldb.svelte | 28 +++++++++++++++++++--------- src/lib/ldb/staff/train-detail.ts | 3 +++ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/lib/ldb/staff/staff-ldb.svelte b/src/lib/ldb/staff/staff-ldb.svelte index 57fcd0d..ba85e41 100644 --- a/src/lib/ldb/staff/staff-ldb.svelte +++ b/src/lib/ldb/staff/staff-ldb.svelte @@ -5,12 +5,14 @@ import { detailInit, defineDetail } from './train-detail'; import TrainDetail from './train-detail.svelte'; import { fetchStaffLdb } from './fetch'; + import { error } from '@sveltejs/kit'; export let station: string; export let title: string | undefined = 'Loading...'; - export let error = { - state: false, - name: 'none' + + let errorDetail = { + code: '', + message: '', }; let detail = detailInit(); @@ -29,6 +31,8 @@ title = data.data.locationName; return data.data; } + errorDetail.code = data.obStatus.toString() || "UNKNOWN"; + errorDetail.message = data.obMsg || "An unknown error occoured"; throw new Error('Unable to Fetch Data'); } @@ -59,11 +63,17 @@ {/if} {/if} {:catch} - Error Loading Data +

Error

+

ERR-CODE: {errorDetail.code}

+

Message:
{errorDetail.message}

{/await} -{#if error.state} - {#if error.name === 'unauthorized'} -

Error: {error.name.toLocaleUpperCase()}

- {/if} -{/if} + \ No newline at end of file diff --git a/src/lib/ldb/staff/train-detail.ts b/src/lib/ldb/staff/train-detail.ts index 17c4eb0..1d39bc1 100644 --- a/src/lib/ldb/staff/train-detail.ts +++ b/src/lib/ldb/staff/train-detail.ts @@ -1,3 +1,4 @@ +// Contains the details required to lookup train details export interface Detail { show: boolean; headcode: string; @@ -5,6 +6,7 @@ export interface Detail { uid: string; } +// Initiates/Resets a `Detail` interface export function detailInit(): Detail { const detail: Detail = { show: false, @@ -15,6 +17,7 @@ export function detailInit(): Detail { return detail; } +// Initiates/Updates a `Detail` interface using the given values export function defineDetail(rid: string, uid: string, tid: string) { const detail: Detail = { rid: rid,