@bifold/core 2.4.6 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/lib/commonjs/components/listItems/ContactCredentialListItem.js +9 -8
  2. package/lib/commonjs/components/listItems/ContactCredentialListItem.js.map +1 -1
  3. package/lib/commonjs/components/misc/CredentialCard11Logo.js +8 -7
  4. package/lib/commonjs/components/misc/CredentialCard11Logo.js.map +1 -1
  5. package/lib/commonjs/components/misc/PINHeader.js +5 -3
  6. package/lib/commonjs/components/misc/PINHeader.js.map +1 -1
  7. package/lib/commonjs/contexts/network.js +10 -9
  8. package/lib/commonjs/contexts/network.js.map +1 -1
  9. package/lib/commonjs/contexts/reducers/store.js +3 -2
  10. package/lib/commonjs/contexts/reducers/store.js.map +1 -1
  11. package/lib/commonjs/contexts/theme.js +7 -6
  12. package/lib/commonjs/contexts/theme.js.map +1 -1
  13. package/lib/commonjs/index.js +127 -104
  14. package/lib/commonjs/index.js.map +1 -1
  15. package/lib/commonjs/modules/openid/components/CredentialRowCard.js +9 -7
  16. package/lib/commonjs/modules/openid/components/CredentialRowCard.js.map +1 -1
  17. package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js +9 -8
  18. package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
  19. package/lib/commonjs/screens/AttemptLockout.js +27 -35
  20. package/lib/commonjs/screens/AttemptLockout.js.map +1 -1
  21. package/lib/commonjs/screens/ConfigureMediator.js +22 -21
  22. package/lib/commonjs/screens/ConfigureMediator.js.map +1 -1
  23. package/lib/commonjs/screens/JSONDetails.js +16 -15
  24. package/lib/commonjs/screens/JSONDetails.js.map +1 -1
  25. package/lib/commonjs/screens/MobileVerifierLoading.js +4 -3
  26. package/lib/commonjs/screens/MobileVerifierLoading.js.map +1 -1
  27. package/lib/commonjs/screens/PINCreate.js +3 -10
  28. package/lib/commonjs/screens/PINCreate.js.map +1 -1
  29. package/lib/commonjs/screens/WhatAreContacts.js +3 -2
  30. package/lib/commonjs/screens/WhatAreContacts.js.map +1 -1
  31. package/lib/commonjs/services/logger.js +35 -27
  32. package/lib/commonjs/services/logger.js.map +1 -1
  33. package/lib/module/components/listItems/ContactCredentialListItem.js +3 -3
  34. package/lib/module/components/listItems/ContactCredentialListItem.js.map +1 -1
  35. package/lib/module/components/misc/CredentialCard11Logo.js +5 -4
  36. package/lib/module/components/misc/CredentialCard11Logo.js.map +1 -1
  37. package/lib/module/components/misc/PINHeader.js +2 -1
  38. package/lib/module/components/misc/PINHeader.js.map +1 -1
  39. package/lib/module/contexts/network.js +3 -3
  40. package/lib/module/contexts/network.js.map +1 -1
  41. package/lib/module/contexts/reducers/store.js +3 -2
  42. package/lib/module/contexts/reducers/store.js.map +1 -1
  43. package/lib/module/contexts/theme.js +2 -2
  44. package/lib/module/contexts/theme.js.map +1 -1
  45. package/lib/module/index.js +43 -45
  46. package/lib/module/index.js.map +1 -1
  47. package/lib/module/modules/openid/components/CredentialRowCard.js +2 -1
  48. package/lib/module/modules/openid/components/CredentialRowCard.js.map +1 -1
  49. package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js +5 -5
  50. package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
  51. package/lib/module/screens/AttemptLockout.js +28 -36
  52. package/lib/module/screens/AttemptLockout.js.map +1 -1
  53. package/lib/module/screens/ConfigureMediator.js +10 -10
  54. package/lib/module/screens/ConfigureMediator.js.map +1 -1
  55. package/lib/module/screens/JSONDetails.js +9 -8
  56. package/lib/module/screens/JSONDetails.js.map +1 -1
  57. package/lib/module/screens/MobileVerifierLoading.js +4 -3
  58. package/lib/module/screens/MobileVerifierLoading.js.map +1 -1
  59. package/lib/module/screens/PINCreate.js +3 -10
  60. package/lib/module/screens/PINCreate.js.map +1 -1
  61. package/lib/module/screens/WhatAreContacts.js +3 -2
  62. package/lib/module/screens/WhatAreContacts.js.map +1 -1
  63. package/lib/module/services/logger.js +37 -28
  64. package/lib/module/services/logger.js.map +1 -1
  65. package/lib/typescript/src/components/listItems/ContactCredentialListItem.d.ts +2 -1
  66. package/lib/typescript/src/components/listItems/ContactCredentialListItem.d.ts.map +1 -1
  67. package/lib/typescript/src/components/misc/CredentialCard11Logo.d.ts +1 -0
  68. package/lib/typescript/src/components/misc/CredentialCard11Logo.d.ts.map +1 -1
  69. package/lib/typescript/src/components/misc/PINHeader.d.ts +2 -1
  70. package/lib/typescript/src/components/misc/PINHeader.d.ts.map +1 -1
  71. package/lib/typescript/src/contexts/network.d.ts +3 -3
  72. package/lib/typescript/src/contexts/network.d.ts.map +1 -1
  73. package/lib/typescript/src/contexts/reducers/store.d.ts.map +1 -1
  74. package/lib/typescript/src/contexts/theme.d.ts +2 -1
  75. package/lib/typescript/src/contexts/theme.d.ts.map +1 -1
  76. package/lib/typescript/src/index.d.ts +58 -61
  77. package/lib/typescript/src/index.d.ts.map +1 -1
  78. package/lib/typescript/src/modules/openid/components/CredentialRowCard.d.ts +2 -1
  79. package/lib/typescript/src/modules/openid/components/CredentialRowCard.d.ts.map +1 -1
  80. package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts +3 -3
  81. package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts.map +1 -1
  82. package/lib/typescript/src/screens/AttemptLockout.d.ts.map +1 -1
  83. package/lib/typescript/src/screens/ConfigureMediator.d.ts +2 -1
  84. package/lib/typescript/src/screens/ConfigureMediator.d.ts.map +1 -1
  85. package/lib/typescript/src/screens/JSONDetails.d.ts +2 -1
  86. package/lib/typescript/src/screens/JSONDetails.d.ts.map +1 -1
  87. package/lib/typescript/src/screens/MobileVerifierLoading.d.ts.map +1 -1
  88. package/lib/typescript/src/screens/PINCreate.d.ts.map +1 -1
  89. package/lib/typescript/src/screens/WhatAreContacts.d.ts.map +1 -1
  90. package/lib/typescript/src/services/logger.d.ts +7 -8
  91. package/lib/typescript/src/services/logger.d.ts.map +1 -1
  92. package/package.json +5 -6
  93. package/src/App.tsx +0 -79
  94. package/src/animated-components.ts +0 -30
  95. package/src/assets/fonts/MaterialIcons.ttf +0 -0
  96. package/src/assets/icons/code.svg +0 -4
  97. package/src/assets/icons/large-arrow.svg +0 -5
  98. package/src/assets/icons/pencil.svg +0 -15
  99. package/src/assets/icons/trash.svg +0 -31
  100. package/src/assets/img/Artwork_1024x1024.png +0 -0
  101. package/src/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  102. package/src/assets/img/HistoryCardExpiredIcon.svg +0 -4
  103. package/src/assets/img/HistoryCardRevokedIcon.svg +0 -4
  104. package/src/assets/img/HistoryInformationSentIcon.svg +0 -4
  105. package/src/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  106. package/src/assets/img/IconChevronRight.svg +0 -5
  107. package/src/assets/img/activity-indicator-circle.svg +0 -90
  108. package/src/assets/img/app-lockout.svg +0 -1
  109. package/src/assets/img/biometrics.svg +0 -74
  110. package/src/assets/img/chat-loading.svg +0 -1
  111. package/src/assets/img/check-in-circle.svg +0 -18
  112. package/src/assets/img/connection-pending.svg +0 -112
  113. package/src/assets/img/contact-book.svg +0 -21
  114. package/src/assets/img/credential-card.svg +0 -18
  115. package/src/assets/img/credential-declined.svg +0 -28
  116. package/src/assets/img/credential-in-hand.svg +0 -48
  117. package/src/assets/img/credential-list.svg +0 -60
  118. package/src/assets/img/credential-pending.svg +0 -96
  119. package/src/assets/img/credential-success.svg +0 -48
  120. package/src/assets/img/delete-notification.svg +0 -1
  121. package/src/assets/img/empty-wallet.svg +0 -23
  122. package/src/assets/img/error-filled.svg +0 -12
  123. package/src/assets/img/exclamation-mark.svg +0 -17
  124. package/src/assets/img/home-center-img.svg +0 -71
  125. package/src/assets/img/icon-credential-offer-dark.svg +0 -7
  126. package/src/assets/img/icon-credential-offer-light.svg +0 -7
  127. package/src/assets/img/icon-info-recieved-dark.svg +0 -8
  128. package/src/assets/img/icon-info-recieved-light.svg +0 -8
  129. package/src/assets/img/icon-info-sent-dark.svg +0 -8
  130. package/src/assets/img/icon-info-sent-light.svg +0 -8
  131. package/src/assets/img/icon-proof-request-dark.svg +0 -11
  132. package/src/assets/img/icon-proof-request-light.svg +0 -11
  133. package/src/assets/img/information-received.svg +0 -1
  134. package/src/assets/img/logo-large.png +0 -0
  135. package/src/assets/img/logo-large@2x.png +0 -0
  136. package/src/assets/img/logo-large@3x.png +0 -0
  137. package/src/assets/img/logo.svg +0 -15
  138. package/src/assets/img/message-text-icon-outline.svg +0 -1
  139. package/src/assets/img/message-text-icon.svg +0 -1
  140. package/src/assets/img/no_information_shared.svg +0 -36
  141. package/src/assets/img/preface.svg +0 -15
  142. package/src/assets/img/proof-declined.svg +0 -66
  143. package/src/assets/img/proof-pending.svg +0 -61
  144. package/src/assets/img/proof-success.svg +0 -72
  145. package/src/assets/img/push-notifications.svg +0 -1
  146. package/src/assets/img/qrcode-scan-icon.svg +0 -1
  147. package/src/assets/img/scan-share.svg +0 -102
  148. package/src/assets/img/secure-check.svg +0 -4
  149. package/src/assets/img/secure-image.svg +0 -64
  150. package/src/assets/img/update-available.svg +0 -26
  151. package/src/assets/img/verifier-request-declined.svg +0 -34
  152. package/src/assets/img/wallet-back.svg +0 -20
  153. package/src/assets/img/wallet-front.svg +0 -32
  154. package/src/assets/img/wallet-icon-outline.svg +0 -1
  155. package/src/assets/img/wallet-icon.svg +0 -1
  156. package/src/assets/img/wallet.svg +0 -43
  157. package/src/assets/oca-bundles.json +0 -174
  158. package/src/components/animated/ButtonLoading.tsx +0 -32
  159. package/src/components/animated/ConnectionLoading.tsx +0 -53
  160. package/src/components/animated/CredentialAdded.tsx +0 -72
  161. package/src/components/animated/CredentialPending.tsx +0 -63
  162. package/src/components/animated/LoadingIndicator.tsx +0 -49
  163. package/src/components/animated/PresentationLoading.tsx +0 -52
  164. package/src/components/animated/RecordLoading.tsx +0 -75
  165. package/src/components/animated/SendingProof.tsx +0 -53
  166. package/src/components/animated/SentProof.tsx +0 -72
  167. package/src/components/buttons/Button-api.tsx +0 -46
  168. package/src/components/buttons/Button.tsx +0 -125
  169. package/src/components/buttons/HeaderHome.tsx +0 -25
  170. package/src/components/buttons/IconButton.tsx +0 -93
  171. package/src/components/buttons/InfoIcon.tsx +0 -35
  172. package/src/components/buttons/SettingsMenu.tsx +0 -26
  173. package/src/components/buttons/ToggleButton.tsx +0 -93
  174. package/src/components/buttons/index.ts +0 -4
  175. package/src/components/chat/ActionSlider.tsx +0 -104
  176. package/src/components/chat/ChatActions.tsx +0 -33
  177. package/src/components/chat/ChatBubble.tsx +0 -20
  178. package/src/components/chat/ChatEvent.tsx +0 -31
  179. package/src/components/chat/ChatMessage.tsx +0 -142
  180. package/src/components/chat/MessageInput.tsx +0 -46
  181. package/src/components/chat/index.ts +0 -4
  182. package/src/components/forms/WalletNameForm.tsx +0 -148
  183. package/src/components/index.ts +0 -4
  184. package/src/components/inputs/BiometryControl.tsx +0 -190
  185. package/src/components/inputs/BulletPoint.tsx +0 -32
  186. package/src/components/inputs/CheckBoxRow.tsx +0 -67
  187. package/src/components/inputs/InlineErrorText.tsx +0 -60
  188. package/src/components/inputs/LimitedTextInput.tsx +0 -71
  189. package/src/components/inputs/PINInput.tsx +0 -175
  190. package/src/components/inputs/SingleSelectBlock.tsx +0 -53
  191. package/src/components/listItems/ContactCredentialListItem.tsx +0 -79
  192. package/src/components/listItems/ContactListItem.tsx +0 -121
  193. package/src/components/listItems/NotificationListItem.tsx +0 -514
  194. package/src/components/misc/AvatarView.tsx +0 -33
  195. package/src/components/misc/CardWatermark.tsx +0 -52
  196. package/src/components/misc/ConnectionAlert.tsx +0 -123
  197. package/src/components/misc/ConnectionImage.tsx +0 -45
  198. package/src/components/misc/ContentGradient.tsx +0 -40
  199. package/src/components/misc/CredentialCard.tsx +0 -161
  200. package/src/components/misc/CredentialCard10.tsx +0 -329
  201. package/src/components/misc/CredentialCard11.tsx +0 -701
  202. package/src/components/misc/CredentialCard11ActionFooter.tsx +0 -55
  203. package/src/components/misc/CredentialCard11Issuer.tsx +0 -74
  204. package/src/components/misc/CredentialCard11Logo.tsx +0 -61
  205. package/src/components/misc/EmptyList.tsx +0 -27
  206. package/src/components/misc/EmptyListContacts.tsx +0 -55
  207. package/src/components/misc/ErrorBoundary.tsx +0 -200
  208. package/src/components/misc/FauxHeader.tsx +0 -75
  209. package/src/components/misc/InfoBox.tsx +0 -283
  210. package/src/components/misc/NoNewUpdates.tsx +0 -38
  211. package/src/components/misc/PINHeader.tsx +0 -25
  212. package/src/components/misc/PINValidationHelper.tsx +0 -48
  213. package/src/components/misc/Pagination.tsx +0 -114
  214. package/src/components/misc/QRRenderer.tsx +0 -53
  215. package/src/components/misc/QRScanner.tsx +0 -395
  216. package/src/components/misc/QRScannerTorch.tsx +0 -74
  217. package/src/components/misc/ScanCamera.tsx +0 -86
  218. package/src/components/misc/ScanTab.tsx +0 -45
  219. package/src/components/misc/SharedProofData.tsx +0 -98
  220. package/src/components/misc/UnorderedList.tsx +0 -28
  221. package/src/components/misc/VerifierCredentialCard.tsx +0 -378
  222. package/src/components/misc/index.ts +0 -2
  223. package/src/components/modals/AlertModal.tsx +0 -42
  224. package/src/components/modals/AppGuideModal.tsx +0 -142
  225. package/src/components/modals/CameraDisclosureModal.tsx +0 -126
  226. package/src/components/modals/CommonRemoveModal.tsx +0 -337
  227. package/src/components/modals/DeveloperModal.tsx +0 -32
  228. package/src/components/modals/DismissiblePopupModal.tsx +0 -169
  229. package/src/components/modals/ErrorModal.tsx +0 -107
  230. package/src/components/modals/ImageModal.tsx +0 -80
  231. package/src/components/modals/NetInfoModal.tsx +0 -35
  232. package/src/components/modals/PopupModal.tsx +0 -56
  233. package/src/components/modals/ProofCancelModal.tsx +0 -79
  234. package/src/components/modals/SafeAreaModal.tsx +0 -17
  235. package/src/components/record/Record.tsx +0 -100
  236. package/src/components/record/RecordBinaryField.tsx +0 -55
  237. package/src/components/record/RecordDateIntField.tsx +0 -63
  238. package/src/components/record/RecordField.tsx +0 -154
  239. package/src/components/record/RecordFooter.tsx +0 -17
  240. package/src/components/record/RecordHeader.tsx +0 -17
  241. package/src/components/record/RecordRemove.tsx +0 -66
  242. package/src/components/texts/HeaderTitle.tsx +0 -25
  243. package/src/components/texts/HighlightTextBox.tsx +0 -41
  244. package/src/components/texts/InfoTextBox.tsx +0 -129
  245. package/src/components/texts/Link.tsx +0 -41
  246. package/src/components/texts/Text.tsx +0 -21
  247. package/src/components/texts/ThemedText.tsx +0 -24
  248. package/src/components/toast/BaseToast.tsx +0 -128
  249. package/src/components/toast/ToastConfig.tsx +0 -21
  250. package/src/components/tour/AttachTourStep.tsx +0 -73
  251. package/src/components/tour/CredentialOfferTourSteps.tsx +0 -41
  252. package/src/components/tour/CredentialsTourSteps.tsx +0 -41
  253. package/src/components/tour/HomeTourSteps.tsx +0 -104
  254. package/src/components/tour/ProofRequestTourSteps.tsx +0 -41
  255. package/src/components/tour/SpotCutout.tsx +0 -65
  256. package/src/components/tour/TourBox.tsx +0 -255
  257. package/src/components/tour/TourOverlay.tsx +0 -134
  258. package/src/components/views/Banner.tsx +0 -181
  259. package/src/components/views/CredentialCardLogo.tsx +0 -77
  260. package/src/components/views/CredentialDetailPrimaryHeader.tsx +0 -107
  261. package/src/components/views/CredentialDetailSecondaryHeader.tsx +0 -60
  262. package/src/components/views/HeaderWithBanner.tsx +0 -17
  263. package/src/components/views/HomeFooterView.tsx +0 -110
  264. package/src/components/views/HomeHeaderView.tsx +0 -12
  265. package/src/components/views/KeyboardView.tsx +0 -41
  266. package/src/components/views/LoadingPlaceholder.tsx +0 -168
  267. package/src/components/views/LoadingView.tsx +0 -29
  268. package/src/components/views/ProgressBar.tsx +0 -53
  269. package/src/components/views/PushNotificationsContent.tsx +0 -51
  270. package/src/components/views/PushNotificationsDisabledContent.tsx +0 -47
  271. package/src/configs/ledgers/indy/index.ts +0 -8
  272. package/src/configs/ledgers/indy/ledgers.json +0 -51
  273. package/src/constants.ts +0 -107
  274. package/src/container-api.ts +0 -247
  275. package/src/container-impl.ts +0 -243
  276. package/src/contexts/activity.tsx +0 -145
  277. package/src/contexts/animated-components.ts +0 -9
  278. package/src/contexts/auth.tsx +0 -240
  279. package/src/contexts/index.ts +0 -3
  280. package/src/contexts/navigation.tsx +0 -19
  281. package/src/contexts/network.tsx +0 -125
  282. package/src/contexts/reducers/index.ts +0 -3
  283. package/src/contexts/reducers/store.ts +0 -754
  284. package/src/contexts/store.tsx +0 -103
  285. package/src/contexts/theme.tsx +0 -51
  286. package/src/contexts/tour/tour-context.tsx +0 -160
  287. package/src/contexts/tour/tour-provider.tsx +0 -160
  288. package/src/hooks/bundle-resolver.ts +0 -95
  289. package/src/hooks/chat-messages.tsx +0 -263
  290. package/src/hooks/connections.ts +0 -37
  291. package/src/hooks/credential-card-styles.ts +0 -144
  292. package/src/hooks/credentials.ts +0 -11
  293. package/src/hooks/deep-links.ts +0 -49
  294. package/src/hooks/developer-mode.ts +0 -25
  295. package/src/hooks/lockout.ts +0 -77
  296. package/src/hooks/notifications.ts +0 -108
  297. package/src/hooks/oob.ts +0 -17
  298. package/src/hooks/proof-request-templates.ts +0 -40
  299. package/src/hooks/proofs.ts +0 -32
  300. package/src/hooks/screen-capture.ts +0 -52
  301. package/src/hooks/useBifoldAgentSetup.ts +0 -169
  302. package/src/hooks/useOnboardingState.ts +0 -53
  303. package/src/hooks/usePINValidation.ts +0 -98
  304. package/src/index.ts +0 -239
  305. package/src/layout/ScreenLayout.tsx +0 -53
  306. package/src/localization/en/en.json +0 -951
  307. package/src/localization/en/index.ts +0 -3
  308. package/src/localization/fr/fr.json +0 -933
  309. package/src/localization/fr/index.ts +0 -3
  310. package/src/localization/index.ts +0 -66
  311. package/src/localization/pt-br/index.ts +0 -3
  312. package/src/localization/pt-br/pt-br.json +0 -911
  313. package/src/modules/history/context/historyManager.tsx +0 -247
  314. package/src/modules/history/index.ts +0 -2
  315. package/src/modules/history/navigation/HistoryStack.tsx +0 -29
  316. package/src/modules/history/services/queue.service.tsx +0 -31
  317. package/src/modules/history/types/index.ts +0 -92
  318. package/src/modules/history/ui/HistoryPage.tsx +0 -133
  319. package/src/modules/history/ui/HistorySettings.tsx +0 -183
  320. package/src/modules/history/ui/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  321. package/src/modules/history/ui/assets/img/HistoryCardExpiredIcon.svg +0 -4
  322. package/src/modules/history/ui/assets/img/HistoryCardRevokedIcon.svg +0 -4
  323. package/src/modules/history/ui/assets/img/HistoryInformationSentIcon.svg +0 -4
  324. package/src/modules/history/ui/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  325. package/src/modules/history/ui/assets/img/IconChevronRight.svg +0 -3
  326. package/src/modules/history/ui/components/BulletPoint.tsx +0 -49
  327. package/src/modules/history/ui/components/HistoryListItem.tsx +0 -251
  328. package/src/modules/history/ui/components/HistoryMenu.tsx +0 -25
  329. package/src/modules/history/ui/components/SingleSelectBlock.tsx +0 -72
  330. package/src/modules/openid/components/CredentialRowCard.tsx +0 -64
  331. package/src/modules/openid/components/OpenIDCredentialCard.tsx +0 -276
  332. package/src/modules/openid/context/OpenIDCredentialRecordProvider.tsx +0 -296
  333. package/src/modules/openid/display.tsx +0 -467
  334. package/src/modules/openid/displayProof.tsx +0 -86
  335. package/src/modules/openid/hooks/openid.tsx +0 -111
  336. package/src/modules/openid/metadata.tsx +0 -59
  337. package/src/modules/openid/offerResolve.tsx +0 -281
  338. package/src/modules/openid/resolverProof.tsx +0 -286
  339. package/src/modules/openid/screens/OpenIDCredentialDetails.tsx +0 -214
  340. package/src/modules/openid/screens/OpenIDCredentialOffer.tsx +0 -192
  341. package/src/modules/openid/screens/OpenIDProofChangeCredential.tsx +0 -133
  342. package/src/modules/openid/screens/OpenIDProofPresentation.tsx +0 -423
  343. package/src/modules/openid/types.tsx +0 -111
  344. package/src/modules/openid/utils/utils.tsx +0 -119
  345. package/src/navigators/ConnectStack.tsx +0 -68
  346. package/src/navigators/ContactStack.tsx +0 -91
  347. package/src/navigators/CredentialStack.tsx +0 -48
  348. package/src/navigators/DeliveryStack.tsx +0 -76
  349. package/src/navigators/HomeStack.tsx +0 -37
  350. package/src/navigators/MainStack.tsx +0 -146
  351. package/src/navigators/NotificationStack.tsx +0 -56
  352. package/src/navigators/OnboardingScreens.ts +0 -142
  353. package/src/navigators/OnboardingStack.tsx +0 -205
  354. package/src/navigators/ProofRequestStack.tsx +0 -113
  355. package/src/navigators/RootStack.tsx +0 -71
  356. package/src/navigators/SettingStack.tsx +0 -174
  357. package/src/navigators/TabStack.tsx +0 -304
  358. package/src/navigators/defaultLayoutOptions.tsx +0 -17
  359. package/src/navigators/defaultStackOptions.tsx +0 -102
  360. package/src/navigators/index.ts +0 -27
  361. package/src/onboarding.ts +0 -90
  362. package/src/screens/AttemptLockout.tsx +0 -153
  363. package/src/screens/AutoLock.tsx +0 -140
  364. package/src/screens/Biometry.tsx +0 -54
  365. package/src/screens/Chat.tsx +0 -141
  366. package/src/screens/ConfigureMediator.tsx +0 -160
  367. package/src/screens/Connection.tsx +0 -394
  368. package/src/screens/ContactDetails.tsx +0 -350
  369. package/src/screens/CredentialDetails.tsx +0 -473
  370. package/src/screens/CredentialOffer.tsx +0 -334
  371. package/src/screens/CredentialOfferAccept.tsx +0 -189
  372. package/src/screens/DataRetention.tsx +0 -91
  373. package/src/screens/Developer.tsx +0 -289
  374. package/src/screens/Home.tsx +0 -173
  375. package/src/screens/JSONDetails.tsx +0 -104
  376. package/src/screens/Language.tsx +0 -97
  377. package/src/screens/ListContacts.tsx +0 -112
  378. package/src/screens/ListCredentials.tsx +0 -135
  379. package/src/screens/ListProofRequests.tsx +0 -148
  380. package/src/screens/MobileVerifierLoading.tsx +0 -106
  381. package/src/screens/NameWallet.tsx +0 -9
  382. package/src/screens/Onboarding.tsx +0 -162
  383. package/src/screens/OnboardingPages.tsx +0 -160
  384. package/src/screens/PINChange.tsx +0 -249
  385. package/src/screens/PINCreate.tsx +0 -185
  386. package/src/screens/PINEnter.tsx +0 -432
  387. package/src/screens/PINExplainer.tsx +0 -85
  388. package/src/screens/PINVerify.tsx +0 -195
  389. package/src/screens/PasteUrl.tsx +0 -140
  390. package/src/screens/Preface.tsx +0 -78
  391. package/src/screens/ProofChangeCredential.tsx +0 -179
  392. package/src/screens/ProofDetails.tsx +0 -348
  393. package/src/screens/ProofRequest.tsx +0 -999
  394. package/src/screens/ProofRequestAccept.tsx +0 -133
  395. package/src/screens/ProofRequestDetails.tsx +0 -270
  396. package/src/screens/ProofRequestUsageHistory.tsx +0 -152
  397. package/src/screens/ProofRequesting.tsx +0 -245
  398. package/src/screens/PushNotifications.tsx +0 -59
  399. package/src/screens/RenameContact.tsx +0 -155
  400. package/src/screens/RenameWallet.tsx +0 -26
  401. package/src/screens/Scan.tsx +0 -145
  402. package/src/screens/ScanHelp.tsx +0 -48
  403. package/src/screens/Settings.tsx +0 -415
  404. package/src/screens/Splash.tsx +0 -80
  405. package/src/screens/Terms.tsx +0 -127
  406. package/src/screens/ToggleBiometry.tsx +0 -153
  407. package/src/screens/TogglePushNotifications.tsx +0 -118
  408. package/src/screens/Tours.tsx +0 -93
  409. package/src/screens/UpdateAvailable.tsx +0 -119
  410. package/src/screens/WhatAreContacts.tsx +0 -71
  411. package/src/services/bifoldLogger.ts +0 -3
  412. package/src/services/keychain.ts +0 -184
  413. package/src/services/logger.ts +0 -89
  414. package/src/services/storage.ts +0 -136
  415. package/src/theme-builder.ts +0 -157
  416. package/src/theme.interface.ts +0 -580
  417. package/src/theme.ts +0 -1346
  418. package/src/types/attempt-lockout-config.ts +0 -8
  419. package/src/types/attestation.ts +0 -17
  420. package/src/types/chat.ts +0 -4
  421. package/src/types/config.ts +0 -64
  422. package/src/types/contact-details.ts +0 -5
  423. package/src/types/credential-list-footer.ts +0 -3
  424. package/src/types/credential-status.ts +0 -3
  425. package/src/types/credentials.ts +0 -7
  426. package/src/types/decline.ts +0 -5
  427. package/src/types/error.ts +0 -40
  428. package/src/types/fn.ts +0 -2
  429. package/src/types/genesis.ts +0 -35
  430. package/src/types/index.ts +0 -2
  431. package/src/types/metadata.ts +0 -16
  432. package/src/types/navigators.ts +0 -239
  433. package/src/types/notification.ts +0 -24
  434. package/src/types/permissions.ts +0 -2
  435. package/src/types/proof-items.ts +0 -32
  436. package/src/types/react-i18next.d.ts +0 -10
  437. package/src/types/remove.ts +0 -8
  438. package/src/types/security.ts +0 -32
  439. package/src/types/settings.ts +0 -28
  440. package/src/types/state.ts +0 -97
  441. package/src/types/tour.ts +0 -20
  442. package/src/types/version-check.ts +0 -18
  443. package/src/utils/PINValidation.ts +0 -98
  444. package/src/utils/agent.ts +0 -128
  445. package/src/utils/anonCredsProofRequestMapper.ts +0 -205
  446. package/src/utils/contacts.ts +0 -59
  447. package/src/utils/cred-def.ts +0 -33
  448. package/src/utils/credential.ts +0 -37
  449. package/src/utils/crypto.ts +0 -12
  450. package/src/utils/fileCache.ts +0 -152
  451. package/src/utils/helpers.ts +0 -1292
  452. package/src/utils/ledger.ts +0 -212
  453. package/src/utils/luminance.ts +0 -40
  454. package/src/utils/mediatorhelpers.ts +0 -71
  455. package/src/utils/migration.ts +0 -40
  456. package/src/utils/network.tsx +0 -55
  457. package/src/utils/oca.ts +0 -173
  458. package/src/utils/parsers.tsx +0 -111
  459. package/src/utils/proofBundle.ts +0 -220
  460. package/src/utils/schema.ts +0 -28
  461. package/src/utils/testable.ts +0 -17
@@ -1,283 +0,0 @@
1
- import React, { useState } from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { StyleSheet, View, TouchableOpacity, ScrollView, useWindowDimensions } from 'react-native'
4
- import { getVersion, getBuildNumber } from 'react-native-device-info'
5
- import Icon from 'react-native-vector-icons/MaterialIcons'
6
-
7
- import { hitSlop } from '../../constants'
8
- import { useTheme } from '../../contexts/theme'
9
- import { GenericFn } from '../../types/fn'
10
- import { testIdWithKey } from '../../utils/testable'
11
- // eslint-disable-next-line import/no-named-as-default
12
- import Button, { ButtonType } from '../buttons/Button'
13
- import { TOKENS, useServices } from '../../container-api'
14
- import { ThemedText } from '../texts/ThemedText'
15
-
16
- const iconSize = 30
17
-
18
- export enum InfoBoxType {
19
- Info,
20
- Success,
21
- Warn,
22
- Error,
23
- }
24
-
25
- interface InfoBoxProps {
26
- notificationType: InfoBoxType
27
- title: string
28
- description?: string
29
- bodyContent?: Element
30
- message?: string
31
- callToActionDisabled?: boolean
32
- callToActionIcon?: JSX.Element
33
- secondaryCallToActionTitle?: string
34
- secondaryCallToActionPressed?: GenericFn
35
- secondaryCallToActionDisabled?: boolean
36
- secondaryCallToActionIcon?: JSX.Element
37
- onCallToActionPressed?: GenericFn
38
- onCallToActionLabel?: string
39
- onClosePressed?: GenericFn
40
- showVersionFooter?: boolean
41
- renderShowDetails?: boolean
42
- }
43
-
44
- const InfoBox: React.FC<InfoBoxProps> = ({
45
- notificationType,
46
- title,
47
- description,
48
- bodyContent,
49
- message,
50
- callToActionDisabled,
51
- callToActionIcon,
52
- secondaryCallToActionTitle,
53
- secondaryCallToActionPressed,
54
- secondaryCallToActionDisabled,
55
- secondaryCallToActionIcon,
56
- onCallToActionPressed,
57
- onCallToActionLabel,
58
- onClosePressed,
59
- showVersionFooter,
60
- renderShowDetails = false,
61
- }) => {
62
- const { width } = useWindowDimensions()
63
- const { t } = useTranslation()
64
- const { TextTheme, ColorPalette } = useTheme()
65
- const [showDetails, setShowDetails] = useState<boolean>(renderShowDetails)
66
- const [{ showDetailsInfo }] = useServices([TOKENS.CONFIG])
67
- const styles = StyleSheet.create({
68
- container: {
69
- backgroundColor: ColorPalette.brand.modalPrimaryBackground,
70
- borderColor: ColorPalette.notification.infoBorder,
71
- borderRadius: 5,
72
- borderWidth: 1,
73
- padding: 10,
74
- minWidth: width - 2 * 25,
75
- },
76
- headerContainer: {
77
- flexDirection: 'row',
78
- paddingHorizontal: 5,
79
- paddingTop: 5,
80
- },
81
- bodyContainer: {
82
- flexDirection: 'column',
83
- marginLeft: 10 + iconSize,
84
- paddingHorizontal: 5,
85
- paddingBottom: 5,
86
- flexGrow: 0,
87
- },
88
- headerText: {
89
- marginLeft: 7,
90
- flexShrink: 1,
91
- alignSelf: 'center',
92
- color: ColorPalette.notification.infoText,
93
- },
94
- bodyText: {
95
- flexShrink: 1,
96
- marginVertical: 16,
97
- color: ColorPalette.notification.infoText,
98
- },
99
- icon: {
100
- marginRight: 10,
101
- alignSelf: 'center',
102
- },
103
- showDetailsText: {
104
- fontWeight: TextTheme.normal.fontWeight,
105
- color: ColorPalette.brand.link,
106
- },
107
- })
108
- let iconName = 'info'
109
- let iconColor = ColorPalette.notification.infoIcon
110
-
111
- switch (notificationType) {
112
- case InfoBoxType.Info:
113
- iconName = 'info'
114
- iconColor = ColorPalette.notification.infoIcon
115
- styles.container = {
116
- ...styles.container,
117
- backgroundColor: ColorPalette.notification.info,
118
- borderColor: ColorPalette.notification.infoBorder,
119
- }
120
- styles.headerText = {
121
- ...styles.headerText,
122
- color: ColorPalette.notification.infoText,
123
- }
124
- styles.bodyText = {
125
- ...styles.bodyText,
126
- color: ColorPalette.notification.infoText,
127
- }
128
- break
129
-
130
- case InfoBoxType.Success:
131
- iconName = 'check-circle'
132
- iconColor = ColorPalette.notification.successIcon
133
- styles.container = {
134
- ...styles.container,
135
- backgroundColor: ColorPalette.notification.success,
136
- borderColor: ColorPalette.notification.successBorder,
137
- }
138
- styles.headerText = {
139
- ...styles.headerText,
140
- color: ColorPalette.notification.successText,
141
- }
142
- styles.bodyText = {
143
- ...styles.bodyText,
144
- color: ColorPalette.notification.successText,
145
- }
146
- break
147
-
148
- case InfoBoxType.Warn:
149
- iconName = 'warning'
150
- iconColor = ColorPalette.notification.warnIcon
151
- styles.container = {
152
- ...styles.container,
153
- backgroundColor: ColorPalette.notification.warn,
154
- borderColor: ColorPalette.notification.warnBorder,
155
- }
156
- styles.headerText = {
157
- ...styles.headerText,
158
- color: ColorPalette.notification.warnText,
159
- }
160
- styles.bodyText = {
161
- ...styles.bodyText,
162
- color: ColorPalette.notification.warnText,
163
- }
164
- break
165
-
166
- case InfoBoxType.Error:
167
- iconName = 'error'
168
- iconColor = ColorPalette.notification.errorIcon
169
- styles.container = {
170
- ...styles.container,
171
- backgroundColor: ColorPalette.notification.error,
172
- borderColor: ColorPalette.notification.errorBorder,
173
- }
174
- styles.headerText = {
175
- ...styles.headerText,
176
- color: ColorPalette.notification.errorText,
177
- }
178
- styles.bodyText = {
179
- ...styles.bodyText,
180
- color: ColorPalette.notification.errorText,
181
- }
182
- break
183
-
184
- default:
185
- throw new Error('InfoTextBoxType needs to be set correctly')
186
- }
187
-
188
- const onShowDetailsTouched = () => {
189
- setShowDetails(true)
190
- }
191
-
192
- return (
193
- <View style={styles.container}>
194
- <View style={styles.headerContainer}>
195
- <View style={[styles.icon, { flexDirection: 'row' }]}>
196
- <Icon accessible={false} name={iconName} size={iconSize} color={iconColor} />
197
- <ThemedText variant="bold" style={styles.headerText} testID={testIdWithKey('HeaderText')}>
198
- {title}
199
- </ThemedText>
200
- </View>
201
- {onClosePressed && (
202
- <View>
203
- <TouchableOpacity
204
- accessibilityLabel={t('Global.Dismiss')}
205
- accessibilityRole={'button'}
206
- testID={testIdWithKey(`Dismiss${notificationType}`)}
207
- onPress={onClosePressed}
208
- hitSlop={hitSlop}
209
- >
210
- <Icon name={'close'} size={iconSize} color={ColorPalette.notification.infoIcon} />
211
- </TouchableOpacity>
212
- </View>
213
- )}
214
- </View>
215
- <ScrollView style={styles.bodyContainer}>
216
- <>
217
- {!showDetails ? bodyContent : null}
218
- {(description || (message && showDetails)) && (
219
- <ThemedText style={styles.bodyText} testID={testIdWithKey('BodyText')}>
220
- {showDetails ? message : description}
221
- </ThemedText>
222
- )}
223
- {message && !showDetails && (showDetailsInfo ?? true) && (
224
- <TouchableOpacity
225
- accessibilityLabel={t('Global.ShowDetails')}
226
- accessibilityRole="button"
227
- testID={testIdWithKey('ShowDetails')}
228
- style={{ marginVertical: 14 }}
229
- onPress={onShowDetailsTouched}
230
- hitSlop={hitSlop}
231
- >
232
- <View style={{ flexDirection: 'row' }}>
233
- <ThemedText variant="title" style={styles.showDetailsText}>
234
- {t('Global.ShowDetails')}{' '}
235
- </ThemedText>
236
- <Icon name="chevron-right" size={iconSize} color={ColorPalette.brand.link} />
237
- </View>
238
- </TouchableOpacity>
239
- )}
240
- {onCallToActionPressed && (
241
- <View style={{ paddingTop: 10 }}>
242
- <Button
243
- title={onCallToActionLabel || t('Global.Okay')}
244
- accessibilityLabel={onCallToActionLabel || t('Global.Okay')}
245
- testID={onCallToActionLabel ? testIdWithKey(onCallToActionLabel) : testIdWithKey('Okay')}
246
- buttonType={ButtonType.Primary}
247
- onPress={onCallToActionPressed}
248
- disabled={callToActionDisabled}
249
- >
250
- {callToActionIcon}
251
- </Button>
252
- </View>
253
- )}
254
- {secondaryCallToActionTitle && secondaryCallToActionPressed && (
255
- <View style={{ paddingTop: 10 }}>
256
- <Button
257
- title={secondaryCallToActionTitle}
258
- accessibilityLabel={secondaryCallToActionTitle}
259
- testID={testIdWithKey(secondaryCallToActionTitle)}
260
- buttonType={ButtonType.Secondary}
261
- onPress={secondaryCallToActionPressed}
262
- disabled={secondaryCallToActionDisabled}
263
- >
264
- {secondaryCallToActionIcon}
265
- </Button>
266
- </View>
267
- )}
268
- {showVersionFooter ? (
269
- <ThemedText
270
- variant="caption"
271
- style={{ flex: 1, marginTop: 8, textAlign: 'center' }}
272
- testID={testIdWithKey('VersionNumber')}
273
- >
274
- {`${t('Settings.Version')} ${getVersion()} (${getBuildNumber()})`}
275
- </ThemedText>
276
- ) : null}
277
- </>
278
- </ScrollView>
279
- </View>
280
- )
281
- }
282
-
283
- export default InfoBox
@@ -1,38 +0,0 @@
1
- import React from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { StyleSheet, View } from 'react-native'
4
-
5
- import { useTheme } from '../../contexts/theme'
6
- import { testIdWithKey } from '../../utils/testable'
7
- import InfoTextBox from '../texts/InfoTextBox'
8
- import { ThemedText } from '../texts/ThemedText'
9
-
10
- const NoNewUpdates: React.FC = () => {
11
- const { t } = useTranslation()
12
- const { HomeTheme, ColorPalette } = useTheme()
13
- const styles = StyleSheet.create({
14
- noNewUpdatesContainer: {
15
- paddingHorizontal: 20,
16
- paddingVertical: 20,
17
- backgroundColor: ColorPalette.brand.secondaryBackground,
18
- },
19
- noNewUpdatesText: {
20
- ...HomeTheme.noNewUpdatesText,
21
- alignSelf: 'center',
22
- flex: 1,
23
- flexWrap: 'wrap',
24
- },
25
- })
26
-
27
- return (
28
- <View style={styles.noNewUpdatesContainer}>
29
- <InfoTextBox>
30
- <ThemedText style={styles.noNewUpdatesText} testID={testIdWithKey('NoNewUpdates')}>
31
- {t('Home.NoNewUpdates')}
32
- </ThemedText>
33
- </InfoTextBox>
34
- </View>
35
- )
36
- }
37
-
38
- export default NoNewUpdates
@@ -1,25 +0,0 @@
1
- import { useTranslation } from 'react-i18next'
2
- import { useTheme } from '../../contexts/theme'
3
- import { View } from 'react-native'
4
- import { ThemedText } from '../texts/ThemedText'
5
-
6
- export interface PINHeaderProps {
7
- updatePin?: boolean
8
- }
9
-
10
- const PINHeader = ({ updatePin }: PINHeaderProps) => {
11
- const { TextTheme } = useTheme()
12
- const { t } = useTranslation()
13
- return (
14
- <View>
15
- <ThemedText style={{ marginBottom: 16 }}>
16
- <ThemedText style={{ fontWeight: TextTheme.bold.fontWeight }}>
17
- {updatePin ? t('PINChange.RememberChangePIN') : t('PINCreate.RememberPIN')}
18
- </ThemedText>{' '}
19
- {t('PINCreate.PINDisclaimer')}
20
- </ThemedText>
21
- </View>
22
- )
23
- }
24
-
25
- export default PINHeader
@@ -1,48 +0,0 @@
1
- import React from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { View } from 'react-native'
4
- import Icon from 'react-native-vector-icons/MaterialIcons'
5
-
6
- import { useTheme } from '../../contexts/theme'
7
- import { PINValidationsType } from '../../utils/PINValidation'
8
- import { ThemedText } from '../texts/ThemedText'
9
-
10
- interface PINValidationHelperProps {
11
- validations: PINValidationsType[]
12
- }
13
-
14
- const iconSize = 24
15
-
16
- const PINValidationHelper: React.FC<PINValidationHelperProps> = ({ validations }) => {
17
- const { t } = useTranslation()
18
- const { ColorPalette } = useTheme()
19
-
20
- return (
21
- <View style={{ marginBottom: 16 }}>
22
- {validations.map((validation, index) => (
23
- <View style={{ flexDirection: 'row' }} key={index}>
24
- {validation.isInvalid ? (
25
- <Icon
26
- accessibilityLabel={t('PINCreate.Helper.ClearIcon')}
27
- name="clear"
28
- size={iconSize}
29
- color={ColorPalette.notification.errorIcon}
30
- />
31
- ) : (
32
- <Icon
33
- accessibilityLabel={t('PINCreate.Helper.CheckIcon')}
34
- name="check"
35
- size={iconSize}
36
- color={ColorPalette.notification.successIcon}
37
- />
38
- )}
39
- <ThemedText style={{ paddingLeft: 4 }}>
40
- {t(`PINCreate.Helper.${validation.errorName}`, validation?.errorTextAddition)}
41
- </ThemedText>
42
- </View>
43
- ))}
44
- </View>
45
- )
46
- }
47
-
48
- export default PINValidationHelper
@@ -1,114 +0,0 @@
1
- import React from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { Animated, TouchableOpacity, View } from 'react-native'
4
- import { ScalingDot } from 'react-native-animated-pagination-dots'
5
-
6
- import { hitSlop } from '../../constants'
7
- import { testIdWithKey } from '../../utils/testable'
8
- import { ThemedText } from '../texts/ThemedText'
9
-
10
- interface IPaginationStyleSheet {
11
- pagerContainer: Record<string, any>
12
- pagerDot: Record<string, any>
13
- pagerDotActive: Record<string, any>
14
- pagerDotInactive: Record<string, any>
15
- pagerPosition: Record<string, any>
16
- pagerNavigationButton: Record<string, any>
17
- }
18
-
19
- interface IPaginationProps {
20
- pages: Array<Element>
21
- activeIndex: number
22
- scrollX: Animated.Value
23
- next: () => void
24
- nextButtonText?: string
25
- previous: () => void
26
- previousButtonText?: string
27
- style: IPaginationStyleSheet
28
- }
29
-
30
- export const Pagination: React.FC<IPaginationProps> = ({
31
- pages,
32
- activeIndex,
33
- scrollX,
34
- style,
35
- next,
36
- nextButtonText,
37
- previous,
38
- previousButtonText,
39
- }) => {
40
- const { t } = useTranslation()
41
-
42
- const shouldHideBack = (): boolean => {
43
- if (activeIndex === 0) {
44
- return true
45
- }
46
-
47
- return false
48
- }
49
-
50
- const shouldHideNext = (): boolean => {
51
- if (activeIndex === pages.length - 1) {
52
- return true
53
- }
54
-
55
- return false
56
- }
57
-
58
- // FIXME: Issue #204. Better to `disable` the `TouchableOpacity`
59
- // controls rather than changing the color to transparent.
60
-
61
- return (
62
- <View style={style.pagerContainer}>
63
- <TouchableOpacity
64
- accessible={true}
65
- accessibilityLabel={t('Global.Back')}
66
- accessibilityRole={'button'}
67
- testID={testIdWithKey('Back')}
68
- onPress={previous}
69
- accessibilityElementsHidden={shouldHideBack()}
70
- importantForAccessibility={shouldHideBack() ? 'no-hide-descendants' : 'auto'}
71
- hitSlop={hitSlop}
72
- >
73
- <ThemedText
74
- style={[
75
- style.pagerNavigationButton,
76
- { paddingRight: 20, color: shouldHideBack() ? 'transparent' : style.pagerNavigationButton.color },
77
- ]}
78
- >
79
- {previousButtonText}
80
- </ThemedText>
81
- </TouchableOpacity>
82
- <ScalingDot
83
- data={pages}
84
- scrollX={scrollX}
85
- inActiveDotColor={style.pagerDotInactive.color}
86
- inActiveDotOpacity={1}
87
- activeDotColor={style.pagerDotActive.color}
88
- activeDotScale={1}
89
- dotStyle={style.pagerDot}
90
- containerStyle={style.pagerPosition}
91
- />
92
-
93
- <TouchableOpacity
94
- accessible={true}
95
- accessibilityLabel={t('Global.Next')}
96
- accessibilityRole={'button'}
97
- testID={testIdWithKey('Next')}
98
- onPress={next}
99
- accessibilityElementsHidden={shouldHideNext()}
100
- importantForAccessibility={shouldHideNext() ? 'no-hide-descendants' : 'auto'}
101
- hitSlop={hitSlop}
102
- >
103
- <ThemedText
104
- style={[
105
- style.pagerNavigationButton,
106
- { paddingLeft: 20, color: shouldHideNext() ? 'transparent' : style.pagerNavigationButton.color },
107
- ]}
108
- >
109
- {nextButtonText}
110
- </ThemedText>
111
- </TouchableOpacity>
112
- </View>
113
- )
114
- }
@@ -1,53 +0,0 @@
1
- import React, { useCallback, useState } from 'react'
2
- import { useTranslation } from 'react-i18next'
3
- import { StyleSheet, View, ViewStyle, useWindowDimensions } from 'react-native'
4
- import QRCode from 'react-native-qrcode-svg'
5
-
6
- import { useTheme } from '../../contexts/theme'
7
- import { testIdWithKey } from '../../utils/testable'
8
- import { ThemedText } from '../texts/ThemedText'
9
-
10
- interface QRRendererProps {
11
- value: string
12
- size?: number
13
- style?: ViewStyle
14
- onError?: () => void
15
- }
16
-
17
- const QRRenderer: React.FC<QRRendererProps> = ({ value, onError, size }) => {
18
- const { width } = useWindowDimensions()
19
- const { t } = useTranslation()
20
- const { ColorPalette } = useTheme()
21
-
22
- const styles = StyleSheet.create({
23
- container: {
24
- flexGrow: 1,
25
- marginVertical: 20,
26
- backgroundColor: 'white',
27
- },
28
- errorMessage: {
29
- color: ColorPalette.semantic.error,
30
- textAlign: 'center',
31
- },
32
- })
33
-
34
- const [isInvalidQR, setIsInvalidQR] = useState(false)
35
-
36
- const handleQRCodeGenerationError = useCallback(() => {
37
- setIsInvalidQR(true)
38
- if (onError) {
39
- onError()
40
- }
41
- }, [onError])
42
-
43
- const qrSize = size ?? width - 80
44
-
45
- return (
46
- <View style={styles.container} testID={testIdWithKey('QRRenderer')}>
47
- {<QRCode ecl="L" value={value} size={qrSize} onError={handleQRCodeGenerationError} />}
48
- {isInvalidQR && <ThemedText style={styles.errorMessage}>{t('QRRender.GenerationError')}</ThemedText>}
49
- </View>
50
- )
51
- }
52
-
53
- export default QRRenderer