diff --git a/src/plugins/timezones/cache.ts b/src/plugins/timezones/cache.ts index 4eb9dc54e..c746a893e 100644 --- a/src/plugins/timezones/cache.ts +++ b/src/plugins/timezones/cache.ts @@ -13,7 +13,7 @@ import { fetchTimezone, fetchTimezonesBulk, Snowflake } from "./api"; import settings, { TimezoneOverwrites } from "./settings"; // TODO: cache invalidation -const TimezoneCache = createStore("TimezoneCache", "TimezoneCache"); +export const TimezoneCache = createStore("TimezoneCache", "TimezoneCache"); // A list of callbacks that will trigger on a completed debounced bulk fetch type BulkFetchCallback = (timezone: string | null) => void; diff --git a/src/plugins/timezones/components.tsx b/src/plugins/timezones/components.tsx index 9f3edcfde..34079a5e0 100644 --- a/src/plugins/timezones/components.tsx +++ b/src/plugins/timezones/components.tsx @@ -153,14 +153,13 @@ export function TimezoneOverrideModal(props: TimezoneOverrideModalProps) { function saveOverwrite() { if (availableTimezones === undefined) return; - const overwrites: TimezoneOverwrites = settings.store.timezoneOverwrites ?? {}; - if (timezone === undefined) { + const overwrites: TimezoneOverwrites = { + [props.userId]: timezone === "NONE" ? null : timezone, + ...settings.store.timezoneOverwrites, + }; + if (timezone === undefined) delete overwrites[props.userId]; - } else if (timezone === "NONE") { - overwrites[props.userId] = null; - } else { - overwrites[props.userId] = timezone; - } + settings.store.timezoneOverwrites = overwrites; props.modalProps.onClose(); @@ -176,14 +175,19 @@ export function TimezoneOverrideModal(props: TimezoneOverrideModalProps) { - This override will only be visible locally. + This override will only be visible locally and to any synchronized clients via Vencord Cloud. +

To set your own Timezone for other users to see, click _}>here to - authorize TimezoneDB. + authorize the public TimezoneDB API.
-
+ + Set Timezone + + +
opt.value === timezone)} diff --git a/src/plugins/timezones/settings.tsx b/src/plugins/timezones/settings.tsx index 64f71e44e..8e58deb82 100644 --- a/src/plugins/timezones/settings.tsx +++ b/src/plugins/timezones/settings.tsx @@ -22,9 +22,13 @@ import { IPluginOptionComponentProps, OptionType } from "@utils/types"; import { Text } from "@webpack/common"; import { Snowflake } from "./api"; +import { DataStore } from "@api/index"; +import { TimezoneCache } from "./cache"; export type TimezoneOverwrites = Record; +const DEFAULT_API = "https://timezonedb.catvibers.me/api"; + const settings = definePluginSettings({ enableApi: { type: OptionType.BOOLEAN, @@ -34,7 +38,11 @@ const settings = definePluginSettings({ apiUrl: { type: OptionType.STRING, description: "The TimezoneDB API instance to fetch from", - default: "https://timezonedb.catvibers.me/api", + default: DEFAULT_API, + placeholder: DEFAULT_API, + onChange(_: any) { + DataStore.clear(TimezoneCache).catch(_ => _) + } }, displayInChat: { type: OptionType.BOOLEAN,