diff --git a/Navigation.js b/Navigation.js index ee528953d..30109faa6 100644 --- a/Navigation.js +++ b/Navigation.js @@ -211,18 +211,6 @@ const ScanLndInvoiceRoot = () => ( ); -const HandleOffchainAndOnChainStack = createStackNavigator(); -const HandleOffchainAndOnChain = () => ( - - {/* screens */} - - - {/* stacks */} - - - -); - const AztecoRedeemStack = createStackNavigator(); const AztecoRedeemRoot = () => ( @@ -247,7 +235,6 @@ const Navigation = () => ( - - completionHandler(DeeplinkSchemaMatch.isBothBitcoinAndLightningOnWalletSelect(wallet, isBothBitcoinAndLightning)), + onWalletSelect: (wallet, { navigation }) => { + navigation.pop(); // close select wallet screen + navigation.navigate(...DeeplinkSchemaMatch.isBothBitcoinAndLightningOnWalletSelect(wallet, isBothBitcoinAndLightning)); }, }, ]); @@ -206,18 +205,24 @@ class DeeplinkSchemaMatch { static isBothBitcoinAndLightningOnWalletSelect(wallet, uri) { if (wallet.chain === Chain.ONCHAIN) { return [ - 'SendDetails', + 'SendDetailsRoot', { - uri: uri.bitcoin, - fromWallet: wallet, + screen: 'SendDetails', + params: { + uri: uri.bitcoin, + fromWallet: wallet, + }, }, ]; } else if (wallet.chain === Chain.OFFCHAIN) { return [ - 'ScanLndInvoice', + 'ScanLndInvoiceRoot', { - uri: uri.lndInvoice, - fromSecret: wallet.getSecret(), + screen: 'ScanLndInvoice', + params: { + uri: uri.lndInvoice, + fromSecret: wallet.getSecret(), + }, }, ]; } diff --git a/screen/wallets/selectWallet.js b/screen/wallets/selectWallet.js index 962af80fe..772b56fef 100644 --- a/screen/wallets/selectWallet.js +++ b/screen/wallets/selectWallet.js @@ -75,7 +75,7 @@ const styles = StyleSheet.create({ }, }); -const SelectWallet = () => { +const SelectWallet = ({ navigation }) => { const { chainType, onWalletSelect, availableWallets } = useRoute().params; const [isLoading, setIsLoading] = useState(true); let data = chainType @@ -96,7 +96,7 @@ const SelectWallet = () => { { ReactNativeHapticFeedback.trigger('selection', { ignoreAndroidSystemSettings: false }); - onWalletSelect(item); + onWalletSelect(item, { navigation }); }} > diff --git a/tests/unit/deeplink-schema-match.test.js b/tests/unit/deeplink-schema-match.test.js index eab09e680..b96c34be1 100644 --- a/tests/unit/deeplink-schema-match.test.js +++ b/tests/unit/deeplink-schema-match.test.js @@ -165,6 +165,17 @@ describe('unit - DeepLinkSchemaMatch', function () { const navValue = await asyncNavigationRouteFor(event.argument); assert.deepStrictEqual(navValue, event.expected); } + + // BIP21 w/BOLT11 support + assert.equal( + ( + await asyncNavigationRouteFor({ + url: + 'bitcoin:1DamianM2k8WfNEeJmyqSe2YW1upB7UATx?amount=0.000001&lightning=lnbc1u1pwry044pp53xlmkghmzjzm3cljl6729cwwqz5hhnhevwfajpkln850n7clft4sdqlgfy4qv33ypmj7sj0f32rzvfqw3jhxaqcqzysxq97zvuq5zy8ge6q70prnvgwtade0g2k5h2r76ws7j2926xdjj2pjaq6q3r4awsxtm6k5prqcul73p3atveljkn6wxdkrcy69t6k5edhtc6q7lgpe4m5k4', + }) + )[0], + 'SelectWallet', + ); }); it('decodes bip21', () => {