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 {