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([]);