Skip to content
14 changes: 14 additions & 0 deletions src/assets/images/biometric-image.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions src/assets/images/password-ico.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions src/assets/images/pin-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
55 changes: 55 additions & 0 deletions src/components/ConfirmCredentialModal.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { Box } from 'native-base';
import React from 'react';
import { useSelector } from 'react-redux';
import LoginMethod from 'src/models/enums/LoginMethod';
import { useAppSelector } from 'src/store/hooks';
import PasscodeVerifyModal from './Modal/PasscodeVerify';
import PasswordModalContent from 'src/screens/AppSettings/PasswordModalContent';

type Props = {
close?: () => void;
success?: any;
useBiometrics?: boolean;
forcedMode?: any;
onForceSuccess?: any;
primaryText?: string;
};

const ConfirmCredentialModal = ({
success,
close,
useBiometrics,
forcedMode,
onForceSuccess,
primaryText,
}: Props) => {
const { loginMethod }: { loginMethod: LoginMethod } = useAppSelector((state) => state.settings);
const fallbackLoginMethod = useSelector((state) => state.settings.fallbackLoginMethod);

return (
<Box>
{(loginMethod === LoginMethod.BIOMETRIC && fallbackLoginMethod === 'PIN') ||
(loginMethod !== LoginMethod.BIOMETRIC && loginMethod === LoginMethod.PIN) ? (
<PasscodeVerifyModal
useBiometrics={useBiometrics}
close={() => {
close();
}}
forcedMode={forcedMode}
onForceSuccess={onForceSuccess}
onSuccess={success}
primaryText={primaryText}
/>
) : (
<PasswordModalContent
close={() => {
close();
}}
onSuccess={success}
/>
)}
</Box>
);
};

export default ConfirmCredentialModal;
2 changes: 1 addition & 1 deletion src/components/Modal/PasscodeVerify.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ function PasscodeVerifyModal({
const [errMessage, setErrMessage] = useState(login.Incorrect);
const { isAuthenticated, authenticationFailed } = useAppSelector((state) => state.login);
const { loginMethod } = useAppSelector((state) => state.settings);
const { appId, failedAttempts, lastLoginFailedAt } = useAppSelector((state) => state.storage);
const { appId } = useAppSelector((state) => state.storage);

useEffect(() => {
if (useBiometrics) {
Expand Down
10 changes: 4 additions & 6 deletions src/components/RKSignersModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import { CKTapCard } from 'cktap-protocol-react-native';
import useNfcModal from 'src/hooks/useNfcModal';
import NfcPrompt from 'src/components/NfcPromptAndroid';
import KeeperModal from 'src/components/KeeperModal';
import PasscodeVerifyModal from 'src/components/Modal/PasscodeVerify';
import { Box, useColorMode } from 'native-base';
import { SIGNTRANSACTION } from 'src/navigation/contants';
import { useDispatch } from 'react-redux';
Expand All @@ -30,6 +29,7 @@ import { KeeperApp } from 'src/models/interfaces/KeeperApp';
import { LocalizationContext } from 'src/context/Localization/LocContext';
import { useAppSelector } from 'src/store/hooks';
import ShareKeyModalContent from 'src/screens/Vault/components/ShareKeyModalContent';
import ConfirmCredentialModal from './ConfirmCredentialModal';
import Text from './KeeperText';
import WalletOperations from 'src/services/wallets/operations';
import ActivityIndicatorView from './AppActivityIndicator/ActivityIndicatorView';
Expand Down Expand Up @@ -388,12 +388,10 @@ const RKSignersModal = ({ signer, psbt, isMiniscript, vaultId }, ref) => {
textColor={`${colorMode}.textGreen`}
subTitleColor={`${colorMode}.modalSubtitleBlack`}
Content={() => (
<PasscodeVerifyModal
<ConfirmCredentialModal
close={() => setConfirmPassVisible(false)}
success={signTransaction}
useBiometrics={false}
close={() => {
setConfirmPassVisible(false);
}}
onSuccess={signTransaction}
/>
)}
/>
Expand Down
1 change: 1 addition & 0 deletions src/models/enums/LoginMethod.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
enum LoginMethod {
PIN = 'PIN',
BIOMETRIC = 'BIOMETRIC',
PASSWORD = 'PASSWORD',
}
export default LoginMethod;
8 changes: 4 additions & 4 deletions src/screens/AppSettings/AppBackupSettings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { CommonActions, useNavigation } from '@react-navigation/native';
import OptionCard from 'src/components/OptionCard';
import KeeperModal from 'src/components/KeeperModal';
import ScreenWrapper from 'src/components/ScreenWrapper';
import PasscodeVerifyModal from 'src/components/Modal/PasscodeVerify';
import { wp } from 'src/constants/responsive';
import { LocalizationContext } from 'src/context/Localization/LocContext';
import { RealmSchema } from 'src/storage/realm/enum';
Expand All @@ -31,6 +30,7 @@ import { NewVaultInfo } from 'src/store/sagas/wallets';
import BackupModalContent from './BackupModal';
import { credsAuthenticated } from 'src/store/reducers/login';
import WalletHeader from 'src/components/WalletHeader';
import ConfirmCredentialModal from 'src/components/ConfirmCredentialModal';

function AppBackupSettings() {
const { colorMode } = useColorMode();
Expand Down Expand Up @@ -160,15 +160,15 @@ function AppBackupSettings() {
textColor={`${colorMode}.textGreen`}
subTitleColor={`${colorMode}.modalSubtitleBlack`}
Content={() => (
<PasscodeVerifyModal
useBiometrics
<ConfirmCredentialModal
close={() => {
setConfirmPassVisible(false);
}}
onSuccess={() => {
success={() => {
setConfirmPassVisible(false);
setBackupModalVisible(true);
}}
useBiometrics={true}
/>
)}
/>
Expand Down
Loading
Loading