-
diff --git a/web/src/lib/components/admin-settings/StorageTemplateSettings.svelte b/web/src/lib/components/admin-settings/StorageTemplateSettings.svelte
index a779b57f2d..c445769ae0 100644
--- a/web/src/lib/components/admin-settings/StorageTemplateSettings.svelte
+++ b/web/src/lib/components/admin-settings/StorageTemplateSettings.svelte
@@ -2,50 +2,34 @@
import { resolve } from '$app/paths';
import SupportedDatetimePanel from '$lib/components/admin-settings/SupportedDatetimePanel.svelte';
import SupportedVariablesPanel from '$lib/components/admin-settings/SupportedVariablesPanel.svelte';
- import SettingButtonsRow from '$lib/components/shared-components/settings/setting-buttons-row.svelte';
+ import SettingButtonsRow from '$lib/components/shared-components/settings/SystemConfigButtonRow.svelte';
import SettingInputField from '$lib/components/shared-components/settings/setting-input-field.svelte';
import SettingSwitch from '$lib/components/shared-components/settings/setting-switch.svelte';
import { AppRoute, SettingInputFieldType } from '$lib/constants';
import FormatMessage from '$lib/elements/FormatMessage.svelte';
+ import { handleSystemConfigSave } from '$lib/services/system-config.service';
+ import { featureFlags, systemConfigManager } from '$lib/stores/system-config-manager.svelte';
import { user } from '$lib/stores/user.store';
- import {
- getStorageTemplateOptions,
- type SystemConfigDto,
- type SystemConfigTemplateStorageOptionDto,
- } from '@immich/sdk';
+ import { getStorageTemplateOptions, type SystemConfigTemplateStorageOptionDto } from '@immich/sdk';
import { LoadingSpinner } from '@immich/ui';
import handlebar from 'handlebars';
- import { isEqual } from 'lodash-es';
import * as luxon from 'luxon';
- import type { Snippet } from 'svelte';
+ import { onDestroy } from 'svelte';
import { t } from 'svelte-i18n';
import { createBubbler, preventDefault } from 'svelte/legacy';
import { fade } from 'svelte/transition';
- import type { SettingsResetEvent, SettingsSaveEvent } from './admin-settings';
- interface Props {
- savedConfig: SystemConfigDto;
- defaultConfig: SystemConfigDto;
- config: SystemConfigDto;
- disabled?: boolean;
+ type Props = {
minified?: boolean;
- onReset: SettingsResetEvent;
- onSave: SettingsSaveEvent;
duration?: number;
- children?: Snippet;
- }
+ saveOnClose?: boolean;
+ };
- let {
- savedConfig,
- defaultConfig,
- config = $bindable(),
- disabled = false,
- minified = false,
- onReset,
- onSave,
- duration = 500,
- children,
- }: Props = $props();
+ const { minified = false, duration = 500, saveOnClose = false }: Props = $props();
+
+ const disabled = $featureFlags.configFile;
+ const config = $derived(systemConfigManager.value);
+ let configToEdit = $state(systemConfigManager.cloneValue());
const bubble = createBubbler();
let templateOptions: SystemConfigTemplateStorageOptionDto | undefined = $state();
@@ -53,7 +37,7 @@
const getTemplateOptions = async () => {
templateOptions = await getStorageTemplateOptions();
- selectedPreset = savedConfig.storageTemplate.template;
+ selectedPreset = config.storageTemplate.template;
};
const getSupportDateTimeFormat = () => getStorageTemplateOptions();
@@ -101,15 +85,21 @@
};
const handlePresetSelection = () => {
- config.storageTemplate.template = selectedPreset;
+ configToEdit.storageTemplate.template = selectedPreset;
};
let parsedTemplate = $derived(() => {
try {
- return renderTemplate(config.storageTemplate.template);
+ return renderTemplate(configToEdit.storageTemplate.template);
} catch {
return 'error';
}
});
+
+ onDestroy(async () => {
+ if (saveOnClose) {
+ await handleSystemConfigSave({ storageTemplate: configToEdit.storageTemplate });
+ }
+ });
@@ -145,8 +135,8 @@
{#if !minified}
@@ -154,14 +144,14 @@
title={$t('admin.storage_template_hash_verification_enabled')}
{disabled}
subtitle={$t('admin.storage_template_hash_verification_enabled_description')}
- bind:checked={config.storageTemplate.hashVerificationEnabled}
+ bind:checked={configToEdit.storageTemplate.hashVerificationEnabled}
isEdited={!(
- config.storageTemplate.hashVerificationEnabled === savedConfig.storageTemplate.hashVerificationEnabled
+ configToEdit.storageTemplate.hashVerificationEnabled === config.storageTemplate.hashVerificationEnabled
)}
/>
{/if}
- {#if config.storageTemplate.enabled}
+ {#if configToEdit.storageTemplate.enabled}
{$t('variables')}
@@ -220,7 +210,7 @@
{/await}
diff --git a/web/src/lib/components/admin-settings/TemplateSettings.svelte b/web/src/lib/components/admin-settings/TemplateSettings.svelte
index a4ed80d9d9..6e64055879 100644
--- a/web/src/lib/components/admin-settings/TemplateSettings.svelte
+++ b/web/src/lib/components/admin-settings/TemplateSettings.svelte
@@ -3,6 +3,7 @@
import SettingTextarea from '$lib/components/shared-components/settings/setting-textarea.svelte';
import FormatMessage from '$lib/elements/FormatMessage.svelte';
import EmailTemplatePreviewModal from '$lib/modals/EmailTemplatePreviewModal.svelte';
+ import { systemConfigManager } from '$lib/stores/system-config-manager.svelte';
import { handleError } from '$lib/utils/handle-error';
import { type SystemConfigDto, type SystemConfigTemplateEmailsDto, getNotificationTemplateAdmin } from '@immich/sdk';
import { Button, Icon, LoadingSpinner, modalManager } from '@immich/ui';
@@ -11,11 +12,10 @@
import { fade } from 'svelte/transition';
interface Props {
- savedConfig: SystemConfigDto;
config: SystemConfigDto;
}
- let { savedConfig, config = $bindable() }: Props = $props();
+ let { config = $bindable() }: Props = $props();
let loadingPreview = $state(false);
@@ -53,7 +53,7 @@
];
const isEdited = (templateKey: keyof SystemConfigTemplateEmailsDto) =>
- config.templates.email[templateKey] !== savedConfig.templates.email[templateKey];
+ config.templates.email[templateKey] !== systemConfigManager.value.templates.email[templateKey];
const onsubmit = (event: Event) => {
event.preventDefault();
diff --git a/web/src/lib/components/admin-settings/ThemeSettings.svelte b/web/src/lib/components/admin-settings/ThemeSettings.svelte
index 8cfd0beb2f..34c4246885 100644
--- a/web/src/lib/components/admin-settings/ThemeSettings.svelte
+++ b/web/src/lib/components/admin-settings/ThemeSettings.svelte
@@ -1,46 +1,28 @@
diff --git a/web/src/lib/components/admin-settings/TrashSettings.svelte b/web/src/lib/components/admin-settings/TrashSettings.svelte
index e69ec9e1e9..5d811af841 100644
--- a/web/src/lib/components/admin-settings/TrashSettings.svelte
+++ b/web/src/lib/components/admin-settings/TrashSettings.svelte
@@ -1,35 +1,26 @@
diff --git a/web/src/lib/components/admin-settings/UserSettings.svelte b/web/src/lib/components/admin-settings/UserSettings.svelte
index cf05e590e8..3d91cff56a 100644
--- a/web/src/lib/components/admin-settings/UserSettings.svelte
+++ b/web/src/lib/components/admin-settings/UserSettings.svelte
@@ -1,24 +1,15 @@
@@ -30,18 +21,13 @@
min={1}
label={$t('admin.user_delete_delay_settings')}
description={$t('admin.user_delete_delay_settings_description')}
- bind:value={config.user.deleteDelay}
- isEdited={config.user.deleteDelay !== savedConfig.user.deleteDelay}
+ bind:value={configToEdit.user.deleteDelay}
+ isEdited={configToEdit.user.deleteDelay !== config.user.deleteDelay}
/>
- onReset({ ...options, configKeys: ['user'] })}
- onSave={() => onSave({ user: config.user })}
- showResetToDefault={!isEqual(savedConfig.user, defaultConfig.user)}
- {disabled}
- />
+
diff --git a/web/src/lib/components/admin-settings/admin-settings.ts b/web/src/lib/components/admin-settings/admin-settings.ts
index f8796aede9..6b0e70dee1 100644
--- a/web/src/lib/components/admin-settings/admin-settings.ts
+++ b/web/src/lib/components/admin-settings/admin-settings.ts
@@ -2,14 +2,3 @@ import type { ResetOptions } from '$lib/utils/dipatch';
import type { SystemConfigDto } from '@immich/sdk';
export type SettingsResetOptions = ResetOptions & { configKeys: Array
};
-export type SettingsResetEvent = (options: SettingsResetOptions) => void;
-export type SettingsSaveEvent = (config: Partial) => void;
-
-export type SettingsComponentProps = {
- disabled?: boolean;
- defaultConfig: SystemConfigDto;
- config: SystemConfigDto;
- savedConfig: SystemConfigDto;
- onReset: SettingsResetEvent;
- onSave: SettingsSaveEvent;
-};
diff --git a/web/src/lib/components/album-page/album-viewer.svelte b/web/src/lib/components/album-page/album-viewer.svelte
index d0d03eef80..7e882042cb 100644
--- a/web/src/lib/components/album-page/album-viewer.svelte
+++ b/web/src/lib/components/album-page/album-viewer.svelte
@@ -11,7 +11,7 @@
import { AssetInteraction } from '$lib/stores/asset-interaction.svelte';
import { assetViewingStore } from '$lib/stores/asset-viewing.store';
import { dragAndDropFilesStore } from '$lib/stores/drag-and-drop-files.store';
- import { featureFlags } from '$lib/stores/server-config.store';
+ import { featureFlags } from '$lib/stores/system-config-manager.svelte';
import { handlePromiseError } from '$lib/utils';
import { cancelMultiselect } from '$lib/utils/asset-utils';
import { fileUploadHandler, openFileUploadDialog } from '$lib/utils/file-uploader';
diff --git a/web/src/lib/components/asset-viewer/actions/delete-action.svelte b/web/src/lib/components/asset-viewer/actions/delete-action.svelte
index d9565cbcb7..84be7f3a79 100644
--- a/web/src/lib/components/asset-viewer/actions/delete-action.svelte
+++ b/web/src/lib/components/asset-viewer/actions/delete-action.svelte
@@ -4,7 +4,7 @@
import { AssetAction } from '$lib/constants';
import Portal from '$lib/elements/Portal.svelte';
import { showDeleteModal } from '$lib/stores/preferences.store';
- import { featureFlags } from '$lib/stores/server-config.store';
+ import { featureFlags } from '$lib/stores/system-config-manager.svelte';
import { handleError } from '$lib/utils/handle-error';
import { toTimelineAsset } from '$lib/utils/timeline-util';
import { deleteAssets, type AssetResponseDto } from '@immich/sdk';
diff --git a/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte b/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte
index 4a792d7945..6c66b47286 100644
--- a/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte
+++ b/web/src/lib/components/asset-viewer/asset-viewer-nav-bar.svelte
@@ -25,7 +25,7 @@
import MenuOption from '$lib/components/shared-components/context-menu/menu-option.svelte';
import { AppRoute } from '$lib/constants';
import { photoViewerImgElement } from '$lib/stores/assets-store.svelte';
- import { featureFlags } from '$lib/stores/server-config.store';
+ import { featureFlags } from '$lib/stores/system-config-manager.svelte';
import { user } from '$lib/stores/user.store';
import { photoZoomState } from '$lib/stores/zoom-image.store';
import { getAssetJobName, getSharedLink } from '$lib/utils';
diff --git a/web/src/lib/components/asset-viewer/detail-panel.svelte b/web/src/lib/components/asset-viewer/detail-panel.svelte
index 6d4f6a97c1..51c3098356 100644
--- a/web/src/lib/components/asset-viewer/detail-panel.svelte
+++ b/web/src/lib/components/asset-viewer/detail-panel.svelte
@@ -11,7 +11,7 @@
import { isFaceEditMode } from '$lib/stores/face-edit.svelte';
import { boundingBoxesArray } from '$lib/stores/people.store';
import { locale } from '$lib/stores/preferences.store';
- import { featureFlags } from '$lib/stores/server-config.store';
+ import { featureFlags } from '$lib/stores/system-config-manager.svelte';
import { preferences, user } from '$lib/stores/user.store';
import { getAssetThumbnailUrl, getPeopleThumbnailUrl } from '$lib/utils';
import { delay, getDimensions } from '$lib/utils/asset-utils';
diff --git a/web/src/lib/components/jobs/JobsPanel.svelte b/web/src/lib/components/jobs/JobsPanel.svelte
index e8731aeb1f..f9a4e5a735 100644
--- a/web/src/lib/components/jobs/JobsPanel.svelte
+++ b/web/src/lib/components/jobs/JobsPanel.svelte
@@ -1,5 +1,5 @@
@@ -20,16 +17,14 @@
{$t('onboarding_privacy_description')}
- {#if $systemConfig}
-
-
- {/if}
+
+
diff --git a/web/src/lib/components/onboarding-page/onboarding-storage-template.svelte b/web/src/lib/components/onboarding-page/onboarding-storage-template.svelte
index 0a349af6f5..108714348f 100644
--- a/web/src/lib/components/onboarding-page/onboarding-storage-template.svelte
+++ b/web/src/lib/components/onboarding-page/onboarding-storage-template.svelte
@@ -1,20 +1,7 @@
@@ -26,22 +13,7 @@
- {#if config && $user}
-
- {#snippet children({ defaultConfig, savedConfig })}
- {#if config}
- adminSettingsComponent?.handleSave(config)}
- onReset={(options) => adminSettingsComponent?.handleReset(options)}
- duration={0}
- />
- {/if}
- {/snippet}
-
+ {#if $user}
+
{/if}
diff --git a/web/src/lib/components/shared-components/gallery-viewer/gallery-viewer.svelte b/web/src/lib/components/shared-components/gallery-viewer/gallery-viewer.svelte
index 82f876834a..13697e6494 100644
--- a/web/src/lib/components/shared-components/gallery-viewer/gallery-viewer.svelte
+++ b/web/src/lib/components/shared-components/gallery-viewer/gallery-viewer.svelte
@@ -10,7 +10,7 @@
import type { AssetInteraction } from '$lib/stores/asset-interaction.svelte';
import { assetViewingStore } from '$lib/stores/asset-viewing.store';
import { showDeleteModal } from '$lib/stores/preferences.store';
- import { featureFlags } from '$lib/stores/server-config.store';
+ import { featureFlags } from '$lib/stores/system-config-manager.svelte';
import { handlePromiseError } from '$lib/utils';
import { deleteAssets } from '$lib/utils/actions';
import { archiveAssets, cancelMultiselect } from '$lib/utils/asset-utils';
diff --git a/web/src/lib/components/shared-components/map/map.svelte b/web/src/lib/components/shared-components/map/map.svelte
index ee0961917f..89cc81e669 100644
--- a/web/src/lib/components/shared-components/map/map.svelte
+++ b/web/src/lib/components/shared-components/map/map.svelte
@@ -14,7 +14,7 @@
import { themeManager } from '$lib/managers/theme-manager.svelte';
import MapSettingsModal from '$lib/modals/MapSettingsModal.svelte';
import { mapSettings } from '$lib/stores/preferences.store';
- import { serverConfig } from '$lib/stores/server-config.store';
+ import { serverConfig } from '$lib/stores/system-config-manager.svelte';
import { getAssetThumbnailUrl, handlePromiseError } from '$lib/utils';
import { getMapMarkers, type MapMarkerResponseDto } from '@immich/sdk';
import { Icon, modalManager } from '@immich/ui';
diff --git a/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte b/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte
index 03c5ca3be4..1ec8758a09 100644
--- a/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte
+++ b/web/src/lib/components/shared-components/navigation-bar/navigation-bar.svelte
@@ -13,8 +13,8 @@
import { authManager } from '$lib/managers/auth-manager.svelte';
import { mobileDevice } from '$lib/stores/mobile-device.svelte';
import { notificationManager } from '$lib/stores/notification-manager.svelte';
- import { featureFlags } from '$lib/stores/server-config.store';
import { sidebarStore } from '$lib/stores/sidebar.svelte';
+ import { featureFlags } from '$lib/stores/system-config-manager.svelte';
import { user } from '$lib/stores/user.store';
import { Button, IconButton, Logo } from '@immich/ui';
import { mdiBellBadge, mdiBellOutline, mdiMagnify, mdiMenu, mdiTrayArrowUp } from '@mdi/js';
diff --git a/web/src/lib/components/shared-components/search-bar/search-text-section.svelte b/web/src/lib/components/shared-components/search-bar/search-text-section.svelte
index af620bde05..cc6f6aa061 100644
--- a/web/src/lib/components/shared-components/search-bar/search-text-section.svelte
+++ b/web/src/lib/components/shared-components/search-bar/search-text-section.svelte
@@ -1,6 +1,6 @@
+
+
+
+ {#if showResetToDefault}
+
+ {/if}
+
+
+
+
+
+
+
diff --git a/web/src/lib/components/shared-components/settings/setting-buttons-row.svelte b/web/src/lib/components/shared-components/settings/setting-buttons-row.svelte
deleted file mode 100644
index 06b0d40085..0000000000
--- a/web/src/lib/components/shared-components/settings/setting-buttons-row.svelte
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
- {#if showResetToDefault}
-
- {/if}
-
-
-
-
-
-
-
diff --git a/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte b/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte
index 0f98124504..f3bb8cdf71 100644
--- a/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte
+++ b/web/src/lib/components/shared-components/side-bar/user-sidebar.svelte
@@ -4,7 +4,7 @@
import RecentAlbums from '$lib/components/shared-components/side-bar/recent-albums.svelte';
import Sidebar from '$lib/components/sidebar/sidebar.svelte';
import { recentAlbumsDropdown } from '$lib/stores/preferences.store';
- import { featureFlags } from '$lib/stores/server-config.store';
+ import { featureFlags } from '$lib/stores/system-config-manager.svelte';
import { preferences } from '$lib/stores/user.store';
import {
mdiAccount,
diff --git a/web/src/lib/components/timeline/actions/DeleteAssetsAction.svelte b/web/src/lib/components/timeline/actions/DeleteAssetsAction.svelte
index bcdce97d35..a8f7afdddf 100644
--- a/web/src/lib/components/timeline/actions/DeleteAssetsAction.svelte
+++ b/web/src/lib/components/timeline/actions/DeleteAssetsAction.svelte
@@ -1,7 +1,7 @@
-
+ const { CopyToClipboard, Upload, Download } = $derived(
+ getSystemConfigActions($t, $featureFlags, systemConfigManager.value),
+ );
+
{#snippet buttons()}
@@ -256,58 +211,27 @@
-
-
- {#if !$featureFlags.configFile}
-
- {/if}
+
+
+
{/snippet}
-
- {#snippet children({ savedConfig, defaultConfig })}
-
-
- {#if $featureFlags.configFile}
-
- {/if}
-
-
-
-
- {#each filteredSettings as { component: Component, title, subtitle, key, icon } (key)}
-
- adminSettingElement?.handleSave(config)}
- onReset={(options) => adminSettingElement?.handleReset(options)}
- disabled={$featureFlags.configFile}
- bind:config
- {defaultConfig}
- {savedConfig}
- />
-
- {/each}
-
-
-
- {/snippet}
-
+
+
+ {#if $featureFlags.configFile}
+
+ {/if}
+
+
+
+
+ {#each filteredSettings as { component: Component, title, subtitle, key, icon } (key)}
+
+
+
+ {/each}
+
+
+
diff --git a/web/src/routes/admin/system-settings/+page.ts b/web/src/routes/admin/system-settings/+page.ts
index 294096a4be..10dc0cf246 100644
--- a/web/src/routes/admin/system-settings/+page.ts
+++ b/web/src/routes/admin/system-settings/+page.ts
@@ -1,15 +1,17 @@
import { authenticate } from '$lib/utils/auth';
import { getFormatter } from '$lib/utils/i18n';
-import { getConfig } from '@immich/sdk';
+import { getConfig, getConfigDefaults } from '@immich/sdk';
import type { PageLoad } from './$types';
export const load = (async ({ url }) => {
await authenticate(url, { admin: true });
- const configs = await getConfig();
+ const config = await getConfig();
+ const defaultConfig = await getConfigDefaults();
const $t = await getFormatter();
return {
- configs,
+ config,
+ defaultConfig,
meta: {
title: $t('admin.system_settings'),
},
diff --git a/web/src/routes/auth/login/+page.svelte b/web/src/routes/auth/login/+page.svelte
index 352eaed408..2943dc1e07 100644
--- a/web/src/routes/auth/login/+page.svelte
+++ b/web/src/routes/auth/login/+page.svelte
@@ -3,7 +3,7 @@
import AuthPageLayout from '$lib/components/layouts/AuthPageLayout.svelte';
import { AppRoute } from '$lib/constants';
import { eventManager } from '$lib/managers/event-manager.svelte';
- import { featureFlags, serverConfig } from '$lib/stores/server-config.store';
+ import { featureFlags, serverConfig } from '$lib/stores/system-config-manager.svelte';
import { oauth } from '$lib/utils';
import { getServerErrorMessage, handleError } from '$lib/utils/handle-error';
import { login, type LoginResponseDto } from '@immich/sdk';
diff --git a/web/src/routes/auth/login/+page.ts b/web/src/routes/auth/login/+page.ts
index 54c5da716a..ddf5b43fb9 100644
--- a/web/src/routes/auth/login/+page.ts
+++ b/web/src/routes/auth/login/+page.ts
@@ -1,5 +1,5 @@
import { AppRoute } from '$lib/constants';
-import { serverConfig } from '$lib/stores/server-config.store';
+import { serverConfig } from '$lib/stores/system-config-manager.svelte';
import { getFormatter } from '$lib/utils/i18n';
import { redirect } from '@sveltejs/kit';
diff --git a/web/src/routes/auth/onboarding/+page.svelte b/web/src/routes/auth/onboarding/+page.svelte
index d2e9a9f240..9275fb95c1 100644
--- a/web/src/routes/auth/onboarding/+page.svelte
+++ b/web/src/routes/auth/onboarding/+page.svelte
@@ -12,7 +12,7 @@
import OnboardingUserPrivacy from '$lib/components/onboarding-page/onboarding-user-privacy.svelte';
import { AppRoute, QueryParameter } from '$lib/constants';
import { OnboardingRole } from '$lib/models/onboarding-role';
- import { retrieveServerConfig, retrieveSystemConfig, serverConfig } from '$lib/stores/server-config.store';
+ import { retrieveServerConfig, serverConfig, systemConfigManager } from '$lib/stores/system-config-manager.svelte';
import { user } from '$lib/stores/user.store';
import { setUserOnboarding, updateAdminOnboarding } from '@immich/sdk';
import {
@@ -152,11 +152,13 @@
);
};
- onMount(async () => {
- await retrieveSystemConfig();
- });
-
const OnboardingStep = $derived(onboardingSteps[index].component);
+
+ onMount(async () => {
+ if (userRole === OnboardingRole.SERVER) {
+ await systemConfigManager.init();
+ }
+ });
diff --git a/web/src/routes/auth/register/+page.svelte b/web/src/routes/auth/register/+page.svelte
index 3eb046e80f..affa5f816c 100644
--- a/web/src/routes/auth/register/+page.svelte
+++ b/web/src/routes/auth/register/+page.svelte
@@ -2,7 +2,7 @@
import { goto } from '$app/navigation';
import AuthPageLayout from '$lib/components/layouts/AuthPageLayout.svelte';
import { AppRoute } from '$lib/constants';
- import { retrieveServerConfig } from '$lib/stores/server-config.store';
+ import { retrieveServerConfig } from '$lib/stores/system-config-manager.svelte';
import { handleError } from '$lib/utils/handle-error';
import { signUpAdmin } from '@immich/sdk';
import { Alert, Button, Field, Input, PasswordInput, Text } from '@immich/ui';
diff --git a/web/src/routes/auth/register/+page.ts b/web/src/routes/auth/register/+page.ts
index 88b56caa47..30969c3167 100644
--- a/web/src/routes/auth/register/+page.ts
+++ b/web/src/routes/auth/register/+page.ts
@@ -1,5 +1,5 @@
import { AppRoute } from '$lib/constants';
-import { serverConfig } from '$lib/stores/server-config.store';
+import { serverConfig } from '$lib/stores/system-config-manager.svelte';
import { getFormatter } from '$lib/utils/i18n';
import { redirect } from '@sveltejs/kit';
import { get } from 'svelte/store';