rewrite website

This commit is contained in:
2025-10-13 17:22:49 +02:00
parent a6d910f56a
commit 32f28e5324
263 changed files with 17904 additions and 14451 deletions

View File

@@ -0,0 +1,55 @@
import { type ActionReturnType, actions } from 'astro:actions';
import { writable } from 'svelte/store';
import { actionErrorPopup } from '@util/action.ts';
import { addToWritableArray, deleteFromWritableArray, updateWritableArray } from '@util/state.ts';
// types
export type StrikeReasons = Exclude<
ActionReturnType<typeof actions.report.strikeReasons>['data'],
undefined
>['strikeReasons'];
export type StrikeReason = StrikeReasons[0];
// state
export const strikeReasons = writable<StrikeReasons>([]);
// actions
export async function fetchStrikeReasons() {
const { data, error } = await actions.report.strikeReasons();
if (error) {
actionErrorPopup(error);
return;
}
strikeReasons.set(data.strikeReasons);
}
export async function addStrikeReason(strikeReason: StrikeReason) {
const { data, error } = await actions.report.addStrikeReason(strikeReason);
if (error) {
actionErrorPopup(error);
return;
}
addToWritableArray(strikeReasons, Object.assign(strikeReason, { id: data.id }));
}
export async function editStrikeReason(strikeReason: StrikeReason) {
const { error } = await actions.report.editStrikeReason(strikeReason);
if (error) {
actionErrorPopup(error);
return;
}
updateWritableArray(strikeReasons, strikeReason, (t) => t.id == strikeReason.id);
}
export async function deleteStrikeReason(strikeReason: StrikeReason) {
const { error } = await actions.report.deleteStrikeReason(strikeReason);
if (error) {
actionErrorPopup(error);
return;
}
deleteFromWritableArray(strikeReasons, (t) => t.id == strikeReason.id);
}