fix auth cancel, add fist run toast, fix label, add default to sys timezone when showing if nothing at all is set

This commit is contained in:
creations 2025-05-29 19:11:28 -04:00
parent 3fbc993950
commit aac513cf44
No known key found for this signature in database
GPG key ID: 8F553AA4320FC711
3 changed files with 42 additions and 4 deletions

View file

@ -29,9 +29,12 @@ export function SetTimezoneModal({ userId, modalProps, database }: { userId: str
settings.store.useDatabase && settings.store.useDatabase &&
(settings.store.preferDatabaseOverLocal || !localTimezone); (settings.store.preferDatabaseOverLocal || !localTimezone);
setCurrentValue(shouldUseDatabase ? getTimezone(userId) ?? localTimezone : localTimezone); const value = shouldUseDatabase
}, [userId, settings.store.useDatabase, settings.store.preferDatabaseOverLocal]); ? getTimezone(userId) ?? localTimezone
: localTimezone;
setCurrentValue(value ?? Intl.DateTimeFormat().resolvedOptions().timeZone);
}, [userId, settings.store.useDatabase, settings.store.preferDatabaseOverLocal]);
const options = useMemo(() => { const options = useMemo(() => {
return Intl.supportedValuesOf("timeZone").map(timezone => { return Intl.supportedValuesOf("timeZone").map(timezone => {

View file

@ -82,6 +82,8 @@ export function authModal(callback?: () => void) {
permissions={0n} permissions={0n}
cancelCompletesFlow={false} cancelCompletesFlow={false}
callback={async (res: any) => { callback={async (res: any) => {
if (!res || !res.location) return;
try { try {
const url = new URL(res.location); const url = new URL(res.location);
@ -99,6 +101,7 @@ export function authModal(callback?: () => void) {
showToast("Authorization successful!", Toasts.Type.SUCCESS); showToast("Authorization successful!", Toasts.Type.SUCCESS);
callback?.(); callback?.();
} catch (e) { } catch (e) {
console.error("Error during authorization:", e);
showToast("Unexpected error during authorization", Toasts.Type.FAILURE); showToast("Unexpected error during authorization", Toasts.Type.FAILURE);
} }
}} }}

View file

@ -93,6 +93,13 @@ export const settings = definePluginSettings({
Reset Database Timezones Reset Database Timezones
</Button> </Button>
) )
},
askedTimezone: {
type: OptionType.BOOLEAN,
description: "Whether the user has been asked to set their timezone",
hidden: true,
default: false
} }
}); });
@ -181,10 +188,9 @@ const TimestampComponent = ErrorBoundary.wrap(({ userId, timestamp, type }: Prop
const userContextMenuPatch: NavContextMenuPatchCallback = (children, { user }: { user: User; }) => { const userContextMenuPatch: NavContextMenuPatchCallback = (children, { user }: { user: User; }) => {
if (user?.id == null) return; if (user?.id == null) return;
const label = settings.store.useDatabase ? "Set Local Timezone" : "Set Timezone";
const setTimezoneItem = ( const setTimezoneItem = (
<Menu.MenuItem <Menu.MenuItem
label={label} label="Set Local Timezone"
id="set-timezone" id="set-timezone"
action={() => openModal(modalProps => <SetTimezoneModal userId={user.id} modalProps={modalProps} />)} action={() => openModal(modalProps => <SetTimezoneModal userId={user.id} modalProps={modalProps} />)}
/> />
@ -248,6 +254,32 @@ export default definePlugin({
if (settings.store.useDatabase) { if (settings.store.useDatabase) {
await loadDatabaseTimezones(); await loadDatabaseTimezones();
const userSysTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
if (!settings.store.askedTimezone && userSysTimezone) {
showToast(
"",
Toasts.Type.MESSAGE,
{
duration: 10000,
component: (
<Button
color={Button.Colors.GREEN}
onClick={() => {
authModal(async () => {
openModal(modalProps => <SetTimezoneModal userId={UserStore.getCurrentUser().id} modalProps={modalProps} database={true} />);
});
}}
>
Want to save your timezone to the database? Click here to set it.
</Button>
),
position: Toasts.Position.BOTTOM
}
);
settings.store.askedTimezone = true;
}
} }
}, },