Skip to content

Commit c9ebeb7

Browse files
committed
Timezone detection is hard
1 parent 4643bac commit c9ebeb7

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

pages/events.tsx

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,36 @@ const timezones: Record<Server, string> = {
2525
export default function Events(props: Props & { location: string }) {
2626
const [now, setNow] = useState(() => Date.now())
2727

28-
const [server, setServer] = useState(() => {
29-
if (typeof window == "undefined") return "Europe"
28+
const [server, setServer] = useState(undefined as Server|undefined)
3029

31-
let server = localStorage.getItem("server")
30+
const [serverTimezone, setServerTimezone] = useState("+08:00")
31+
const [showPast, setShowPast] = useState(false)
32+
33+
useEffect(() => {
34+
if (typeof window == "undefined") return undefined
35+
36+
const server = localStorage.getItem("server")
3237

33-
if (server && Object.keys(timezones).includes(server))
34-
return server as Server
38+
if (server && Object.keys(timezones).includes(server)) {
39+
setServer(server as Server)
40+
return
41+
}
3542

3643
const clientOffset = -(new Date().getTimezoneOffset() / 60)
3744

3845
if (clientOffset > 5)
39-
server = "Asia"
46+
setServer("Asia")
4047
else if (clientOffset > -2 || clientOffset < -11)
41-
server = "Europe"
48+
setServer("Europe")
4249
else
43-
server = "North America"
44-
45-
localStorage.setItem("server", server)
46-
return server as Server
47-
})
48-
49-
const [serverTimezone, setServerTimezone] = useState("+08:00")
50-
const [showPast, setShowPast] = useState(false)
51-
50+
setServer("North America")
51+
}, [])
5252

5353
useEffect(() => {
54-
setServerTimezone(timezones[server])
55-
localStorage.setItem("server", server)
54+
if (server) {
55+
setServerTimezone(timezones[server])
56+
localStorage.setItem("server", server)
57+
}
5658
}, [server])
5759

5860
useEffect(() => {

0 commit comments

Comments
 (0)