added todos | payday time settings | refactor payment scheduling

This commit is contained in:
JCEEE
2026-08-04 08:34:14 +01:00
parent ccbbd302d4
commit 85ea97ae96
16 changed files with 2877 additions and 659 deletions
+38 -4
View File
@@ -24,8 +24,17 @@ async function request(
headers: headers || { 'Content-Type': 'application/json' },
body: body ? JSON.stringify(body) : undefined
});
const data = await res.json();
if (!res.ok) throw new Error(data.error || `${method} ${path} failed`);
const text = await res.text();
let data: any = {};
try {
data = text ? JSON.parse(text) : {};
} catch {
data = { raw: text };
}
if (!res.ok) {
const msg = data?.error || data?.message || `${method} ${path} failed (HTTP ${res.status})`;
throw new Error(msg);
}
return data;
}
@@ -62,8 +71,19 @@ export const hono = {
async renameFam(event: RequestEvent, famId: string, name: string) {
return request('PATCH', `/api/admin/${famId}/fam`, { name }, sessionHeaders(event));
},
async updatePayday(event: RequestEvent, famId: string, payday: number) {
return request('PATCH', `/api/admin/${famId}/fam`, { payday }, sessionHeaders(event));
async updatePayday(
event: RequestEvent,
famId: string,
payday: number,
paydayTime?: string,
timezone?: string
) {
return request(
'PATCH',
`/api/admin/${famId}/fam`,
{ payday, ...(paydayTime !== undefined ? { paydayTime } : {}), ...(timezone !== undefined ? { timezone } : {}) },
sessionHeaders(event)
);
},
async fam(event: RequestEvent, famId: string) {
return request('GET', `/api/admin/${famId}/fam`, undefined, sessionHeaders(event));
@@ -216,6 +236,20 @@ export const hono = {
},
async request(event: RequestEvent, method: string, path: string, body?: unknown) {
return request(method, path, body, sessionHeaders(event));
},
async settings(event: RequestEvent, famId: string) {
return request('GET', `/api/admin/${famId}/settings`, undefined, sessionHeaders(event));
},
async updateSettings(event: RequestEvent, famId: string, data: Record<string, unknown>) {
return request('PATCH', `/api/admin/${famId}/settings`, data, sessionHeaders(event));
},
async eowPreview(event: RequestEvent, famId: string) {
return request(
'GET',
`/api/admin/${famId}/debug/eow-preview`,
undefined,
sessionHeaders(event)
);
}
}
};