(null);
@@ -155,6 +156,7 @@ import ShareLinkDialog from '#lib/components/ShareLinkDialog.svelte';
const settings = await api.profile.getSettings();
language = settings.language;
timezone = settings.timezone;
+ timezoneConfigured = settings.timezone_configured;
setTimezone(settings.timezone);
themeMode = sanitizeThemeMode(settings.theme);
setThemeMode(themeMode);
@@ -354,9 +356,13 @@ import ShareLinkDialog from '#lib/components/ShareLinkDialog.svelte';
languageMessage = { type: 'success', text: $_('common.saved') };
}
- const allTimezones: string[] = typeof Intl.supportedValuesOf === 'function'
+ const supportedTimezones: string[] = typeof Intl.supportedValuesOf === 'function'
? Intl.supportedValuesOf('timeZone')
: [];
+ // V8 omits UTC from supportedValuesOf, but it is a valid profile choice.
+ const allTimezones: string[] = supportedTimezones.includes('UTC')
+ ? supportedTimezones
+ : ['UTC', ...supportedTimezones];
const browserTz = detectTimezone();
@@ -367,10 +373,28 @@ import ShareLinkDialog from '#lib/components/ShareLinkDialog.svelte';
}
timezoneMessage = null;
await api.profile.updateSettings({ timezone });
+ timezoneConfigured = true;
setTimezone(timezone);
timezoneMessage = { type: 'success', text: $_('common.saved') };
}
+ async function useDetectedTimezone() {
+ const detected = detectTimezone();
+ timezoneMessage = null;
+ try {
+ await api.profile.updateSettings({ timezone: detected, timezone_configured: false });
+ timezone = detected;
+ timezoneConfigured = false;
+ setTimezone(detected);
+ timezoneMessage = { type: 'success', text: $_('common.saved') };
+ } catch (e) {
+ timezoneMessage = {
+ type: 'error',
+ text: e instanceof Error ? e.message : $_('common.saveFailed')
+ };
+ }
+ }
+
$effect(() => {
if (typeof window !== 'undefined') {
setCustomTheme(customTheme);
@@ -1005,16 +1029,26 @@ import ShareLinkDialog from '#lib/components/ShareLinkDialog.svelte';
onClose={() => timezoneMessage = null}
>{timezoneMessage.text}
{/if}
-
+
+
+
+
{$_('settings.timezoneDetected', { values: { tz: browserTz } })}
- {$_('settings.timezoneSelected', { values: { tz: timezone } })}
+
+ {timezoneConfigured
+ ? $_('settings.timezoneSelected', { values: { tz: timezone } })
+ : $_('settings.timezoneAuto', { values: { tz: timezone } })}
+