@@ -25,26 +25,30 @@ const timezones: Record<Server, string> = {
2525export default function Events ( props : Props & { location : string } ) {
2626 const [ now , setNow ] = useState ( ( ) => Date . now ( ) )
2727
28- const [ server , setServer ] = useState ( "Europe" as Server )
29- const [ serverTimezone , setServerTimezone ] = useState ( "+08:00" )
30-
31- const [ showPast , setShowPast ] = useState ( false )
28+ const [ server , setServer ] = useState ( ( ) => {
29+ if ( typeof window == "undefined" ) return "Europe"
3230
33- useEffect ( ( ) => {
34- const server = localStorage . getItem ( "server" )
31+ let server = localStorage . getItem ( "server" )
3532
3633 if ( server && Object . keys ( timezones ) . includes ( server ) )
37- setServer ( server as Server )
38- else {
39- const clientOffset = new Date ( ) . getTimezoneOffset ( ) / 60
40- if ( clientOffset > 5 )
41- setServer ( "Asia" )
42- else if ( clientOffset > - 2 || clientOffset < - 11 )
43- setServer ( "Europe" )
44- else
45- setServer ( "North America" )
46- }
47- } , [ ] )
34+ return server as Server
35+
36+ const clientOffset = new Date ( ) . getTimezoneOffset ( ) / 60
37+
38+ if ( clientOffset > 5 )
39+ server = "Asia"
40+ else if ( clientOffset > - 2 || clientOffset < - 11 )
41+ server = "Europe"
42+ 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+
4852
4953 useEffect ( ( ) => {
5054 setServerTimezone ( timezones [ server ] )
@@ -66,10 +70,10 @@ export default function Events(props: Props & { location: string }) {
6670 const end = getEndTime ( e , serverTimezone )
6771
6872 return start && start . getTime ( ) <= now &&
69- (
70- ( end && end . getTime ( ) >= now ) ||
71- ( ! end && e . reminder == "daily" )
72- )
73+ (
74+ ( end && end . getTime ( ) >= now ) ||
75+ ( ! end && e . reminder == "daily" )
76+ )
7377 } ) . sort ( ( a , b ) => {
7478 const endA = getEndTime ( a , serverTimezone )
7579 const endB = getEndTime ( b , serverTimezone )
@@ -158,7 +162,7 @@ export default function Events(props: Props & { location: string }) {
158162function EventCard ( { e, className, now, serverTimezone, hoverClass = "" } : { e : GenshinEvent , className : string , hoverClass ?: string , now : number , serverTimezone : string } ) {
159163 const start = getStartTime ( e , serverTimezone )
160164 const end = getEndTime ( e , serverTimezone )
161- const child = < div className = { `text-center max-w-md w-full rounded-xl pb-1 ${ className } ${ e . link ? `${ hoverClass } transition` : "" } ` } >
165+ const child = < div className = { `text-center max-w-md w-full rounded-xl pb-1 ${ className } ${ e . link ? `${ hoverClass } transition` : "" } ` } >
162166 < div className = { `${ styles . mask } w-full` } >
163167 < img loading = "lazy" className = "rounded-t-xl" src = { e . img ?? "/img/Event_No_Img.png" } width = { 448 } alt = { e . name } />
164168 </ div >
0 commit comments