diff --git a/webapp/app.ironcalc.com/frontend/src/App.tsx b/webapp/app.ironcalc.com/frontend/src/App.tsx index a55c4c7..402db67 100644 --- a/webapp/app.ironcalc.com/frontend/src/App.tsx +++ b/webapp/app.ironcalc.com/frontend/src/App.tsx @@ -10,6 +10,7 @@ import { uploadFile, } from "./components/rpc"; import { + createModelWithSafeTimezone, createNewModel, deleteModelByUuid, deleteSelectedModel, @@ -65,7 +66,7 @@ function App() { const newModel = loadSelectedModelFromStorage(); if (!newModel) { setShowWelcomeDialog(true); - const createdModel = new Model("template", "en", "UTC"); + const createdModel = createModelWithSafeTimezone(); setModel(createdModel); } else { setModel(newModel); diff --git a/webapp/app.ironcalc.com/frontend/src/components/storage.ts b/webapp/app.ironcalc.com/frontend/src/components/storage.ts index 7bdb6b2..14833a1 100644 --- a/webapp/app.ironcalc.com/frontend/src/components/storage.ts +++ b/webapp/app.ironcalc.com/frontend/src/components/storage.ts @@ -85,11 +85,21 @@ function getNewName(existingNames: string[]): string { return "Workbook-Infinity"; } +export function createModelWithSafeTimezone(): Model { + try { + const tz = Intl.DateTimeFormat().resolvedOptions().timeZone; + return new Model("template", "en", tz); + } catch { + console.warn("Failed to get timezone, defaulting to UTC"); + return new Model("template", "en", "UTC"); + } +} + export function createNewModel(): Model { const models = getModelsMetadata(); const name = getNewName(Object.values(models).map((m) => m.name)); - const model = new Model(name, "en", "UTC"); + const model = createModelWithSafeTimezone(); const uuid = randomUUID(); localStorage.setItem("selected", uuid); localStorage.setItem(uuid, bytesToBase64(model.toBytes()));