);
};
+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();
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,
{episodes.length ? <>
<div className="text-muted">
{t('schedule.tzHint', {
- tzname: Intl.DateTimeFormat().resolvedOptions().timeZone,
+ tzname: getTimeZoneString(),
tzoff: moment().format('Z'),
})}
</div>
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 = [
<EpisodesProvider setEpisodes={setEpisodes}>
<div className="text-muted">
{t('schedule.tzHint', {
- tzname: Intl.DateTimeFormat().resolvedOptions().timeZone,
+ tzname: getTimeZoneString(),
tzoff: moment().format('Z'),
})}
</div>