Disable turnkey button; bump new android build (#1412)

* disable turnkey

* disable turnkey button

* remove comments

* update build

* bump artifcats
This commit is contained in:
Justin Hernandez
2025-11-13 11:06:11 -08:00
committed by GitHub
parent 7ccf688a1d
commit e71860d7ee
6 changed files with 134 additions and 117 deletions

View File

@@ -114,9 +114,9 @@ GEM
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday-cookie_jar (0.0.8)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
http-cookie (>= 1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.1)
faraday-excon (1.1.0)

View File

@@ -134,7 +134,7 @@ android {
applicationId "com.proofofpassportapp"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 120
versionCode 121
versionName "2.9.0"
manifestPlaceholders = [appAuthRedirectScheme: 'com.proofofpassportapp']
externalNativeBuild {

View File

@@ -2,11 +2,10 @@
// SPDX-License-Identifier: BUSL-1.1
// NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE.
import React, { useCallback, useEffect, useState } from 'react';
import React, { useCallback, useState } from 'react';
import { Separator, View, XStack, YStack } from 'tamagui';
import { useNavigation } from '@react-navigation/native';
import type { NativeStackNavigationProp } from '@react-navigation/native-stack';
import { AuthState, useTurnkey } from '@turnkey/react-native-wallet-kit';
import { isUserRegisteredWithAlternativeCSCA } from '@selfxyz/common/utils/passports/validate';
import {
@@ -36,32 +35,38 @@ import { useSettingStore } from '@/stores/settingStore';
import type { Mnemonic } from '@/types/mnemonic';
import { STORAGE_NAME, useBackupMnemonic } from '@/utils/cloudBackup';
import { black, slate500, slate600, white } from '@/utils/colors';
import { useTurnkeyUtils } from '@/utils/turnkey';
// DISABLED FOR NOW: Turnkey functionality
// import { AuthState, useTurnkey } from '@turnkey/react-native-wallet-kit';
// import { useTurnkeyUtils } from '@/utils/turnkey';
const AccountRecoveryChoiceScreen: React.FC = () => {
const selfClient = useSelfClient();
const { useProtocolStore } = selfClient;
const { trackEvent } = useSelfClient();
const { restoreAccountFromMnemonic } = useAuth();
const { turnkeyWallets, refreshWallets } = useTurnkeyUtils();
const { getMnemonic } = useTurnkeyUtils();
const { authState } = useTurnkey();
// DISABLED FOR NOW: Turnkey functionality
// const { turnkeyWallets, refreshWallets } = useTurnkeyUtils();
// const { getMnemonic } = useTurnkeyUtils();
// const { authState } = useTurnkey();
const [restoring, setRestoring] = useState(false);
const { cloudBackupEnabled, toggleCloudBackupEnabled, biometricsAvailable } =
useSettingStore();
const { download } = useBackupMnemonic();
const navigation =
useNavigation<NativeStackNavigationProp<RootStackParamList>>();
const setTurnkeyBackupEnabled = useSettingStore(
state => state.setTurnkeyBackupEnabled,
);
// DISABLED FOR NOW: Turnkey functionality
// const setTurnkeyBackupEnabled = useSettingStore(
// state => state.setTurnkeyBackupEnabled,
// );
const onRestoreFromCloudNext = useHapticNavigation('AccountVerifiedSuccess');
const onEnterRecoveryPress = useHapticNavigation('RecoverWithPhrase');
useEffect(() => {
refreshWallets();
}, [refreshWallets]);
// DISABLED FOR NOW: Turnkey functionality
// useEffect(() => {
// refreshWallets();
// }, [refreshWallets]);
const restoreAccountFlow = useCallback(
async (
@@ -138,29 +143,30 @@ const AccountRecoveryChoiceScreen: React.FC = () => {
],
);
const onRestoreFromTurnkeyPress = useCallback(async () => {
setRestoring(true);
try {
const mnemonicPhrase = await getMnemonic();
const mnemonic: Mnemonic = {
phrase: mnemonicPhrase,
password: '',
wordlist: {
locale: 'en',
},
entropy: '',
};
const success = await restoreAccountFlow(mnemonic);
if (success) {
setTurnkeyBackupEnabled(true);
}
} catch (error) {
console.error('Turnkey restore error:', error);
trackEvent(BackupEvents.CLOUD_RESTORE_FAILED_UNKNOWN);
} finally {
setRestoring(false);
}
}, [getMnemonic, restoreAccountFlow, setTurnkeyBackupEnabled, trackEvent]);
// DISABLED FOR NOW: Turnkey functionality
// const onRestoreFromTurnkeyPress = useCallback(async () => {
// setRestoring(true);
// try {
// const mnemonicPhrase = await getMnemonic();
// const mnemonic: Mnemonic = {
// phrase: mnemonicPhrase,
// password: '',
// wordlist: {
// locale: 'en',
// },
// entropy: '',
// };
// const success = await restoreAccountFlow(mnemonic);
// if (success) {
// setTurnkeyBackupEnabled(true);
// }
// } catch (error) {
// console.error('Turnkey restore error:', error);
// trackEvent(BackupEvents.CLOUD_RESTORE_FAILED_UNKNOWN);
// } finally {
// setRestoring(false);
// }
// }, [getMnemonic, restoreAccountFlow, setTurnkeyBackupEnabled, trackEvent]);
const onRestoreFromCloudPress = useCallback(async () => {
setRestoring(true);
@@ -205,7 +211,8 @@ const AccountRecoveryChoiceScreen: React.FC = () => {
</Description>
<YStack gap="$2.5" width="100%" paddingTop="$6">
<PrimaryButton
{/* DISABLED FOR NOW: Turnkey functionality */}
{/* <PrimaryButton
trackEvent={BackupEvents.CLOUD_BACKUP_STARTED}
onPress={onRestoreFromTurnkeyPress}
testID="button-from-turnkey"
@@ -218,7 +225,7 @@ const AccountRecoveryChoiceScreen: React.FC = () => {
>
{restoring ? 'Restoring' : 'Restore'} from Turnkey
{restoring ? '' : ''}
</PrimaryButton>
</PrimaryButton> */}
<PrimaryButton
trackEvent={BackupEvents.CLOUD_BACKUP_STARTED}
onPress={onRestoreFromCloudPress}

View File

@@ -8,7 +8,6 @@ import { YStack } from 'tamagui';
import type { StaticScreenProps } from '@react-navigation/native';
import { useNavigation } from '@react-navigation/native';
import type { NativeStackNavigationProp } from '@react-navigation/native-stack';
import { Wallet } from '@tamagui/lucide-icons';
import { useSelfClient } from '@selfxyz/mobile-sdk-alpha';
import {
@@ -26,7 +25,10 @@ import { STORAGE_NAME, useBackupMnemonic } from '@/utils/cloudBackup';
import { black, blue600, slate200, slate500, white } from '@/utils/colors';
import { advercase, dinot } from '@/utils/fonts';
import { buttonTap, confirmTap } from '@/utils/haptic';
import { useTurnkeyUtils } from '@/utils/turnkey';
// DISABLED FOR NOW: Turnkey functionality
// import { Wallet } from '@tamagui/lucide-icons';
// import { useTurnkeyUtils } from '@/utils/turnkey';
type NextScreen = keyof Pick<RootStackParamList, 'SaveRecoveryPhrase'>;
@@ -44,13 +46,15 @@ const CloudBackupScreen: React.FC<CloudBackupScreenProps> = ({
route: { params },
}) => {
const { trackEvent } = useSelfClient();
const { backupAccount } = useTurnkeyUtils();
// DISABLED FOR NOW: Turnkey functionality
// const { backupAccount } = useTurnkeyUtils();
const { getOrCreateMnemonic, loginWithBiometrics } = useAuth();
const {
cloudBackupEnabled,
toggleCloudBackupEnabled,
biometricsAvailable,
turnkeyBackupEnabled,
// DISABLED FOR NOW: Turnkey functionality
// turnkeyBackupEnabled,
} = useSettingStore();
const { upload, disableBackup } = useBackupMnemonic();
const navigation =
@@ -58,7 +62,8 @@ const CloudBackupScreen: React.FC<CloudBackupScreenProps> = ({
const [_selectedMethod, setSelectedMethod] = useState<BackupMethod>(null);
const [iCloudPending, setICloudPending] = useState(false);
const [turnkeyPending, setTurnkeyPending] = useState(false);
// DISABLED FOR NOW: Turnkey functionality
// const [turnkeyPending, setTurnkeyPending] = useState(false);
const { showModal: showDisableModal } = useModal(
useMemo(
@@ -91,22 +96,23 @@ const CloudBackupScreen: React.FC<CloudBackupScreenProps> = ({
),
);
const { showModal: showAlreadySignedInModal } = useModal({
titleText: 'Cannot use this email',
bodyText:
'You cannot use this email. Please try again with a different email address.',
buttonText: 'OK',
onButtonPress: () => {},
onModalDismiss: () => {},
});
// DISABLED FOR NOW: Turnkey functionality
// const { showModal: showAlreadySignedInModal } = useModal({
// titleText: 'Cannot use this email',
// bodyText:
// 'You cannot use this email. Please try again with a different email address.',
// buttonText: 'OK',
// onButtonPress: () => {},
// onModalDismiss: () => {},
// });
const { showModal: showAlreadyBackedUpModal } = useModal({
titleText: 'Already backed up with Turnkey',
bodyText: 'You have already backed up your account with Turnkey.',
buttonText: 'OK',
onButtonPress: () => {},
onModalDismiss: () => {},
});
// const { showModal: showAlreadyBackedUpModal } = useModal({
// titleText: 'Already backed up with Turnkey',
// bodyText: 'You have already backed up your account with Turnkey.',
// buttonText: 'OK',
// onButtonPress: () => {},
// onModalDismiss: () => {},
// });
const handleICloudBackup = useCallback(async () => {
buttonTap();
setSelectedMethod('icloud');
@@ -153,61 +159,62 @@ const CloudBackupScreen: React.FC<CloudBackupScreenProps> = ({
showDisableModal();
}, [showDisableModal]);
const handleTurnkeyBackup = useCallback(async () => {
buttonTap();
setSelectedMethod('turnkey');
// DISABLED FOR NOW: Turnkey functionality
// const handleTurnkeyBackup = useCallback(async () => {
// buttonTap();
// setSelectedMethod('turnkey');
if (turnkeyBackupEnabled) {
return;
}
// if (turnkeyBackupEnabled) {
// return;
// }
setTurnkeyPending(true);
// setTurnkeyPending(true);
try {
const mnemonics = await getOrCreateMnemonic();
// try {
// const mnemonics = await getOrCreateMnemonic();
if (!mnemonics?.data.phrase) {
console.error('No mnemonic found');
setTurnkeyPending(false);
return;
}
// if (!mnemonics?.data.phrase) {
// console.error('No mnemonic found');
// setTurnkeyPending(false);
// return;
// }
await backupAccount(mnemonics.data.phrase);
setTurnkeyPending(false);
// await backupAccount(mnemonics.data.phrase);
// setTurnkeyPending(false);
if (params?.returnToScreen) {
navigation.navigate(params.returnToScreen);
}
} catch (error) {
if (error instanceof Error && error.message === 'already_exists') {
console.log('Already signed in with Turnkey');
showAlreadySignedInModal();
} else if (
error instanceof Error &&
error.message === 'already_backed_up'
) {
console.log('Already backed up with Turnkey');
if (params?.returnToScreen) {
navigation.navigate(params.returnToScreen);
} else if (params?.nextScreen) {
navigation.navigate(params.nextScreen);
} else {
showAlreadyBackedUpModal();
}
} else {
console.error('Turnkey backup error', error);
}
setTurnkeyPending(false);
}
}, [
turnkeyBackupEnabled,
backupAccount,
getOrCreateMnemonic,
showAlreadySignedInModal,
showAlreadyBackedUpModal,
navigation,
params,
]);
// if (params?.returnToScreen) {
// navigation.navigate(params.returnToScreen);
// }
// } catch (error) {
// if (error instanceof Error && error.message === 'already_exists') {
// console.log('Already signed in with Turnkey');
// showAlreadySignedInModal();
// } else if (
// error instanceof Error &&
// error.message === 'already_backed_up'
// ) {
// console.log('Already backed up with Turnkey');
// if (params?.returnToScreen) {
// navigation.navigate(params.returnToScreen);
// } else if (params?.nextScreen) {
// navigation.navigate(params.nextScreen);
// } else {
// showAlreadyBackedUpModal();
// }
// } else {
// console.error('Turnkey backup error', error);
// }
// setTurnkeyPending(false);
// }
// }, [
// turnkeyBackupEnabled,
// backupAccount,
// getOrCreateMnemonic,
// showAlreadySignedInModal,
// showAlreadyBackedUpModal,
// navigation,
// params,
// ]);
return (
<YStack flex={1} backgroundColor={white}>
@@ -259,7 +266,8 @@ const CloudBackupScreen: React.FC<CloudBackupScreenProps> = ({
</Pressable>
)}
{turnkeyBackupEnabled ? (
{/* DISABLED FOR NOW: Turnkey functionality */}
{/* {turnkeyBackupEnabled ? (
<SecondaryButton
disabled
trackEvent={BackupEvents.CLOUD_BACKUP_DISABLE_STARTED}
@@ -281,11 +289,11 @@ const CloudBackupScreen: React.FC<CloudBackupScreenProps> = ({
{turnkeyPending ? '…' : ''}
</Text>
</Pressable>
)}
)} */}
<BottomButton
cloudBackupEnabled={cloudBackupEnabled}
turnkeyBackupEnabled={turnkeyBackupEnabled}
turnkeyBackupEnabled={false}
nextScreen={params?.nextScreen}
/>
</View>

View File

@@ -23,7 +23,9 @@ import { black, slate400, white } from '@/utils/colors';
const SaveRecoveryPhraseScreen: React.FC = () => {
const [userHasSeenMnemonic, setUserHasSeenMnemonic] = useState(false);
const { mnemonic, loadMnemonic } = useMnemonic();
const { cloudBackupEnabled, turnkeyBackupEnabled } = useSettingStore();
// DISABLED FOR NOW: Turnkey functionality
// const { cloudBackupEnabled, turnkeyBackupEnabled } = useSettingStore();
const { cloudBackupEnabled } = useSettingStore();
const onRevealWords = useCallback(async () => {
await loadMnemonic();
@@ -64,10 +66,10 @@ const SaveRecoveryPhraseScreen: React.FC = () => {
settings.
</Caption>
<PrimaryButton onPress={onCloudBackupPress}>
Manage {STORAGE_NAME} or Turnkey backups
Manage {STORAGE_NAME} backups
</PrimaryButton>
<SecondaryButton onPress={onSkipPress}>
{userHasSeenMnemonic || cloudBackupEnabled || turnkeyBackupEnabled
{userHasSeenMnemonic || cloudBackupEnabled
? 'Continue'
: 'Skip making a backup'}
</SecondaryButton>

View File

@@ -4,7 +4,7 @@
"lastDeployed": "2025-11-11T17:50:43.331Z"
},
"android": {
"build": 120,
"lastDeployed": "2025-11-12T01:32:51Z"
"build": 121,
"lastDeployed": "2025-11-12T21:52:45Z"
}
}