From b06287116320e3557876b09e23b6b044fb39369f Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Thu, 6 Nov 2025 21:38:00 +0100 Subject: [PATCH] Skip gql subscriptions until auth is properly set up --- src/App.tsx | 4 +++- src/features/authentication/AuthManager.ts | 25 +++++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 3e1542e5..fcaf9832 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -124,7 +124,9 @@ const InitialBackgroundRequests = () => { * and thus, data of existing chapters/mangas in the cache get outdated */ const BackgroundSubscriptions = () => { - const skipConnection = !AuthManager.useIsAuthenticated(); + const { isAuthRequired, accessToken } = AuthManager.useSession(); + + const skipConnection = isAuthRequired === null || (isAuthRequired && !accessToken); requestManager.useDownloadSubscription({ skip: skipConnection }); requestManager.useUpdaterSubscription({ skip: skipConnection }); diff --git a/src/features/authentication/AuthManager.ts b/src/features/authentication/AuthManager.ts index 7a005c6d..d9cd7722 100644 --- a/src/features/authentication/AuthManager.ts +++ b/src/features/authentication/AuthManager.ts @@ -6,7 +6,7 @@ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import { useSyncExternalStore } from 'react'; +import { useMemo, useSyncExternalStore } from 'react'; import { AppStorage } from '@/lib/storage/AppStorage.ts'; let notifierValue = 0; @@ -52,13 +52,22 @@ export class AuthManager { } { useSyncExternalStore(AuthManager.subscribe.bind(AuthManager), () => notifierValue); - return { - accessToken: AuthManager.accessToken, - refreshToken: AuthManager.getRefreshToken(), - isAuthRequired: AuthManager.authRequired, - isInitialized: AuthManager.authInitialized, - isRefreshingToken: AuthManager.refreshingToken, - }; + return useMemo( + () => ({ + accessToken: AuthManager.accessToken, + refreshToken: AuthManager.getRefreshToken(), + isAuthRequired: AuthManager.authRequired, + isInitialized: AuthManager.authInitialized, + isRefreshingToken: AuthManager.refreshingToken, + }), + [ + AuthManager.accessToken, + AuthManager.getRefreshToken(), + AuthManager.authRequired, + AuthManager.authInitialized, + AuthManager.refreshingToken, + ], + ); } static useIsAuthenticated(): boolean {