From 04a6696e3314c3a25af783670381bc3f70e68f2d Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Thu, 30 Nov 2023 12:03:09 -0800 Subject: [PATCH] timerender: Add fallbacks for browser time zone detection. Signed-off-by: Anders Kaseorg --- web/src/timerender.ts | 12 ++++++++++++ web/src/user_settings.ts | 1 + 2 files changed, 13 insertions(+) diff --git a/web/src/timerender.ts b/web/src/timerender.ts index 9ca4934034..853308ae66 100644 --- a/web/src/timerender.ts +++ b/web/src/timerender.ts @@ -19,6 +19,18 @@ import {user_settings} from "./user_settings"; let next_timerender_id = 0; export let display_time_zone = new Intl.DateTimeFormat().resolvedOptions().timeZone; +if ( + display_time_zone === undefined || // https://bugs.chromium.org/p/chromium/issues/detail?id=1487920 + display_time_zone === "Etc/Unknown" // https://bugs.chromium.org/p/chromium/issues/detail?id=1473422 +) { + display_time_zone = user_settings.timezone; + try { + new Intl.DateTimeFormat(undefined, {timeZone: display_time_zone}); + } catch { + display_time_zone = "UTC"; + } +} + const formatter_map = new Map(); export function clear_for_testing(): void { diff --git a/web/src/user_settings.ts b/web/src/user_settings.ts index 1d33a0002c..d311d193f5 100644 --- a/web/src/user_settings.ts +++ b/web/src/user_settings.ts @@ -58,6 +58,7 @@ export type UserSettings = (StreamNotificationSettings & send_read_receipts: boolean; automatically_follow_topics_policy: number; automatically_unmute_topics_in_muted_streams_policy: number; + timezone: string; }; export let user_settings: UserSettings;