From f075c5a241c8a0dfdc9de7609ce9a8013a6a6fbb Mon Sep 17 00:00:00 2001 From: Daniel Karbach Date: Sun, 31 Aug 2025 19:33:46 +0200 Subject: [PATCH] safer method of querying local zone name --- resources/js/helpers/Episode.js | 8 ++++++++ resources/js/pages/Event.jsx | 3 ++- resources/js/pages/Schedule.jsx | 4 ++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/resources/js/helpers/Episode.js b/resources/js/helpers/Episode.js index 6e28064..d48ccdc 100644 --- a/resources/js/helpers/Episode.js +++ b/resources/js/helpers/Episode.js @@ -50,6 +50,14 @@ export const hasSGRestream = episode => { ); }; +export const getTimeZoneString = () => { + try { + return Intl.DateTimeFormat().resolvedOptions().timeZone || 'unknown'; + } catch (e) { + return 'unknown'; + } +} + export const isActive = episode => { if (!episode || !episode.start) return false; const now = moment(); diff --git a/resources/js/pages/Event.jsx b/resources/js/pages/Event.jsx index 2eba568..908aa8a 100644 --- a/resources/js/pages/Event.jsx +++ b/resources/js/pages/Event.jsx @@ -16,6 +16,7 @@ import Loading from '../components/common/Loading'; import EpisodeList from '../components/episodes/List'; import Detail from '../components/events/Detail'; import Dialog from '../components/techniques/Dialog'; +import { getTimeZoneString } from '../helpers/Episode'; import { hasConcluded } from '../helpers/Event'; import { mayEditContent, @@ -187,7 +188,7 @@ export const Component = () => { {episodes.length ? <>
{t('schedule.tzHint', { - tzname: Intl.DateTimeFormat().resolvedOptions().timeZone, + tzname: getTimeZoneString(), tzoff: moment().format('Z'), })}
diff --git a/resources/js/pages/Schedule.jsx b/resources/js/pages/Schedule.jsx index c4be99e..4897824 100644 --- a/resources/js/pages/Schedule.jsx +++ b/resources/js/pages/Schedule.jsx @@ -10,7 +10,7 @@ import ErrorBoundary from '../components/common/ErrorBoundary'; import Icon from '../components/common/Icon'; import Filter from '../components/episodes/Filter'; import List from '../components/episodes/List'; -import { getFilterParams, isFilterActive } from '../helpers/Episode'; +import { getFilterParams, getTimeZoneString, isFilterActive } from '../helpers/Episode'; import { EpisodesProvider } from '../hooks/episodes'; const GAMES = [ @@ -137,7 +137,7 @@ export const Component = () => {
{t('schedule.tzHint', { - tzname: Intl.DateTimeFormat().resolvedOptions().timeZone, + tzname: getTimeZoneString(), tzoff: moment().format('Z'), })}
-- 2.47.2