Refactor frontend API calls into hooks and complete task states

This commit is contained in:
2026-03-20 15:18:04 +01:00
parent d30d138146
commit 28a7610276
16 changed files with 483 additions and 409 deletions

View File

@@ -0,0 +1,41 @@
import { useCallback, useEffect, useState } from "react";
import { fetchTimezone } from "../api/setup";
export interface UseTimezoneDataResult {
timezone: string;
loading: boolean;
error: string | null;
refresh: () => Promise<void>;
}
export function useTimezoneData(): UseTimezoneDataResult {
const [timezone, setTimezone] = useState<string>("UTC");
const [loading, setLoading] = useState<boolean>(true);
const [error, setError] = useState<string | null>(null);
const load = useCallback(async (): Promise<void> => {
setLoading(true);
setError(null);
try {
const resp = await fetchTimezone();
setTimezone(resp.timezone);
} catch (err: unknown) {
setError(err instanceof Error ? err.message : "Failed to fetch timezone");
setTimezone("UTC");
} finally {
setLoading(false);
}
}, []);
useEffect(() => {
void load();
}, [load]);
return {
timezone,
loading,
error,
refresh: load,
};
}