useAppSettings: align fallback defaults to Angular AppSettings (1/7 board, 1/330 schedule, 2h flight status)

This commit is contained in:
2026-04-20 15:21:52 +03:00
parent 15f3356a75
commit ae133c1e36
2 changed files with 22 additions and 12 deletions
+9 -7
View File
@@ -47,10 +47,11 @@ describe("useAppSettings", () => {
const { result } = renderHook(() => useAppSettings());
await waitFor(() => expect(result.current.loading).toBe(false));
expect(result.current.onlineboardSearchFrom).toBe(2);
expect(result.current.onlineboardSearchTo).toBe(14);
expect(result.current.scheduleSearchFrom).toBe(30);
expect(result.current.scheduleSearchTo).toBe(30);
// Defaults match Angular AppSettings (boardSearch 1/7, scheduleSearch 1/330).
expect(result.current.onlineboardSearchFrom).toBe(1);
expect(result.current.onlineboardSearchTo).toBe(7);
expect(result.current.scheduleSearchFrom).toBe(1);
expect(result.current.scheduleSearchTo).toBe(330);
});
it("returns defaults when a specific value does not match /\\d+d/", async () => {
@@ -67,7 +68,7 @@ describe("useAppSettings", () => {
const { result } = renderHook(() => useAppSettings());
await waitFor(() => expect(result.current.loading).toBe(false));
expect(result.current.onlineboardSearchFrom).toBe(2);
expect(result.current.onlineboardSearchFrom).toBe(1); // default, blah doesn't parse
expect(result.current.onlineboardSearchTo).toBe(14);
});
@@ -80,7 +81,7 @@ describe("useAppSettings", () => {
expect(result.current.loading).toBe(true);
await waitFor(() => expect(result.current.loading).toBe(false));
expect(result.current.error).toBe(err);
expect(result.current.onlineboardSearchFrom).toBe(2);
expect(result.current.onlineboardSearchFrom).toBe(1);
});
it("parses buttons config into hour numbers", async () => {
@@ -108,7 +109,8 @@ describe("useAppSettings", () => {
const { result } = renderHook(() => useAppSettings());
await waitFor(() => expect(result.current.loading).toBe(false));
expect(result.current.flightStatusAvailableFromHours).toBe(24);
// Defaults match Angular (flightStatusAvailableFrom: 2h, buyPeriod.min: 2h, buyPeriod.max: 72h).
expect(result.current.flightStatusAvailableFromHours).toBe(2);
expect(result.current.buyTicketMinHours).toBe(2);
expect(result.current.buyTicketMaxHours).toBe(72);
});
+13 -5
View File
@@ -5,12 +5,20 @@ import { getAppSettings } from "@/shared/api/appSettings.js";
const DAYS_PATTERN = /^(\d+)d$/;
const HOURS_PATTERN = /^(\d+)h$/;
// Mirrors Angular's `AppSettings` default payload
// (ClientApp/src/app/shared/models-legacy/app-settings.model.ts):
// boardSearchFrom: 1, boardSearchTo: 7,
// scheduleSearchFrom: 1, scheduleSearchTo: 330,
// flightStatusAvailableFrom: 2 (hours), buyPeriod.min: 2h, buyPeriod.max: 330d
// These are used when the UI-options API fails or is unreachable —
// keeping them aligned with Angular avoids a silent calendar-window
// mismatch in offline / error paths.
const DEFAULTS = {
onlineboardSearchFrom: 2,
onlineboardSearchTo: 14,
scheduleSearchFrom: 30,
scheduleSearchTo: 30,
flightStatusAvailableFromHours: 24,
onlineboardSearchFrom: 1,
onlineboardSearchTo: 7,
scheduleSearchFrom: 1,
scheduleSearchTo: 330,
flightStatusAvailableFromHours: 2,
buyTicketMinHours: 2,
buyTicketMaxHours: 72,
} as const;