mirror of
https://github.com/streetwriters/notesnook.git
synced 2025-12-16 19:57:52 +01:00
Merge pull request #8832 from streetwriters/fix-vault-biometrics-unlock
mobile: fix vault biometrics state incorrect on app launch
This commit is contained in:
@@ -21,6 +21,7 @@ import React, { useCallback, useEffect } from "react";
|
|||||||
import { db } from "../common/database";
|
import { db } from "../common/database";
|
||||||
import BiometricService from "../services/biometrics";
|
import BiometricService from "../services/biometrics";
|
||||||
import { eSubscribeEvent, eUnSubscribeEvent } from "../services/event-manager";
|
import { eSubscribeEvent, eUnSubscribeEvent } from "../services/event-manager";
|
||||||
|
import { useSettingStore } from "../stores/use-setting-store";
|
||||||
|
|
||||||
const VaultStatusDefaults = {
|
const VaultStatusDefaults = {
|
||||||
exists: false,
|
exists: false,
|
||||||
@@ -36,6 +37,7 @@ export type VaultStatusType = {
|
|||||||
|
|
||||||
export const useVaultStatus = () => {
|
export const useVaultStatus = () => {
|
||||||
const [vaultStatus, setVaultStatus] = React.useState(VaultStatusDefaults);
|
const [vaultStatus, setVaultStatus] = React.useState(VaultStatusDefaults);
|
||||||
|
const isAppLoading = useSettingStore((state) => state.isAppLoading);
|
||||||
|
|
||||||
const checkVaultStatus = useCallback(() => {
|
const checkVaultStatus = useCallback(() => {
|
||||||
db.vault?.exists().then(async (exists) => {
|
db.vault?.exists().then(async (exists) => {
|
||||||
@@ -50,12 +52,13 @@ export const useVaultStatus = () => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (isAppLoading) return;
|
||||||
checkVaultStatus();
|
checkVaultStatus();
|
||||||
eSubscribeEvent("vaultUpdated", () => checkVaultStatus());
|
eSubscribeEvent("vaultUpdated", () => checkVaultStatus());
|
||||||
return () => {
|
return () => {
|
||||||
eUnSubscribeEvent("vaultUpdated", () => checkVaultStatus());
|
eUnSubscribeEvent("vaultUpdated", () => checkVaultStatus());
|
||||||
};
|
};
|
||||||
}, [checkVaultStatus]);
|
}, [checkVaultStatus, isAppLoading]);
|
||||||
|
|
||||||
return vaultStatus;
|
return vaultStatus;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ import {
|
|||||||
import { fluidTabsRef } from "../../utils/global-refs";
|
import { fluidTabsRef } from "../../utils/global-refs";
|
||||||
import { strings } from "@notesnook/intl";
|
import { strings } from "@notesnook/intl";
|
||||||
import { i18n } from "@lingui/core";
|
import { i18n } from "@lingui/core";
|
||||||
|
import { useVaultStatus } from "../../hooks/use-vault-status";
|
||||||
|
|
||||||
const style: ViewStyle = {
|
const style: ViewStyle = {
|
||||||
height: "100%",
|
height: "100%",
|
||||||
@@ -197,6 +198,7 @@ const Editor = React.memo(
|
|||||||
export default Editor;
|
export default Editor;
|
||||||
|
|
||||||
const useLockedNoteHandler = () => {
|
const useLockedNoteHandler = () => {
|
||||||
|
const vaultStatus = useVaultStatus();
|
||||||
const tab = useTabStore((state) => state.getTab(state.currentTab));
|
const tab = useTabStore((state) => state.getTab(state.currentTab));
|
||||||
const tabRef = useRef(tab);
|
const tabRef = useRef(tab);
|
||||||
tabRef.current = tab;
|
tabRef.current = tab;
|
||||||
@@ -217,15 +219,13 @@ const useLockedNoteHandler = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
const biometry = await BiometricService.isBiometryAvailable();
|
|
||||||
const fingerprint = await BiometricService.hasInternetCredentials();
|
|
||||||
useTabStore.setState({
|
useTabStore.setState({
|
||||||
biometryAvailable: !!biometry,
|
biometryAvailable: !!vaultStatus.isBiometryAvailable,
|
||||||
biometryEnrolled: !!fingerprint
|
biometryEnrolled: !!vaultStatus.biometryEnrolled
|
||||||
});
|
});
|
||||||
syncTabs("biometry");
|
syncTabs("biometry");
|
||||||
})();
|
})();
|
||||||
}, [tab?.id]);
|
}, [tab?.id, vaultStatus.biometryEnrolled, vaultStatus.isBiometryAvailable]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const unlockWithBiometrics = async () => {
|
const unlockWithBiometrics = async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user