From 2b810cba7b8eca2aaaed5e90614775fec4297545 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Fri, 23 Feb 2024 12:07:01 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A6=B4=20Adds=20result=20service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/lib/services/result-service.ts | 19 +++++++++++++++++++ app/src/lib/stores/index.ts | 1 + app/src/lib/stores/logging-store.ts | 11 +++++++++++ 3 files changed, 31 insertions(+) create mode 100644 app/src/lib/services/result-service.ts create mode 100644 app/src/lib/stores/index.ts create mode 100644 app/src/lib/stores/logging-store.ts diff --git a/app/src/lib/services/result-service.ts b/app/src/lib/services/result-service.ts new file mode 100644 index 0000000..ceb4900 --- /dev/null +++ b/app/src/lib/services/result-service.ts @@ -0,0 +1,19 @@ +import { errorLogs, latestErrorLog } from '$lib/stores'; +import type { Result } from '$lib/utilities'; + +class ResultService { + public handleResult(result: Result, tag?: string) { + if (result.isErr()) { + const errorLogEntry = { tag, message: result.inner, exception: result.exception }; + latestErrorLog.set(errorLogEntry); + errorLogs.update((entries) => { + entries.push(errorLogEntry); + return entries; + }); + } + + return result; + } +} + +export default new ResultService(); diff --git a/app/src/lib/stores/index.ts b/app/src/lib/stores/index.ts new file mode 100644 index 0000000..11b92c2 --- /dev/null +++ b/app/src/lib/stores/index.ts @@ -0,0 +1 @@ +export * from './logging-store'; diff --git a/app/src/lib/stores/logging-store.ts b/app/src/lib/stores/logging-store.ts new file mode 100644 index 0000000..ef01666 --- /dev/null +++ b/app/src/lib/stores/logging-store.ts @@ -0,0 +1,11 @@ +import { writable, type Writable } from 'svelte/store'; + +export interface errorLog { + message: unknown; + tag?: string; + exception?: unknown; +} + +export const latestErrorLog: Writable = writable(); + +export const errorLogs: Writable = writable([]);