Skip to content

Commit f6d3b78

Browse files
committed
use time zone from config
1 parent 5bd3dd5 commit f6d3b78

5 files changed

Lines changed: 21 additions & 11 deletions

File tree

src/components/Itinerary.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useState } from 'react';
22
import { FormattedMessage, useIntl } from 'react-intl';
33
import { formatDurationBetween } from '../lib/time';
4-
import { getAgencyDisplayName } from '../lib/region';
4+
import { getAgencyDisplayName, getTimezone } from '../lib/region';
55
import Icon from './primitives/Icon';
66
import ItineraryBikeLeg from './ItineraryBikeLeg';
77
import ItineraryHeader from './ItineraryHeader';
@@ -129,6 +129,8 @@ export default function Itinerary({
129129
? route.legs[0]
130130
: null;
131131

132+
const timezone = getTimezone();
133+
132134
return (
133135
<div className="py-8 px-5">
134136
<div className="Itinerary_backBtnAndHeadings">
@@ -144,12 +146,12 @@ export default function Itinerary({
144146
description="start and end time for a trip"
145147
values={{
146148
startTime: intl.formatTime(startTime, {
147-
timeZone: 'America/Los_Angeles',
149+
timeZone: timezone,
148150
hour: 'numeric',
149151
minute: 'numeric',
150152
}),
151153
endTime: intl.formatTime(endTime, {
152-
timeZone: 'America/Los_Angeles',
154+
timeZone: timezone,
153155
hour: 'numeric',
154156
minute: 'numeric',
155157
}),

src/components/RoutesOverview.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import type {
1111
TransitLeg,
1212
} from '../lib/BikeHopperClient';
1313
import formatDistance from '../lib/formatDistance';
14-
import { getTransitDataAcknowledgement } from '../lib/region';
14+
import { getTimezone, getTransitDataAcknowledgement } from '../lib/region';
1515
import { formatInterval } from '../lib/time';
1616
import BorderlessButton from './BorderlessButton';
1717
import Icon from './primitives/Icon';
@@ -61,6 +61,8 @@ export default function RoutesOverview({
6161
dispatch(shareRoutes(intl));
6262
};
6363

64+
const timezone = getTimezone();
65+
6466
return (
6567
<div className="flex flex-col">
6668
{outOfAreaMsg && <div className="border-gray-300">{outOfAreaMsg}</div>}
@@ -143,14 +145,14 @@ export default function RoutesOverview({
143145
description="compact departure and arrival time"
144146
values={{
145147
depart: intl.formatTime(route.legs[0].departure_time, {
146-
timeZone: 'America/Los_Angeles',
148+
timeZone: timezone,
147149
hour: 'numeric',
148150
minute: 'numeric',
149151
}),
150152
arrive: intl.formatTime(
151153
route.legs[route.legs.length - 1].arrival_time,
152154
{
153-
timeZone: 'America/Los_Angeles',
155+
timeZone: timezone,
154156
hour: 'numeric',
155157
minute: 'numeric',
156158
},

src/lib/BikeHopperClient.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { DateTime } from 'luxon';
22
import delay from './delay';
33
import {
44
getDefaultViewportBounds,
5+
getTimezone,
56
RegionConfig,
67
RegionConfigSchema,
78
} from './region';
@@ -40,10 +41,9 @@ export async function fetchRegionConfig(): Promise<RegionConfig> {
4041
}
4142

4243
function timeStampToLocalTime(timeStamp: number) {
43-
const serverTime = DateTime.fromMillis(timeStamp).setZone(
44-
'America/Los_Angeles',
45-
{ keepLocalTime: true },
46-
);
44+
const serverTime = DateTime.fromMillis(timeStamp).setZone(getTimezone(), {
45+
keepLocalTime: true,
46+
});
4747
const clientTime = serverTime.toLocal().toMillis();
4848
return clientTime;
4949
}

src/lib/region.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ export function getDefaultViewportBounds(): [number, number, number, number] {
3131
}
3232
}
3333

34+
export function getTimezone(): string | undefined {
35+
return _getConfig().timezone;
36+
}
37+
3438
export function getTransitServiceArea():
3539
| GeoJSON.Feature<GeoJSON.Polygon>
3640
| undefined {
@@ -103,6 +107,7 @@ export const RegionConfigSchema = z.object({
103107
supportedRegionDescription: z.string().optional(),
104108
mapboxAccessToken: z.string().optional(),
105109
mapboxStyleUrl: z.string().optional(),
110+
timezone: z.string().optional(),
106111
});
107112
export type RegionConfig = z.infer<typeof RegionConfigSchema>;
108113

src/lib/time.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { DateTime, Duration } from 'luxon';
22
import type { IntlShape } from 'react-intl';
3+
import { getTimezone } from './region';
34

45
// TODO localize all of these
56

67
export function formatTime(jsDate: Date) {
78
return DateTime.fromJSDate(jsDate)
8-
.setZone('America/Los_Angeles')
9+
.setZone(getTimezone())
910
.toLocaleString(DateTime.TIME_SIMPLE);
1011
}
1112

0 commit comments

Comments
 (0)