Skip to content

Commit

Permalink
ZEUS-2341: Embedded LND: Seed: allow export of ypriv/zpriv
Browse files Browse the repository at this point in the history
  • Loading branch information
kaloudis committed Dec 31, 2024
1 parent 912b6cb commit f356c9a
Show file tree
Hide file tree
Showing 8 changed files with 542 additions and 84 deletions.
5 changes: 5 additions & 0 deletions App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ import EditFee from './views/EditFee';
// Embedded LND
import Seed from './views/Settings/Seed';
import SeedRecovery from './views/Settings/SeedRecovery';
import SeedQRExport from './views/Settings/SeedQRExport';
import Sync from './views/Sync';
import SyncRecovery from './views/SyncRecovery';
import LspExplanationFees from './views/Explanations/LspExplanationFees';
Expand Down Expand Up @@ -624,6 +625,10 @@ export default class App extends React.PureComponent {
name="SeedRecovery" // @ts-ignore:next-line
component={SeedRecovery}
/>
<Stack.Screen
name="SeedQRExport" // @ts-ignore:next-line
component={SeedQRExport}
/>
<Stack.Screen
name="Sync" // @ts-ignore:next-line
component={Sync}
Expand Down
155 changes: 80 additions & 75 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ PODS:
- fmt (= 9.1.0)
- glog
- RCT-Folly/Default (= 2024.01.01.00)
- RCT-Folly/Default (2024.01.01.00):
- boost
- DoubleConversion
- fmt (= 9.1.0)
- glog
- RCT-Folly/Fabric (2024.01.01.00):
- boost
- DoubleConversion
Expand Down Expand Up @@ -1607,100 +1612,100 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
boost: d3f49c53809116a5d38da093a8aa78bf551aed09
BVLinearGradient: 34a999fda29036898a09c6a6b728b0b4189e1a44
BVLinearGradient: 7815a70ab485b7b155186dd0cc836363e0288cad
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385
DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
FBLazyVector: 4bc164e5b5e6cfc288d2b5ff28643ea15fa1a589
fmt: 10c6e61f4be25dc963c36bd73fc7b1705fe975be
glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a
fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120
glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f
hermes-engine: 01d3e052018c2a13937aca1860fbedbccd4a41b7
lottie-ios: 8f97d3271e155c2d688875c29cd3c74908aef5f8
lottie-react-native: 8f9d4be452e23f6e5ca0fdc11669dc99ab52be81
RCT-Folly: bf5c0376ffe4dd2cf438dcf86db385df9fdce648
lottie-react-native: 5d89c05930d4180a1e39b1757d46e6c0eec90255
RCT-Folly: 5dc73daec3476616d19e8a53f0156176f7b55461
RCTDeprecation: b03c35057846b685b3ccadc9bfe43e349989cdb2
RCTRequired: 194626909cfa8d39ca6663138c417bc6c431648c
RCTTypeSafety: 552aff5b8e8341660594db00e53ac889682bc120
React: a57fe42044fe6ed3e828f8867ce070a6c5872754
React-callinvoker: 6bedefb354a8848b534752417954caa3a5cf34f9
React-Codegen: 0952549a095f8f8cb2fb5def1733b6b232769b1c
React-Core: 289ee3dfc1639bb9058c1e77427bb48169c26d7a
React-CoreModules: eda5ce541a1f552158317abd90a5a0f6a4f8d6f7
React-cxxreact: 56bd17ccc6d4248116f7f95884ddb8c528379fb6
React-Codegen: 49cfc291275676ba00401e4cbbb6931906d50623
React-Core: 5378e701a95b000d5a0b7020149f428b854a6222
React-CoreModules: 80cd03b1e5ad19de582bd076fb63114964e5a45e
React-cxxreact: d162761aef4ff8191d01fea602e2b981365f5f10
React-debug: 164b8e302404d92d4bec39778a5e03bcb1b6eb08
React-Fabric: 05620c36074e3ab397dd8f9db0deb6d3c38b4efa
React-FabricImage: 2a8a7f5729f5c44e32e6f58f7225ee1017ed0704
React-Fabric: a3d85fbd80e336d7137b77bcd6e713bb1ef5f9e3
React-FabricImage: 60a42161a730e98b8391b71aa79a3dd01c91c117
React-featureflags: d97a6393993052e951e16a3b81206e22110be8d2
React-graphics: ef07d701f4eb72ae6fca6ed0a7260a04f2a58dec
React-hermes: 6ccc301ababfa17a9aad25a7e33faf325fd024b4
React-ImageManager: 00404bfe122626bc6493621f2a31ce802115a9b3
React-jserrorhandler: 5e2632590a84363855b2083e6b3d501e93bc3f04
React-jsi: 828703c235f4eea1647897ee8030efdc6e8e9f14
React-jsiexecutor: 713d7bbef0a410cee5b3b78f73ed1fc16e177ba7
React-jsinspector: e1fa5325a47f34645195c63e3312ddb6a2efef5d
React-jsitracing: 0fa7f78d8fdda794667cb2e6f19c874c1cf31d7e
React-logger: 29fa3e048f5f67fe396bc08af7606426d9bd7b5d
React-Mapbuffer: bf56147c9775491e53122a94c423ac201417e326
react-native-biometrics: 352e5a794bfffc46a0c86725ea7dc62deb085bdc
react-native-blob-util: af2dc91365bfde33f61389cbd0c692af9a4a97cb
react-native-date-picker: 1d61c76315098a6ad4c643a356f005916c7d4875
react-native-encrypted-storage: db300a3f2f0aba1e818417c1c0a6be549038deb7
react-native-get-random-values: dee677497c6a740b71e5612e8dbd83e7539ed5bb
react-native-hce: 677aa1c41edf183523bb7b1014d106a08631ff88
react-native-image-picker: 8cb4280e2c1efc3daeb2d9d597f9429a60472e40
react-native-netinfo: 076df4f9b07f6670acf4ce9a75aac8d34c2e2ccc
react-native-nfc-manager: ead2cd1d1eaab139cc8b2dc5fbfe575eaa45efc4
react-native-notifications: 4601a5a8db4ced6ae7cfc43b44d35fe437ac50c4
react-native-ping: e9f64f02087c3cd2a0bc771ad0cf4a88edaa3072
react-native-print: f704aef52d931bfce6d1d84351dbb5232d7ecb89
react-native-qrcode-local-image: 35ccb306e4265bc5545f813e54cc830b5d75bcfc
react-native-randombytes: 3638d24759d67c68f6ccba60c52a7a8a8faa6a23
react-native-restart: 7595693413fe3ca15893702f2c8306c62a708162
react-native-safe-area-context: dcab599c527c2d7de2d76507a523d20a0b83823d
react-native-slider: ce295d2bf830a7990af05b0bd70ab28c133e230c
react-native-tor: 3b14e9160b2eb7fa3f310921b2dee71a5171e5b7
react-native-udp: df79c3cb72c4e71240cd3ce4687bfb8a137140d5
React-graphics: 98ac899ccd24a52b95607f6e936f0dee1df72fc6
React-hermes: 7456eb2ac1cca407e743db848e39473e1e8cb67a
React-ImageManager: 5f8615ba4d5a191c7bb085a22063f12ad1ef77ee
React-jserrorhandler: be31e8fa6c5056976215f4363c018a09521eebdf
React-jsi: 673c0629d1347e4b47f3e8af50425b84dbe3bffb
React-jsiexecutor: a0ce7f28434a949235e5a849689cceae8bf03a8e
React-jsinspector: 37ce74bdcd2d604b05ad871a2bf500da50770f18
React-jsitracing: 00f6151766dec0ab324e2854a9d4dfde0e1f30cc
React-logger: 70e002e04cc56ff5c12157537405d1644c050703
React-Mapbuffer: 8d1f0fc6e7280a8ed6da70ece5f283ac5c8032cb
react-native-biometrics: 43ed5b828646a7862dbc7945556446be00798e7d
react-native-blob-util: 0d6f9dbc1f1bb83e9f14b99c571874667b72b36c
react-native-date-picker: 867635d29cb2b9b21db129a638fc368269ae7f51
react-native-encrypted-storage: 569d114e329b1c2c2d9f8c84bcdbe4478dda2258
react-native-get-random-values: 419569b6ed3d15bfb9b6781b2f2e058f8e8d2698
react-native-hce: f42561549a16f53ae98edb7f1b68ad87b6e732e1
react-native-image-picker: b15a9e61c326c99b8215659d968accee6eddf639
react-native-netinfo: ce102083db558237dac20cf64172ef569ebe2dd9
react-native-nfc-manager: f74a1e52807a916d27c2f428633e474cf661d611
react-native-notifications: 3bafa1237ae8a47569a84801f17d80242fe9f6a5
react-native-ping: 589027e929c300b0b68cc5c34105f33610177055
react-native-print: 692e8782bc89872ea01738c6759631388e77358c
react-native-qrcode-local-image: d0067bbd2dc6c23f62cbf38a1c9b2a2af58e47ec
react-native-randombytes: 4a00fba06ca0d80a7c02a6b73cfe58ffa4a093a0
react-native-restart: 0bc732f4461709022a742bb29bcccf6bbc5b4863
react-native-safe-area-context: 8c70551c8688cd584a53487aa1b9361e991a3b4a
react-native-slider: 2f40d233a8e04d2659116389a2c7a531ee2f651c
react-native-tor: dc46832ab810a21fb8954afa20b5aeb740ef93f5
react-native-udp: 806f16ab890dd838bc073afcebd6a221d4965572
React-nativeconfig: 9f223cd321823afdecf59ed00861ab2d69ee0fc1
React-NativeModulesApple: ff7efaff7098639db5631236cfd91d60abff04c0
React-NativeModulesApple: 1cd770ed7dc463e55d02a05f7fc3be46076d393e
React-perflogger: 32ed45d9cee02cf6639acae34251590dccd30994
React-RCTActionSheet: 19f967ddaea258182b56ef11437133b056ba2adf
React-RCTAnimation: d7f4137fc44a08bba465267ea7cb1dbdb7c4ec87
React-RCTAppDelegate: 2b3f4d8009796af209a0d496e73276b743acee08
React-RCTBlob: c6c3e1e0251700b7bea036b893913f22e2b9cb47
React-RCTFabric: 93a3ea55169d19294f07092013c1c9ea7a015c9b
React-RCTImage: 40528ab74a4fef0f0e2ee797a074b26d120b6cc6
React-RCTLinking: 385b5beb96749aae9ae1606746e883e1c9f8a6a7
React-RCTNetwork: ffc9f05bd8fa5b3bce562199ba41235ad0af645c
React-RCTSettings: 21914178bb65cb2c20c655ae1fb401617ae74618
React-RCTText: 7f8dba1a311e99f4de15bbace2350e805f33f024
React-RCTVibration: e4ccf673579d0d94a96b3a0b64492db08f8324d5
React-rendererdebug: ac70f40de137ce7bdbc55eaee60c467a215d9923
React-RCTAnimation: 62269ef3c6723d51677b466247734c94a57058be
React-RCTAppDelegate: fff24d087c7cb05849a744b0c7288c71fde75180
React-RCTBlob: f684ebda742dcc0869aeaf502b760f68dbc2eecf
React-RCTFabric: 908f220527719260d5ddcfb2fe0d8f52833fe71a
React-RCTImage: 71f8c1c9a4f13121211d7e179c5a0a1764a0c1dc
React-RCTLinking: f79e8f8a68ec7155d267922386885cd60ad1208b
React-RCTNetwork: d6c7b68b10b268c80cd72ef7cd710fdf71f69d83
React-RCTSettings: 2e1d70025490790cc6ce0c766af8cb174390be43
React-RCTText: a8d1d3716ad2946bfd96932c8a2bbebb07e569bf
React-RCTVibration: 01fe1cc2c7148e74f11ed8997a553399393c8fd6
React-rendererdebug: 1d87a8cc3c81d95beea2f8caeefa0d4520971288
React-rncore: edfff7a3f7f82ca1e0ba26978c6d84c7a8970dac
React-RuntimeApple: a0c98b75571aa5f44ddc7c6e9fd55803fa4db00f
React-RuntimeCore: 4b8db1fe2f3f4a3a5ecb22e1a419824e3e2cd7ef
React-RuntimeApple: ea00d0be65f8dcf8a7f33a712dfda5098f8cd85c
React-RuntimeCore: 08ca132a26c286c6be4376a7db27994e5f97aebb
React-runtimeexecutor: 5961acc7a77b69f964e1645a5d6069e124ce6b37
React-RuntimeHermes: c5825bfae4815fdf4e9e639340c3a986a491884c
React-runtimescheduler: 56b642bf605ba5afa500d35790928fc1d51565ad
React-utils: 4476b7fcbbd95cfd002f3e778616155241d86e31
ReactCommon: ecad995f26e0d1e24061f60f4e5d74782f003f12
RNCAsyncStorage: 826b603ae9c0f88b5ac4e956801f755109fa4d5c
RNCClipboard: 2821ac938ef46f736a8de0c8814845dde2dcbdfb
RNCPicker: b18aaf30df596e9b1738e7c1f9ee55402a229dca
RNDeviceInfo: b899ce37a403a4dea52b7cb85e16e49c04a5b88e
RNFS: 4ac0f0ea233904cb798630b3c077808c06931688
RNGestureHandler: 2282cfbcf86c360d29f44ace393203afd5c6cff7
RNKeychain: ff836453cba46938e0e9e4c22e43d43fa2c90333
RNReactNativeHapticFeedback: ec56a5f81c3941206fd85625fa669ffc7b4545f9
RNReanimated: 8978449b2a511388ea71faf1e66f669134e87658
RNScreens: b32a9ff15bea7fcdbe5dff6477bc503f792b1208
RNSecureRandom: 07efbdf2cd99efe13497433668e54acd7df49fef
RNSVG: a48668fd382115bc89761ce291a81c4ca5f2fd2e
RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59
React-RuntimeHermes: c11cbc1cd10659aac0910de11f11dbc825a32785
React-runtimescheduler: c5ba36755abc3c28a8cd327325b13599af586204
React-utils: 08bb648cea0f37a0aa5df0c4f9ef50e5484ee0eb
ReactCommon: 4968ff446d467c4def1945125e59f82e3e986af3
RNCAsyncStorage: aa75595c1aefa18f868452091fa0c411a516ce11
RNCClipboard: 7c3e3b5f71d84ef61690ad377b6c50cf27864ff5
RNCPicker: 7ea4c112b43a2033ddb1e5e2ecb2e826f222b897
RNDeviceInfo: 900bd20e1fd3bfd894e7384cc4a83880c0341bd3
RNFS: 89de7d7f4c0f6bafa05343c578f61118c8282ed8
RNGestureHandler: 326e35460fb6c8c64a435d5d739bea90d7ed4e49
RNKeychain: 3a8b12f0fdd0b967811a48d9e83d582fc2e483eb
RNReactNativeHapticFeedback: a6fb5b7a981683bf58af43e3fb827d4b7ed87f83
RNReanimated: f1a8e928e0a5e8698c354c226d8d5f80629f8658
RNScreens: a2d8a2555b4653d7a19706eb172f855657ac30d7
RNSecureRandom: b64d263529492a6897e236a22a2c4249aa1b53dc
RNSVG: e77adf5edb2302f0f10dd03a09e92bb9420d914e
RNVectorIcons: 7159ba77d44e14808dcc50fbc03eb5666b1034fc
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
SwiftProtobuf: 5e8349171e7c2f88f5b9e683cb3cb79d1dc780b3
TcpSockets: 4ef55305239923b343ed0a378b1fac188b1373b0
VisionCamera: 2c4cb89c573c5d54d1191e433bd224998d3b14b7
TcpSockets: c5f030d4dbc758c4c7acb00496dc92c412b02cd2
VisionCamera: 6ad4b86176f6fea45e90e380d3d530bc5e1abff9
Yoga: ae3c32c514802d30f687a04a6a35b348506d411f

PODFILE CHECKSUM: 7f57cf007e54dd34e05bfbf127badc08dcead3e1

COCOAPODS: 1.15.2
COCOAPODS: 1.16.2
8 changes: 0 additions & 8 deletions ios/zeus.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1493,7 +1493,6 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-zeus-zeusTests/Pods-zeus-zeusTests-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly/RCT-Folly_privacy.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage/RNCAsyncStorage_resources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo/RNDeviceInfoPrivacyInfo.bundle",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
Expand All @@ -1514,11 +1513,9 @@
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/SwiftProtobuf/SwiftProtobuf.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/glog/glog_privacy.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCT-Folly_privacy.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNCAsyncStorage_resources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNDeviceInfoPrivacyInfo.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
Expand All @@ -1539,7 +1536,6 @@
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SwiftProtobuf.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/glog_privacy.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
Expand Down Expand Up @@ -1570,7 +1566,6 @@
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-zeus/Pods-zeus-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RCT-Folly/RCT-Folly_privacy.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage/RNCAsyncStorage_resources.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo/RNDeviceInfoPrivacyInfo.bundle",
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
Expand All @@ -1591,11 +1586,9 @@
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/SwiftProtobuf/SwiftProtobuf.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/glog/glog_privacy.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCT-Folly_privacy.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNCAsyncStorage_resources.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNDeviceInfoPrivacyInfo.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
Expand All @@ -1616,7 +1609,6 @@
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SwiftProtobuf.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/glog_privacy.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
Expand Down
2 changes: 2 additions & 0 deletions locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -852,6 +852,8 @@
"views.Settings.Seed.dangerousText2": "This is DANGEROUS. Your seed may be read by other applications that you open. Proceed with caution.",
"views.Settings.Seed.dangerousButton": "Dangerously copy seed to clipboard",
"views.Settings.SeedRecovery.title": "Wallet recovery",
"views.Settings.SeedQRExport.title": "Export HD node root keys",
"views.Settings.SeedQRExport.pleaseWait": "Generating yprv and zprv. This will take just a few moments.",
"views.Settings.EmbeddedNode.title": "Embedded node",
"views.Settings.EmbeddedNode.Pathfinding.title": "Pathfinding",
"views.Settings.EmbeddedNode.Peers.addPeer": "Add peer",
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
"@tradle/react-native-http": "2.0.1",
"@types/dateformat": "5.0.0",
"@types/humanize-duration": "3.27.1",
"aez": "1.0.1",
"assert": "1.5.0",
"bech32": "2.0.0",
"big-integer": "1.6.52",
Expand All @@ -67,6 +68,7 @@
"ecpair": "2.0.1",
"elliptic": "6.6.0",
"events": "1.1.1",
"fast-crc32c": "2.0.0",
"fast-sha256": "1.3.0",
"hash.js": "1.1.7",
"https-browserify": "0.0.1",
Expand Down Expand Up @@ -130,6 +132,7 @@
"react-native-vector-icons": "7.1.0",
"react-native-vision-camera": "4.3.2",
"readable-stream": "1.0.33",
"scrypt-js": "3.0.1",
"sha.js": "2.4.11",
"socket.io-client": "4.7.2",
"stream-browserify": "1.0.0",
Expand Down
16 changes: 15 additions & 1 deletion views/Settings/Seed.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { inject, observer } from 'mobx-react';
import EncryptedStorage from 'react-native-encrypted-storage';
import { StackNavigationProp } from '@react-navigation/stack';

import { Row } from '../../components/layout/Row';
import { ErrorMessage } from '../../components/SuccessErrorMessage';

import Button from '../../components/Button';
Expand All @@ -24,6 +25,7 @@ import { themeColor } from '../../utils/ThemeUtils';
import { localeString } from '../../utils/LocaleUtils';

import Skull from '../../assets/images/SVG/Skull.svg';
import QR from '../../assets/images/SVG/QR.svg';

interface SeedProps {
navigation: StackNavigationProp<any, any>;
Expand Down Expand Up @@ -109,6 +111,15 @@ export default class Seed extends React.PureComponent<SeedProps, SeedState> {
</TouchableOpacity>
);

const QRExport = () => (
<TouchableOpacity
onPress={() => navigation.navigate('SeedQRExport')}
style={{ marginLeft: 20 }}
>
<QR fill={themeColor('text')} />
</TouchableOpacity>
);

return (
<Screen>
<Header
Expand All @@ -122,7 +133,10 @@ export default class Seed extends React.PureComponent<SeedProps, SeedState> {
}}
rightComponent={
understood && seedPhrase ? (
<DangerouslyCopySeed />
<Row>
<DangerouslyCopySeed />
<QRExport />
</Row>
) : undefined
}
navigation={navigation}
Expand Down
Loading

0 comments on commit f356c9a

Please sign in to comment.