diff --git a/web/src/routes/auth/login/+page.svelte b/web/src/routes/auth/login/+page.svelte
index 2943dc1e07..88a557f845 100644
--- a/web/src/routes/auth/login/+page.svelte
+++ b/web/src/routes/auth/login/+page.svelte
@@ -3,7 +3,8 @@
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/system-config-manager.svelte';
+ import { featureFlagsManager } from '$lib/managers/feature-flags-manager.svelte';
+ import { serverConfigManager } from '$lib/managers/server-config-manager.svelte';
import { oauth } from '$lib/utils';
import { getServerErrorMessage, handleError } from '$lib/utils/handle-error';
import { login, type LoginResponseDto } from '@immich/sdk';
@@ -25,6 +26,8 @@
let loading = $state(false);
let oauthLoading = $state(true);
+ const serverConfig = $derived(serverConfigManager.value);
+
const onSuccess = async (user: LoginResponseDto) => {
await goto(data.continueUrl, { invalidateAll: true });
eventManager.emit('AuthLogin', user);
@@ -34,7 +37,7 @@
const onOnboarding = () => goto(AppRoute.AUTH_ONBOARDING);
onMount(async () => {
- if (!$featureFlags.oauth) {
+ if (!featureFlagsManager.value.oauth) {
oauthLoading = false;
return;
}
@@ -60,7 +63,7 @@
try {
if (
- ($featureFlags.oauthAutoLaunch && !oauth.isAutoLaunchDisabled(globalThis.location)) ||
+ (featureFlagsManager.value.oauthAutoLaunch && !oauth.isAutoLaunchDisabled(globalThis.location)) ||
oauth.isAutoLaunchEnabled(globalThis.location)
) {
await goto(`${AppRoute.AUTH_LOGIN}?autoLaunch=0`, { replaceState: true });
@@ -80,7 +83,7 @@
loading = true;
const user = await login({ loginCredentialDto: { email, password } });
- if (user.isAdmin && !$serverConfig.isOnboarded) {
+ if (user.isAdmin && !serverConfig.isOnboarded) {
await onOnboarding();
return;
}
@@ -123,64 +126,62 @@
};
-{#if $featureFlags.loaded}
-
-
- {#if $serverConfig.loginPageMessage}
-
-
- {@html $serverConfig.loginPageMessage}
-
- {/if}
+
+
+ {#if serverConfig.loginPageMessage}
+
+
+ {@html serverConfig.loginPageMessage}
+
+ {/if}
- {#if !oauthLoading && $featureFlags.passwordLogin}
-
- {/if}
-
- {#if $featureFlags.oauth}
- {#if $featureFlags.passwordLogin}
-
-
-
- {$t('or')}
-
-
+ {#if !oauthLoading && featureFlagsManager.value.passwordLogin}
+
+ {/if}
+
+ {#if featureFlagsManager.value.oauth}
+ {#if featureFlagsManager.value.passwordLogin}
+
+
+
+ {$t('or')}
+
+
{/if}
-
-
-{/if}
+ {#if oauthError}
+
+ {/if}
+
+ {/if}
+
+ {#if !featureFlagsManager.value.passwordLogin && !featureFlagsManager.value.oauth}
+
+ {/if}
+
+
diff --git a/web/src/routes/auth/login/+page.ts b/web/src/routes/auth/login/+page.ts
index ddf5b43fb9..5577ab1a7e 100644
--- a/web/src/routes/auth/login/+page.ts
+++ b/web/src/routes/auth/login/+page.ts
@@ -1,16 +1,13 @@
import { AppRoute } from '$lib/constants';
-import { serverConfig } from '$lib/stores/system-config-manager.svelte';
+import { serverConfigManager } from '$lib/managers/server-config-manager.svelte';
import { getFormatter } from '$lib/utils/i18n';
-
import { redirect } from '@sveltejs/kit';
-import { get } from 'svelte/store';
import type { PageLoad } from './$types';
export const load = (async ({ parent, url }) => {
await parent();
- const { isInitialized } = get(serverConfig);
- if (!isInitialized) {
+ if (!serverConfigManager.value.isInitialized) {
// Admin not registered
redirect(302, AppRoute.AUTH_REGISTER);
}
diff --git a/web/src/routes/auth/onboarding/+page.svelte b/web/src/routes/auth/onboarding/+page.svelte
index 9275fb95c1..44cd97637a 100644
--- a/web/src/routes/auth/onboarding/+page.svelte
+++ b/web/src/routes/auth/onboarding/+page.svelte
@@ -11,8 +11,9 @@
import OnboardingTheme from '$lib/components/onboarding-page/onboarding-theme.svelte';
import OnboardingUserPrivacy from '$lib/components/onboarding-page/onboarding-user-privacy.svelte';
import { AppRoute, QueryParameter } from '$lib/constants';
+ import { serverConfigManager } from '$lib/managers/server-config-manager.svelte';
+ import { systemConfigManager } from '$lib/managers/system-config-manager.svelte';
import { OnboardingRole } from '$lib/models/onboarding-role';
- 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 {
@@ -95,7 +96,9 @@
]);
let index = $state(0);
- let userRole = $derived($user.isAdmin && !$serverConfig.isOnboarded ? OnboardingRole.SERVER : OnboardingRole.USER);
+ let userRole = $derived(
+ $user.isAdmin && !serverConfigManager.value.isOnboarded ? OnboardingRole.SERVER : OnboardingRole.USER,
+ );
let onboardingStepCount = $derived(onboardingSteps.filter((step) => shouldRunStep(step.role, userRole)).length);
let onboardingProgress = $derived(
@@ -105,7 +108,9 @@
const shouldRunStep = (stepRole: OnboardingRole, userRole: OnboardingRole) => {
return (
stepRole === OnboardingRole.USER ||
- (stepRole === OnboardingRole.SERVER && userRole === OnboardingRole.SERVER && !$serverConfig.isOnboarded)
+ (stepRole === OnboardingRole.SERVER &&
+ userRole === OnboardingRole.SERVER &&
+ !serverConfigManager.value.isOnboarded)
);
};
@@ -127,7 +132,7 @@
if (nextStepIndex == -1) {
if ($user.isAdmin) {
await updateAdminOnboarding({ adminOnboardingUpdateDto: { isOnboarded: true } });
- await retrieveServerConfig();
+ await serverConfigManager.loadServerConfig();
}
await setUserOnboarding({
diff --git a/web/src/routes/auth/register/+page.svelte b/web/src/routes/auth/register/+page.svelte
index affa5f816c..e78f782841 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/system-config-manager.svelte';
+ import { serverConfigManager } from '$lib/managers/server-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';
@@ -37,7 +37,7 @@
try {
await signUpAdmin({ signUpDto: { email, password, name } });
- await retrieveServerConfig();
+ await serverConfigManager.loadServerConfig();
await goto(AppRoute.AUTH_LOGIN);
} catch (error) {
handleError(error, $t('errors.unable_to_create_admin_account'));
diff --git a/web/src/routes/auth/register/+page.ts b/web/src/routes/auth/register/+page.ts
index 30969c3167..344a37738c 100644
--- a/web/src/routes/auth/register/+page.ts
+++ b/web/src/routes/auth/register/+page.ts
@@ -1,14 +1,12 @@
import { AppRoute } from '$lib/constants';
-import { serverConfig } from '$lib/stores/system-config-manager.svelte';
+import { serverConfigManager } from '$lib/managers/server-config-manager.svelte';
import { getFormatter } from '$lib/utils/i18n';
import { redirect } from '@sveltejs/kit';
-import { get } from 'svelte/store';
import type { PageLoad } from './$types';
export const load = (async ({ parent }) => {
await parent();
- const { isInitialized } = get(serverConfig);
- if (isInitialized) {
+ if (serverConfigManager.value.isInitialized) {
// Admin has been registered, redirect to login
redirect(302, AppRoute.AUTH_LOGIN);
}