import { fetchReportJsonData } from "@allurereport/web-commons"; import { signal } from "@preact/signals"; import { type ClassicTestResult } from "types"; import { type StoreSignalState } from "./types"; export type TestResultsStoreState = Record; export type TestResultNavStoreState = string[]; export const testResultStore = signal>({ loading: true, error: undefined, data: undefined, }); export const testResultNavStore = signal>({ loading: true, error: undefined, data: undefined, }); export const fetchTestResultNav = async () => { try { const data = await fetchReportJsonData("widgets/nav.json", { bustCache: true }); testResultNavStore.value = { data, error: undefined, loading: false, }; } catch (err) { testResultNavStore.value = { ...testResultNavStore.value, error: err.message, loading: false, }; } }; export const fetchTestResult = async (testResultId: string) => { if (!testResultId) { return; } testResultStore.value = { ...testResultStore.value, loading: true, error: undefined, }; try { const data = await fetchReportJsonData(`data/test-results/${testResultId}.json`); testResultStore.value = { data: { ...testResultStore.value.data, [testResultId]: data }, error: undefined, loading: false, }; } catch (err) { testResultStore.value = { ...testResultStore.value, error: err.message, loading: false, }; } };