Phase 18: Auto timezone detection and ability to change timezone #21
@@ -27,7 +27,7 @@ import { eq, sql } from 'drizzle-orm';
|
|||||||
import { db } from '../db/client.js';
|
import { db } from '../db/client.js';
|
||||||
import { users, memberCredentials, calendars, appConfig } from '../db/schema.js';
|
import { users, memberCredentials, calendars, appConfig } from '../db/schema.js';
|
||||||
import { requireAdmin } from '../lib/requireAdmin.js';
|
import { requireAdmin } from '../lib/requireAdmin.js';
|
||||||
import { isValidIanaTimezone, getHouseholdTimezone } from '../lib/householdTimezone.js';
|
import { isValidIanaTimezone, resolveHouseholdTimezone } from '../lib/householdTimezone.js';
|
||||||
import {
|
import {
|
||||||
validateEncryptAndStoreCredential,
|
validateEncryptAndStoreCredential,
|
||||||
CredentialValidationError,
|
CredentialValidationError,
|
||||||
@@ -205,9 +205,9 @@ adminRouter.get('/config/timezone', async (c) => {
|
|||||||
.limit(1);
|
.limit(1);
|
||||||
|
|
||||||
const isExplicitlySet = row?.value != null;
|
const isExplicitlySet = row?.value != null;
|
||||||
const timezone = isExplicitlySet
|
// IN-01/IN-02: reuse the row we just SELECTed and let the centralized accessor apply
|
||||||
? (row.value as string)
|
// the D-06 fallback — no second app_config round-trip, single source for the policy.
|
||||||
: await getHouseholdTimezone(db);
|
const timezone = resolveHouseholdTimezone(row?.value ?? null);
|
||||||
|
|
||||||
return c.json({ timezone, isExplicitlySet });
|
return c.json({ timezone, isExplicitlySet });
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user