From f900098201fbcdde615a6031051b8ef875be070c Mon Sep 17 00:00:00 2001 From: Ammar Ahmed Date: Thu, 23 Oct 2025 12:17:01 +0500 Subject: [PATCH] mobile: fix app-lock disabled dialog does not show to free users --- apps/mobile/app/hooks/use-feature-manager.ts | 30 -------------------- apps/mobile/app/stores/use-user-store.ts | 29 +++++++++++++++++++ 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/apps/mobile/app/hooks/use-feature-manager.ts b/apps/mobile/app/hooks/use-feature-manager.ts index ed625760e..f173477fa 100644 --- a/apps/mobile/app/hooks/use-feature-manager.ts +++ b/apps/mobile/app/hooks/use-feature-manager.ts @@ -69,36 +69,6 @@ export default function useFeatureManager() { db.settings.setDefaultTag(undefined); } } - const isAppLocked = useUserStore.getState().appLocked; - let unsub: () => void; - - if (isAppLocked) { - unsub = useUserStore.subscribe((state) => { - if (!state.appLocked && !features?.appLock?.isAllowed) { - unsub(); - SettingsService.setProperty("appLockEnabled", false); - setTimeout(() => { - presentDialog({ - title: "App Lock Disabled", - paragraph: features?.appLock?.error, - positiveText: strings.upgrade(), - negativeText: strings.cancel(), - positivePress: async () => { - eSendEvent(eCloseSimpleDialog); - if (SettingsService.getProperty("serverUrls")) return; - Navigation.navigate("PayWall", { - context: "logged-in" - }); - } - }); - }, 1000); - } - }); - } - - return () => { - unsub?.(); - }; }, [features, plan]); return true; diff --git a/apps/mobile/app/stores/use-user-store.ts b/apps/mobile/app/stores/use-user-store.ts index cc5c74fc0..0fe90866b 100644 --- a/apps/mobile/app/stores/use-user-store.ts +++ b/apps/mobile/app/stores/use-user-store.ts @@ -17,8 +17,15 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +import { isFeatureAvailable } from "@notesnook/common"; import { Profile, User } from "@notesnook/core"; import create, { State } from "zustand"; +import SettingsService from "../services/settings"; +import { presentDialog } from "../components/dialog/functions"; +import { strings } from "@notesnook/intl"; +import { eSendEvent } from "../services/event-manager"; +import { eCloseSimpleDialog } from "../utils/events"; +import Navigation from "../services/navigation"; export enum SyncStatus { Passed, @@ -57,6 +64,28 @@ export const useUserStore = create((set) => ({ setLastSynced: (lastSynced) => set({ lastSynced: lastSynced }), lockApp: (appLocked) => { set({ appLocked }); + if (!appLocked) { + isFeatureAvailable("appLock").then((feature) => { + if (!feature.isAllowed) { + SettingsService.setProperty("appLockEnabled", false); + setTimeout(() => { + presentDialog({ + title: "App Lock Disabled", + paragraph: feature?.error, + positiveText: strings.upgrade(), + negativeText: strings.cancel(), + positivePress: async () => { + eSendEvent(eCloseSimpleDialog); + if (SettingsService.getProperty("serverUrls")) return; + Navigation.navigate("PayWall", { + context: "logged-in" + }); + } + }); + }, 1000); + } + }); + } }, lastSyncStatus: SyncStatus.Never, disableAppLockRequests: false,