@allurereport/web-awesome
Version:
The static files for Allure Awesome Report
46 lines (37 loc) • 1.23 kB
text/typescript
import type { TestCategories } from "@allurereport/core-api";
import { fetchReportJsonData } from "@allurereport/web-commons";
import { computed, signal } from "@preact/signals";
import type { StoreSignalState } from "@/stores/types";
export const categoriesStore = signal<StoreSignalState<TestCategories>>({
loading: true,
error: undefined,
data: undefined,
});
export const noCategories = computed(() => categoriesStore?.value?.data.roots.length);
let lastCategoriesEnv: string | undefined;
const resolveCategoriesPath = (env?: string) => (env ? `widgets/${env}/categories.json` : "widgets/categories.json");
export const fetchCategoriesData = async (env?: string) => {
if (lastCategoriesEnv === env && categoriesStore.peek().data) {
return;
}
lastCategoriesEnv = env;
categoriesStore.value = {
...categoriesStore.value,
loading: true,
error: undefined,
};
try {
const res = await fetchReportJsonData<TestCategories>(resolveCategoriesPath(env));
categoriesStore.value = {
data: res,
error: undefined,
loading: false,
};
} catch (e) {
categoriesStore.value = {
...categoriesStore.value,
error: undefined,
loading: false,
};
}
};