diff --git a/src/equicordplugins/timezones/TimezoneModal.tsx b/src/equicordplugins/timezones/TimezoneModal.tsx index a1038eb3..4b9f859c 100644 --- a/src/equicordplugins/timezones/TimezoneModal.tsx +++ b/src/equicordplugins/timezones/TimezoneModal.tsx @@ -29,10 +29,10 @@ export function SetTimezoneModal({ userId, modalProps, database }: { userId: str const localTimezone = timezones[userId]; const shouldUseDatabase = settings.store.useDatabase && - (settings.store.preferDatabaseOverLocal || localTimezone == null); + (settings.store.preferDatabaseOverLocal || !localTimezone); if (shouldUseDatabase) { - getTimezone(userId).then(setCurrentValue); + getTimezone(userId).then(e => setCurrentValue(e ?? localTimezone)); } else { setCurrentValue(localTimezone); } diff --git a/src/equicordplugins/timezones/database.tsx b/src/equicordplugins/timezones/database.tsx index cda64d60..45e13b58 100644 --- a/src/equicordplugins/timezones/database.tsx +++ b/src/equicordplugins/timezones/database.tsx @@ -4,24 +4,17 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -type CacheEntry = { - value: string | null; - expires: number; -}; - import { DataStore } from "@api/index"; import { openModal } from "@utils/modal"; import { OAuth2AuthorizeModal, showToast, Toasts } from "@webpack/common"; +import { databaseTimezones } from "."; + export const DOMAIN = "https://timezone.creations.works"; export const REDIRECT_URI = `${DOMAIN}/auth/discord/callback`; export const CLIENT_ID = "1377021506810417173"; export const DATASTORE_KEY = "vencord-database-timezones"; -export let databaseTimezones: Record = {}; -(async () => { - databaseTimezones = await DataStore.get>(DATASTORE_KEY) || {}; -})(); const pendingRequests: Record> = {}; diff --git a/src/equicordplugins/timezones/index.tsx b/src/equicordplugins/timezones/index.tsx index 526f8fb0..74c49c22 100644 --- a/src/equicordplugins/timezones/index.tsx +++ b/src/equicordplugins/timezones/index.tsx @@ -22,10 +22,14 @@ import { SetTimezoneModal } from "./TimezoneModal"; export const DATASTORE_KEY = "vencord-timezones"; +type CacheEntry = { + value: string | null; + expires: number; +}; + +export let databaseTimezones: Record = {}; + export let timezones: Record = {}; -(async () => { - timezones = await DataStore.get>(DATASTORE_KEY) || {}; -})(); const classes = findByPropsLazy("timestamp", "compact", "contentOnly"); const locale = findByPropsLazy("getLocale"); @@ -118,10 +122,10 @@ const TimestampComponent = ErrorBoundary.wrap(({ userId, timestamp, type }: Prop const localTimezone = timezones[userId]; const shouldUseDatabase = settings.store.useDatabase && - (settings.store.preferDatabaseOverLocal || localTimezone == null); + (settings.store.preferDatabaseOverLocal || !localTimezone); if (shouldUseDatabase) { - getTimezone(userId).then(setTimezone); + getTimezone(userId).then(e => setTimezone(e ?? localTimezone)); } else { setTimezone(localTimezone); } @@ -240,6 +244,12 @@ export default definePlugin({ } } ], + + async start() { + databaseTimezones = await DataStore.get>(DATASTORE_KEY) || {}; + timezones = await DataStore.get>(DATASTORE_KEY) || {}; + }, + settings, getTime,