@bifold/core 2.4.6 → 2.5.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.
- package/lib/commonjs/contexts/reducers/store.js +3 -2
- package/lib/commonjs/contexts/reducers/store.js.map +1 -1
- package/lib/commonjs/index.js +119 -104
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/screens/AttemptLockout.js +27 -35
- package/lib/commonjs/screens/AttemptLockout.js.map +1 -1
- package/lib/commonjs/screens/MobileVerifierLoading.js +4 -3
- package/lib/commonjs/screens/MobileVerifierLoading.js.map +1 -1
- package/lib/commonjs/screens/PINCreate.js +3 -10
- package/lib/commonjs/screens/PINCreate.js.map +1 -1
- package/lib/commonjs/screens/WhatAreContacts.js +3 -2
- package/lib/commonjs/screens/WhatAreContacts.js.map +1 -1
- package/lib/module/contexts/reducers/store.js +3 -2
- package/lib/module/contexts/reducers/store.js.map +1 -1
- package/lib/module/index.js +42 -45
- package/lib/module/index.js.map +1 -1
- package/lib/module/screens/AttemptLockout.js +28 -36
- package/lib/module/screens/AttemptLockout.js.map +1 -1
- package/lib/module/screens/MobileVerifierLoading.js +4 -3
- package/lib/module/screens/MobileVerifierLoading.js.map +1 -1
- package/lib/module/screens/PINCreate.js +3 -10
- package/lib/module/screens/PINCreate.js.map +1 -1
- package/lib/module/screens/WhatAreContacts.js +3 -2
- package/lib/module/screens/WhatAreContacts.js.map +1 -1
- package/lib/typescript/src/contexts/reducers/store.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +57 -61
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/screens/AttemptLockout.d.ts.map +1 -1
- package/lib/typescript/src/screens/MobileVerifierLoading.d.ts.map +1 -1
- package/lib/typescript/src/screens/PINCreate.d.ts.map +1 -1
- package/lib/typescript/src/screens/WhatAreContacts.d.ts.map +1 -1
- package/package.json +3 -4
- package/src/App.tsx +0 -79
- package/src/animated-components.ts +0 -30
- package/src/assets/fonts/MaterialIcons.ttf +0 -0
- package/src/assets/icons/code.svg +0 -4
- package/src/assets/icons/large-arrow.svg +0 -5
- package/src/assets/icons/pencil.svg +0 -15
- package/src/assets/icons/trash.svg +0 -31
- package/src/assets/img/Artwork_1024x1024.png +0 -0
- package/src/assets/img/HistoryCardAcceptedIcon.svg +0 -4
- package/src/assets/img/HistoryCardExpiredIcon.svg +0 -4
- package/src/assets/img/HistoryCardRevokedIcon.svg +0 -4
- package/src/assets/img/HistoryInformationSentIcon.svg +0 -4
- package/src/assets/img/HistoryPinUpdatedIcon.svg +0 -4
- package/src/assets/img/IconChevronRight.svg +0 -5
- package/src/assets/img/activity-indicator-circle.svg +0 -90
- package/src/assets/img/app-lockout.svg +0 -1
- package/src/assets/img/biometrics.svg +0 -74
- package/src/assets/img/chat-loading.svg +0 -1
- package/src/assets/img/check-in-circle.svg +0 -18
- package/src/assets/img/connection-pending.svg +0 -112
- package/src/assets/img/contact-book.svg +0 -21
- package/src/assets/img/credential-card.svg +0 -18
- package/src/assets/img/credential-declined.svg +0 -28
- package/src/assets/img/credential-in-hand.svg +0 -48
- package/src/assets/img/credential-list.svg +0 -60
- package/src/assets/img/credential-pending.svg +0 -96
- package/src/assets/img/credential-success.svg +0 -48
- package/src/assets/img/delete-notification.svg +0 -1
- package/src/assets/img/empty-wallet.svg +0 -23
- package/src/assets/img/error-filled.svg +0 -12
- package/src/assets/img/exclamation-mark.svg +0 -17
- package/src/assets/img/home-center-img.svg +0 -71
- package/src/assets/img/icon-credential-offer-dark.svg +0 -7
- package/src/assets/img/icon-credential-offer-light.svg +0 -7
- package/src/assets/img/icon-info-recieved-dark.svg +0 -8
- package/src/assets/img/icon-info-recieved-light.svg +0 -8
- package/src/assets/img/icon-info-sent-dark.svg +0 -8
- package/src/assets/img/icon-info-sent-light.svg +0 -8
- package/src/assets/img/icon-proof-request-dark.svg +0 -11
- package/src/assets/img/icon-proof-request-light.svg +0 -11
- package/src/assets/img/information-received.svg +0 -1
- package/src/assets/img/logo-large.png +0 -0
- package/src/assets/img/logo-large@2x.png +0 -0
- package/src/assets/img/logo-large@3x.png +0 -0
- package/src/assets/img/logo.svg +0 -15
- package/src/assets/img/message-text-icon-outline.svg +0 -1
- package/src/assets/img/message-text-icon.svg +0 -1
- package/src/assets/img/no_information_shared.svg +0 -36
- package/src/assets/img/preface.svg +0 -15
- package/src/assets/img/proof-declined.svg +0 -66
- package/src/assets/img/proof-pending.svg +0 -61
- package/src/assets/img/proof-success.svg +0 -72
- package/src/assets/img/push-notifications.svg +0 -1
- package/src/assets/img/qrcode-scan-icon.svg +0 -1
- package/src/assets/img/scan-share.svg +0 -102
- package/src/assets/img/secure-check.svg +0 -4
- package/src/assets/img/secure-image.svg +0 -64
- package/src/assets/img/update-available.svg +0 -26
- package/src/assets/img/verifier-request-declined.svg +0 -34
- package/src/assets/img/wallet-back.svg +0 -20
- package/src/assets/img/wallet-front.svg +0 -32
- package/src/assets/img/wallet-icon-outline.svg +0 -1
- package/src/assets/img/wallet-icon.svg +0 -1
- package/src/assets/img/wallet.svg +0 -43
- package/src/assets/oca-bundles.json +0 -174
- package/src/components/animated/ButtonLoading.tsx +0 -32
- package/src/components/animated/ConnectionLoading.tsx +0 -53
- package/src/components/animated/CredentialAdded.tsx +0 -72
- package/src/components/animated/CredentialPending.tsx +0 -63
- package/src/components/animated/LoadingIndicator.tsx +0 -49
- package/src/components/animated/PresentationLoading.tsx +0 -52
- package/src/components/animated/RecordLoading.tsx +0 -75
- package/src/components/animated/SendingProof.tsx +0 -53
- package/src/components/animated/SentProof.tsx +0 -72
- package/src/components/buttons/Button-api.tsx +0 -46
- package/src/components/buttons/Button.tsx +0 -125
- package/src/components/buttons/HeaderHome.tsx +0 -25
- package/src/components/buttons/IconButton.tsx +0 -93
- package/src/components/buttons/InfoIcon.tsx +0 -35
- package/src/components/buttons/SettingsMenu.tsx +0 -26
- package/src/components/buttons/ToggleButton.tsx +0 -93
- package/src/components/buttons/index.ts +0 -4
- package/src/components/chat/ActionSlider.tsx +0 -104
- package/src/components/chat/ChatActions.tsx +0 -33
- package/src/components/chat/ChatBubble.tsx +0 -20
- package/src/components/chat/ChatEvent.tsx +0 -31
- package/src/components/chat/ChatMessage.tsx +0 -142
- package/src/components/chat/MessageInput.tsx +0 -46
- package/src/components/chat/index.ts +0 -4
- package/src/components/forms/WalletNameForm.tsx +0 -148
- package/src/components/index.ts +0 -4
- package/src/components/inputs/BiometryControl.tsx +0 -190
- package/src/components/inputs/BulletPoint.tsx +0 -32
- package/src/components/inputs/CheckBoxRow.tsx +0 -67
- package/src/components/inputs/InlineErrorText.tsx +0 -60
- package/src/components/inputs/LimitedTextInput.tsx +0 -71
- package/src/components/inputs/PINInput.tsx +0 -175
- package/src/components/inputs/SingleSelectBlock.tsx +0 -53
- package/src/components/listItems/ContactCredentialListItem.tsx +0 -79
- package/src/components/listItems/ContactListItem.tsx +0 -121
- package/src/components/listItems/NotificationListItem.tsx +0 -514
- package/src/components/misc/AvatarView.tsx +0 -33
- package/src/components/misc/CardWatermark.tsx +0 -52
- package/src/components/misc/ConnectionAlert.tsx +0 -123
- package/src/components/misc/ConnectionImage.tsx +0 -45
- package/src/components/misc/ContentGradient.tsx +0 -40
- package/src/components/misc/CredentialCard.tsx +0 -161
- package/src/components/misc/CredentialCard10.tsx +0 -329
- package/src/components/misc/CredentialCard11.tsx +0 -701
- package/src/components/misc/CredentialCard11ActionFooter.tsx +0 -55
- package/src/components/misc/CredentialCard11Issuer.tsx +0 -74
- package/src/components/misc/CredentialCard11Logo.tsx +0 -61
- package/src/components/misc/EmptyList.tsx +0 -27
- package/src/components/misc/EmptyListContacts.tsx +0 -55
- package/src/components/misc/ErrorBoundary.tsx +0 -200
- package/src/components/misc/FauxHeader.tsx +0 -75
- package/src/components/misc/InfoBox.tsx +0 -283
- package/src/components/misc/NoNewUpdates.tsx +0 -38
- package/src/components/misc/PINHeader.tsx +0 -25
- package/src/components/misc/PINValidationHelper.tsx +0 -48
- package/src/components/misc/Pagination.tsx +0 -114
- package/src/components/misc/QRRenderer.tsx +0 -53
- package/src/components/misc/QRScanner.tsx +0 -395
- package/src/components/misc/QRScannerTorch.tsx +0 -74
- package/src/components/misc/ScanCamera.tsx +0 -86
- package/src/components/misc/ScanTab.tsx +0 -45
- package/src/components/misc/SharedProofData.tsx +0 -98
- package/src/components/misc/UnorderedList.tsx +0 -28
- package/src/components/misc/VerifierCredentialCard.tsx +0 -378
- package/src/components/misc/index.ts +0 -2
- package/src/components/modals/AlertModal.tsx +0 -42
- package/src/components/modals/AppGuideModal.tsx +0 -142
- package/src/components/modals/CameraDisclosureModal.tsx +0 -126
- package/src/components/modals/CommonRemoveModal.tsx +0 -337
- package/src/components/modals/DeveloperModal.tsx +0 -32
- package/src/components/modals/DismissiblePopupModal.tsx +0 -169
- package/src/components/modals/ErrorModal.tsx +0 -107
- package/src/components/modals/ImageModal.tsx +0 -80
- package/src/components/modals/NetInfoModal.tsx +0 -35
- package/src/components/modals/PopupModal.tsx +0 -56
- package/src/components/modals/ProofCancelModal.tsx +0 -79
- package/src/components/modals/SafeAreaModal.tsx +0 -17
- package/src/components/record/Record.tsx +0 -100
- package/src/components/record/RecordBinaryField.tsx +0 -55
- package/src/components/record/RecordDateIntField.tsx +0 -63
- package/src/components/record/RecordField.tsx +0 -154
- package/src/components/record/RecordFooter.tsx +0 -17
- package/src/components/record/RecordHeader.tsx +0 -17
- package/src/components/record/RecordRemove.tsx +0 -66
- package/src/components/texts/HeaderTitle.tsx +0 -25
- package/src/components/texts/HighlightTextBox.tsx +0 -41
- package/src/components/texts/InfoTextBox.tsx +0 -129
- package/src/components/texts/Link.tsx +0 -41
- package/src/components/texts/Text.tsx +0 -21
- package/src/components/texts/ThemedText.tsx +0 -24
- package/src/components/toast/BaseToast.tsx +0 -128
- package/src/components/toast/ToastConfig.tsx +0 -21
- package/src/components/tour/AttachTourStep.tsx +0 -73
- package/src/components/tour/CredentialOfferTourSteps.tsx +0 -41
- package/src/components/tour/CredentialsTourSteps.tsx +0 -41
- package/src/components/tour/HomeTourSteps.tsx +0 -104
- package/src/components/tour/ProofRequestTourSteps.tsx +0 -41
- package/src/components/tour/SpotCutout.tsx +0 -65
- package/src/components/tour/TourBox.tsx +0 -255
- package/src/components/tour/TourOverlay.tsx +0 -134
- package/src/components/views/Banner.tsx +0 -181
- package/src/components/views/CredentialCardLogo.tsx +0 -77
- package/src/components/views/CredentialDetailPrimaryHeader.tsx +0 -107
- package/src/components/views/CredentialDetailSecondaryHeader.tsx +0 -60
- package/src/components/views/HeaderWithBanner.tsx +0 -17
- package/src/components/views/HomeFooterView.tsx +0 -110
- package/src/components/views/HomeHeaderView.tsx +0 -12
- package/src/components/views/KeyboardView.tsx +0 -41
- package/src/components/views/LoadingPlaceholder.tsx +0 -168
- package/src/components/views/LoadingView.tsx +0 -29
- package/src/components/views/ProgressBar.tsx +0 -53
- package/src/components/views/PushNotificationsContent.tsx +0 -51
- package/src/components/views/PushNotificationsDisabledContent.tsx +0 -47
- package/src/configs/ledgers/indy/index.ts +0 -8
- package/src/configs/ledgers/indy/ledgers.json +0 -51
- package/src/constants.ts +0 -107
- package/src/container-api.ts +0 -247
- package/src/container-impl.ts +0 -243
- package/src/contexts/activity.tsx +0 -145
- package/src/contexts/animated-components.ts +0 -9
- package/src/contexts/auth.tsx +0 -240
- package/src/contexts/index.ts +0 -3
- package/src/contexts/navigation.tsx +0 -19
- package/src/contexts/network.tsx +0 -125
- package/src/contexts/reducers/index.ts +0 -3
- package/src/contexts/reducers/store.ts +0 -754
- package/src/contexts/store.tsx +0 -103
- package/src/contexts/theme.tsx +0 -51
- package/src/contexts/tour/tour-context.tsx +0 -160
- package/src/contexts/tour/tour-provider.tsx +0 -160
- package/src/hooks/bundle-resolver.ts +0 -95
- package/src/hooks/chat-messages.tsx +0 -263
- package/src/hooks/connections.ts +0 -37
- package/src/hooks/credential-card-styles.ts +0 -144
- package/src/hooks/credentials.ts +0 -11
- package/src/hooks/deep-links.ts +0 -49
- package/src/hooks/developer-mode.ts +0 -25
- package/src/hooks/lockout.ts +0 -77
- package/src/hooks/notifications.ts +0 -108
- package/src/hooks/oob.ts +0 -17
- package/src/hooks/proof-request-templates.ts +0 -40
- package/src/hooks/proofs.ts +0 -32
- package/src/hooks/screen-capture.ts +0 -52
- package/src/hooks/useBifoldAgentSetup.ts +0 -169
- package/src/hooks/useOnboardingState.ts +0 -53
- package/src/hooks/usePINValidation.ts +0 -98
- package/src/index.ts +0 -239
- package/src/layout/ScreenLayout.tsx +0 -53
- package/src/localization/en/en.json +0 -951
- package/src/localization/en/index.ts +0 -3
- package/src/localization/fr/fr.json +0 -933
- package/src/localization/fr/index.ts +0 -3
- package/src/localization/index.ts +0 -66
- package/src/localization/pt-br/index.ts +0 -3
- package/src/localization/pt-br/pt-br.json +0 -911
- package/src/modules/history/context/historyManager.tsx +0 -247
- package/src/modules/history/index.ts +0 -2
- package/src/modules/history/navigation/HistoryStack.tsx +0 -29
- package/src/modules/history/services/queue.service.tsx +0 -31
- package/src/modules/history/types/index.ts +0 -92
- package/src/modules/history/ui/HistoryPage.tsx +0 -133
- package/src/modules/history/ui/HistorySettings.tsx +0 -183
- package/src/modules/history/ui/assets/img/HistoryCardAcceptedIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/HistoryCardExpiredIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/HistoryCardRevokedIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/HistoryInformationSentIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/HistoryPinUpdatedIcon.svg +0 -4
- package/src/modules/history/ui/assets/img/IconChevronRight.svg +0 -3
- package/src/modules/history/ui/components/BulletPoint.tsx +0 -49
- package/src/modules/history/ui/components/HistoryListItem.tsx +0 -251
- package/src/modules/history/ui/components/HistoryMenu.tsx +0 -25
- package/src/modules/history/ui/components/SingleSelectBlock.tsx +0 -72
- package/src/modules/openid/components/CredentialRowCard.tsx +0 -64
- package/src/modules/openid/components/OpenIDCredentialCard.tsx +0 -276
- package/src/modules/openid/context/OpenIDCredentialRecordProvider.tsx +0 -296
- package/src/modules/openid/display.tsx +0 -467
- package/src/modules/openid/displayProof.tsx +0 -86
- package/src/modules/openid/hooks/openid.tsx +0 -111
- package/src/modules/openid/metadata.tsx +0 -59
- package/src/modules/openid/offerResolve.tsx +0 -281
- package/src/modules/openid/resolverProof.tsx +0 -286
- package/src/modules/openid/screens/OpenIDCredentialDetails.tsx +0 -214
- package/src/modules/openid/screens/OpenIDCredentialOffer.tsx +0 -192
- package/src/modules/openid/screens/OpenIDProofChangeCredential.tsx +0 -133
- package/src/modules/openid/screens/OpenIDProofPresentation.tsx +0 -423
- package/src/modules/openid/types.tsx +0 -111
- package/src/modules/openid/utils/utils.tsx +0 -119
- package/src/navigators/ConnectStack.tsx +0 -68
- package/src/navigators/ContactStack.tsx +0 -91
- package/src/navigators/CredentialStack.tsx +0 -48
- package/src/navigators/DeliveryStack.tsx +0 -76
- package/src/navigators/HomeStack.tsx +0 -37
- package/src/navigators/MainStack.tsx +0 -146
- package/src/navigators/NotificationStack.tsx +0 -56
- package/src/navigators/OnboardingScreens.ts +0 -142
- package/src/navigators/OnboardingStack.tsx +0 -205
- package/src/navigators/ProofRequestStack.tsx +0 -113
- package/src/navigators/RootStack.tsx +0 -71
- package/src/navigators/SettingStack.tsx +0 -174
- package/src/navigators/TabStack.tsx +0 -304
- package/src/navigators/defaultLayoutOptions.tsx +0 -17
- package/src/navigators/defaultStackOptions.tsx +0 -102
- package/src/navigators/index.ts +0 -27
- package/src/onboarding.ts +0 -90
- package/src/screens/AttemptLockout.tsx +0 -153
- package/src/screens/AutoLock.tsx +0 -140
- package/src/screens/Biometry.tsx +0 -54
- package/src/screens/Chat.tsx +0 -141
- package/src/screens/ConfigureMediator.tsx +0 -160
- package/src/screens/Connection.tsx +0 -394
- package/src/screens/ContactDetails.tsx +0 -350
- package/src/screens/CredentialDetails.tsx +0 -473
- package/src/screens/CredentialOffer.tsx +0 -334
- package/src/screens/CredentialOfferAccept.tsx +0 -189
- package/src/screens/DataRetention.tsx +0 -91
- package/src/screens/Developer.tsx +0 -289
- package/src/screens/Home.tsx +0 -173
- package/src/screens/JSONDetails.tsx +0 -104
- package/src/screens/Language.tsx +0 -97
- package/src/screens/ListContacts.tsx +0 -112
- package/src/screens/ListCredentials.tsx +0 -135
- package/src/screens/ListProofRequests.tsx +0 -148
- package/src/screens/MobileVerifierLoading.tsx +0 -106
- package/src/screens/NameWallet.tsx +0 -9
- package/src/screens/Onboarding.tsx +0 -162
- package/src/screens/OnboardingPages.tsx +0 -160
- package/src/screens/PINChange.tsx +0 -249
- package/src/screens/PINCreate.tsx +0 -185
- package/src/screens/PINEnter.tsx +0 -432
- package/src/screens/PINExplainer.tsx +0 -85
- package/src/screens/PINVerify.tsx +0 -195
- package/src/screens/PasteUrl.tsx +0 -140
- package/src/screens/Preface.tsx +0 -78
- package/src/screens/ProofChangeCredential.tsx +0 -179
- package/src/screens/ProofDetails.tsx +0 -348
- package/src/screens/ProofRequest.tsx +0 -999
- package/src/screens/ProofRequestAccept.tsx +0 -133
- package/src/screens/ProofRequestDetails.tsx +0 -270
- package/src/screens/ProofRequestUsageHistory.tsx +0 -152
- package/src/screens/ProofRequesting.tsx +0 -245
- package/src/screens/PushNotifications.tsx +0 -59
- package/src/screens/RenameContact.tsx +0 -155
- package/src/screens/RenameWallet.tsx +0 -26
- package/src/screens/Scan.tsx +0 -145
- package/src/screens/ScanHelp.tsx +0 -48
- package/src/screens/Settings.tsx +0 -415
- package/src/screens/Splash.tsx +0 -80
- package/src/screens/Terms.tsx +0 -127
- package/src/screens/ToggleBiometry.tsx +0 -153
- package/src/screens/TogglePushNotifications.tsx +0 -118
- package/src/screens/Tours.tsx +0 -93
- package/src/screens/UpdateAvailable.tsx +0 -119
- package/src/screens/WhatAreContacts.tsx +0 -71
- package/src/services/bifoldLogger.ts +0 -3
- package/src/services/keychain.ts +0 -184
- package/src/services/logger.ts +0 -89
- package/src/services/storage.ts +0 -136
- package/src/theme-builder.ts +0 -157
- package/src/theme.interface.ts +0 -580
- package/src/theme.ts +0 -1346
- package/src/types/attempt-lockout-config.ts +0 -8
- package/src/types/attestation.ts +0 -17
- package/src/types/chat.ts +0 -4
- package/src/types/config.ts +0 -64
- package/src/types/contact-details.ts +0 -5
- package/src/types/credential-list-footer.ts +0 -3
- package/src/types/credential-status.ts +0 -3
- package/src/types/credentials.ts +0 -7
- package/src/types/decline.ts +0 -5
- package/src/types/error.ts +0 -40
- package/src/types/fn.ts +0 -2
- package/src/types/genesis.ts +0 -35
- package/src/types/index.ts +0 -2
- package/src/types/metadata.ts +0 -16
- package/src/types/navigators.ts +0 -239
- package/src/types/notification.ts +0 -24
- package/src/types/permissions.ts +0 -2
- package/src/types/proof-items.ts +0 -32
- package/src/types/react-i18next.d.ts +0 -10
- package/src/types/remove.ts +0 -8
- package/src/types/security.ts +0 -32
- package/src/types/settings.ts +0 -28
- package/src/types/state.ts +0 -97
- package/src/types/tour.ts +0 -20
- package/src/types/version-check.ts +0 -18
- package/src/utils/PINValidation.ts +0 -98
- package/src/utils/agent.ts +0 -128
- package/src/utils/anonCredsProofRequestMapper.ts +0 -205
- package/src/utils/contacts.ts +0 -59
- package/src/utils/cred-def.ts +0 -33
- package/src/utils/credential.ts +0 -37
- package/src/utils/crypto.ts +0 -12
- package/src/utils/fileCache.ts +0 -152
- package/src/utils/helpers.ts +0 -1292
- package/src/utils/ledger.ts +0 -212
- package/src/utils/luminance.ts +0 -40
- package/src/utils/mediatorhelpers.ts +0 -71
- package/src/utils/migration.ts +0 -40
- package/src/utils/network.tsx +0 -55
- package/src/utils/oca.ts +0 -173
- package/src/utils/parsers.tsx +0 -111
- package/src/utils/proofBundle.ts +0 -220
- package/src/utils/schema.ts +0 -28
- package/src/utils/testable.ts +0 -17
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BasicMessageRecord,
|
|
3
|
-
CredentialExchangeRecord as CredentialRecord,
|
|
4
|
-
CredentialState,
|
|
5
|
-
MdocRecord,
|
|
6
|
-
ProofExchangeRecord,
|
|
7
|
-
ProofState,
|
|
8
|
-
SdJwtVcRecord,
|
|
9
|
-
W3cCredentialRecord,
|
|
10
|
-
} from '@credo-ts/core'
|
|
11
|
-
import { useBasicMessages, useCredentialByState, useProofByState } from '@credo-ts/react-hooks'
|
|
12
|
-
import { ProofCustomMetadata, ProofMetadata } from '@bifold/verifier'
|
|
13
|
-
import { useEffect, useState } from 'react'
|
|
14
|
-
|
|
15
|
-
import {
|
|
16
|
-
BasicMessageMetadata,
|
|
17
|
-
CredentialMetadata,
|
|
18
|
-
basicMessageCustomMetadata,
|
|
19
|
-
credentialCustomMetadata,
|
|
20
|
-
} from '../types/metadata'
|
|
21
|
-
import { useOpenID } from '../modules/openid/hooks/openid'
|
|
22
|
-
import { CustomNotification } from '../types/notification'
|
|
23
|
-
import { OpenId4VPRequestRecord } from '../modules/openid/types'
|
|
24
|
-
|
|
25
|
-
export type NotificationsInputProps = {
|
|
26
|
-
openIDUri?: string
|
|
27
|
-
openIDPresentationUri?: string
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export type NotificationReturnType = Array<
|
|
31
|
-
| BasicMessageRecord
|
|
32
|
-
| CredentialRecord
|
|
33
|
-
| ProofExchangeRecord
|
|
34
|
-
| CustomNotification
|
|
35
|
-
| SdJwtVcRecord
|
|
36
|
-
| W3cCredentialRecord
|
|
37
|
-
| MdocRecord
|
|
38
|
-
| OpenId4VPRequestRecord
|
|
39
|
-
>
|
|
40
|
-
|
|
41
|
-
export const useNotifications = ({
|
|
42
|
-
openIDUri,
|
|
43
|
-
openIDPresentationUri,
|
|
44
|
-
}: NotificationsInputProps): NotificationReturnType => {
|
|
45
|
-
const [notifications, setNotifications] = useState<NotificationReturnType>([])
|
|
46
|
-
const { records: basicMessages } = useBasicMessages()
|
|
47
|
-
const offers = useCredentialByState(CredentialState.OfferReceived)
|
|
48
|
-
const proofsRequested = useProofByState(ProofState.RequestReceived)
|
|
49
|
-
const credsReceived = useCredentialByState(CredentialState.CredentialReceived)
|
|
50
|
-
const credsDone = useCredentialByState(CredentialState.Done)
|
|
51
|
-
const proofsDone = useProofByState([ProofState.Done, ProofState.PresentationReceived])
|
|
52
|
-
const openIDCredRecieved = useOpenID({ openIDUri: openIDUri, openIDPresentationUri: openIDPresentationUri })
|
|
53
|
-
|
|
54
|
-
useEffect(() => {
|
|
55
|
-
// get all unseen messages
|
|
56
|
-
const unseenMessages: BasicMessageRecord[] = basicMessages.filter((msg) => {
|
|
57
|
-
const meta = msg.metadata.get(BasicMessageMetadata.customMetadata) as basicMessageCustomMetadata
|
|
58
|
-
return !meta?.seen
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
// add one unseen message per contact to notifications
|
|
62
|
-
const contactsWithUnseenMessages: string[] = []
|
|
63
|
-
const messagesToShow: BasicMessageRecord[] = []
|
|
64
|
-
|
|
65
|
-
unseenMessages.forEach((msg) => {
|
|
66
|
-
if (!contactsWithUnseenMessages.includes(msg.connectionId)) {
|
|
67
|
-
contactsWithUnseenMessages.push(msg.connectionId)
|
|
68
|
-
messagesToShow.push(msg)
|
|
69
|
-
}
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
const validProofsDone = proofsDone.filter((proof: ProofExchangeRecord) => {
|
|
73
|
-
if (proof.isVerified === undefined) {
|
|
74
|
-
return false
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const metadata = proof.metadata.get(ProofMetadata.customMetadata) as ProofCustomMetadata
|
|
78
|
-
|
|
79
|
-
return !metadata?.details_seen
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
const revoked = credsDone.filter((cred: CredentialRecord) => {
|
|
83
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
84
|
-
const metadata = cred!.metadata.get(CredentialMetadata.customMetadata) as credentialCustomMetadata
|
|
85
|
-
if (cred?.revocationNotification && metadata?.revoked_seen == undefined) {
|
|
86
|
-
return cred
|
|
87
|
-
}
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
const openIDCreds: Array<SdJwtVcRecord | W3cCredentialRecord | MdocRecord | OpenId4VPRequestRecord> = []
|
|
91
|
-
if (openIDCredRecieved) {
|
|
92
|
-
openIDCreds.push(openIDCredRecieved)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const notif = [
|
|
96
|
-
...messagesToShow,
|
|
97
|
-
...offers,
|
|
98
|
-
...proofsRequested,
|
|
99
|
-
...validProofsDone,
|
|
100
|
-
...revoked,
|
|
101
|
-
...openIDCreds,
|
|
102
|
-
].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime())
|
|
103
|
-
|
|
104
|
-
setNotifications(notif)
|
|
105
|
-
}, [basicMessages, credsReceived, proofsDone, proofsRequested, offers, credsDone, openIDCredRecieved])
|
|
106
|
-
|
|
107
|
-
return notifications
|
|
108
|
-
}
|
package/src/hooks/oob.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { OutOfBandRecord } from '@credo-ts/core'
|
|
2
|
-
import { useAgent } from '@credo-ts/react-hooks'
|
|
3
|
-
import { useState } from 'react'
|
|
4
|
-
|
|
5
|
-
export const useOutOfBandByReceivedInvitationId = (receivedInvitationId: string): OutOfBandRecord | undefined => {
|
|
6
|
-
const { agent } = useAgent()
|
|
7
|
-
|
|
8
|
-
const [oob, setOob] = useState<OutOfBandRecord | undefined>(undefined)
|
|
9
|
-
if (!oob) {
|
|
10
|
-
agent?.oob.findByReceivedInvitationId(receivedInvitationId).then((res) => {
|
|
11
|
-
if (res) {
|
|
12
|
-
setOob(res)
|
|
13
|
-
}
|
|
14
|
-
})
|
|
15
|
-
}
|
|
16
|
-
return oob
|
|
17
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ProofRequestTemplate } from '@bifold/verifier'
|
|
2
|
-
import { useEffect, useState } from 'react'
|
|
3
|
-
|
|
4
|
-
import { TOKENS, useServices } from '../container-api'
|
|
5
|
-
import { useStore } from '../contexts/store'
|
|
6
|
-
import { applyTemplateMarkers, useRemoteProofBundleResolver } from '../utils/proofBundle'
|
|
7
|
-
|
|
8
|
-
export const useTemplates = (): Array<ProofRequestTemplate> => {
|
|
9
|
-
const [store] = useStore()
|
|
10
|
-
const [proofRequestTemplates, setProofRequestTemplates] = useState<ProofRequestTemplate[]>([])
|
|
11
|
-
const [{ proofTemplateBaseUrl }, logger] = useServices([TOKENS.CONFIG, TOKENS.UTIL_LOGGER])
|
|
12
|
-
const resolver = useRemoteProofBundleResolver(proofTemplateBaseUrl, logger)
|
|
13
|
-
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
resolver.resolve(store.preferences.acceptDevCredentials).then((templates) => {
|
|
16
|
-
if (templates) {
|
|
17
|
-
setProofRequestTemplates(applyTemplateMarkers(templates))
|
|
18
|
-
}
|
|
19
|
-
})
|
|
20
|
-
}, [resolver, store.preferences.acceptDevCredentials])
|
|
21
|
-
|
|
22
|
-
return proofRequestTemplates
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export const useTemplate = (templateId: string): ProofRequestTemplate | undefined => {
|
|
26
|
-
const [store] = useStore()
|
|
27
|
-
const [proofRequestTemplate, setProofRequestTemplate] = useState<ProofRequestTemplate | undefined>(undefined)
|
|
28
|
-
const [{ proofTemplateBaseUrl }] = useServices([TOKENS.CONFIG])
|
|
29
|
-
const resolver = useRemoteProofBundleResolver(proofTemplateBaseUrl)
|
|
30
|
-
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
resolver.resolveById(templateId, store.preferences.acceptDevCredentials).then((template) => {
|
|
33
|
-
if (template) {
|
|
34
|
-
setProofRequestTemplate(applyTemplateMarkers(template))
|
|
35
|
-
}
|
|
36
|
-
})
|
|
37
|
-
}, [resolver, templateId, store.preferences.acceptDevCredentials])
|
|
38
|
-
|
|
39
|
-
return proofRequestTemplate
|
|
40
|
-
}
|
package/src/hooks/proofs.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { ProofExchangeRecord } from '@credo-ts/core'
|
|
2
|
-
import { useAgent, useCredentials, useProofById, useProofs } from '@credo-ts/react-hooks'
|
|
3
|
-
import { useMemo } from 'react'
|
|
4
|
-
import { useTranslation } from 'react-i18next'
|
|
5
|
-
|
|
6
|
-
import { TOKENS, useServices } from '../container-api'
|
|
7
|
-
import { retrieveCredentialsForProof } from '../utils/helpers'
|
|
8
|
-
|
|
9
|
-
export const useProofsByConnectionId = (connectionId: string): ProofExchangeRecord[] => {
|
|
10
|
-
const { records: proofs } = useProofs()
|
|
11
|
-
|
|
12
|
-
return useMemo(
|
|
13
|
-
() => proofs.filter((proof: ProofExchangeRecord) => proof.connectionId === connectionId),
|
|
14
|
-
[proofs, connectionId]
|
|
15
|
-
)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const useAllCredentialsForProof = (proofId: string) => {
|
|
19
|
-
const { t } = useTranslation()
|
|
20
|
-
const { agent } = useAgent()
|
|
21
|
-
const fullCredentials = useCredentials().records
|
|
22
|
-
const proof = useProofById(proofId)
|
|
23
|
-
const [groupByReferent] = useServices([TOKENS.GROUP_BY_REFERENT])
|
|
24
|
-
|
|
25
|
-
return useMemo(() => {
|
|
26
|
-
if (!proof || !agent) {
|
|
27
|
-
return
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return retrieveCredentialsForProof(agent, proof, fullCredentials, t, groupByReferent)
|
|
31
|
-
}, [proof, agent, fullCredentials, t, groupByReferent])
|
|
32
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { useEffect } from 'react'
|
|
2
|
-
import { Platform } from 'react-native'
|
|
3
|
-
import ScreenGuardModule from 'react-native-screenguard'
|
|
4
|
-
|
|
5
|
-
export const screenGuardOptions = {
|
|
6
|
-
timeAfterResume: 500, // milliseconds
|
|
7
|
-
backgroundColor: '#000000', // black
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Prevents screenshots when component is mounted. When unmounted, allows them again
|
|
12
|
-
*
|
|
13
|
-
* @param {boolean} [active=true] - If `false`, hook does nothing
|
|
14
|
-
* @remarks
|
|
15
|
-
* - If `active` param is `true`, it prevents screenshots when the
|
|
16
|
-
* component is mounted
|
|
17
|
-
* - On unmount, or when `active` is changed to false, it restores
|
|
18
|
-
* the ability to take screenshots
|
|
19
|
-
* - Should be used at the screen level only
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```tsx
|
|
23
|
-
* import usePreventScreenCapture from './hooks/screen-capture';
|
|
24
|
-
*
|
|
25
|
-
* const MyScreen = () => {
|
|
26
|
-
* usePreventScreenCapture();
|
|
27
|
-
* return <View><Text>Secure Content</Text></View>;
|
|
28
|
-
* };
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* @returns {void}
|
|
32
|
-
*/
|
|
33
|
-
const usePreventScreenCapture = (active: boolean = true) => {
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
if (!active) return
|
|
36
|
-
|
|
37
|
-
if (Platform.OS === 'android') {
|
|
38
|
-
// on Android, plain `register` will trigger AppState to
|
|
39
|
-
// change momentarily, which can have side effects.
|
|
40
|
-
// `registerWithoutEffect` prevents that
|
|
41
|
-
ScreenGuardModule.registerWithoutEffect()
|
|
42
|
-
} else {
|
|
43
|
-
ScreenGuardModule.register(screenGuardOptions)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return () => {
|
|
47
|
-
ScreenGuardModule.unregister()
|
|
48
|
-
}
|
|
49
|
-
}, [active])
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export default usePreventScreenCapture
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { Agent, HttpOutboundTransport, WsOutboundTransport } from '@credo-ts/core'
|
|
2
|
-
import { IndyVdrPoolService } from '@credo-ts/indy-vdr/build/pool'
|
|
3
|
-
import { agentDependencies } from '@credo-ts/react-native'
|
|
4
|
-
import { GetCredentialDefinitionRequest, GetSchemaRequest } from '@hyperledger/indy-vdr-shared'
|
|
5
|
-
import { useCallback, useRef, useState } from 'react'
|
|
6
|
-
import { CachesDirectoryPath } from 'react-native-fs'
|
|
7
|
-
|
|
8
|
-
import { TOKENS, useServices } from '../container-api'
|
|
9
|
-
import { DispatchAction } from '../contexts/reducers/store'
|
|
10
|
-
import { useStore } from '../contexts/store'
|
|
11
|
-
import { WalletSecret } from '../types/security'
|
|
12
|
-
import { createLinkSecretIfRequired, getAgentModules } from '../utils/agent'
|
|
13
|
-
import { migrateToAskar } from '../utils/migration'
|
|
14
|
-
|
|
15
|
-
export type AgentSetupReturnType = {
|
|
16
|
-
agent: Agent | null
|
|
17
|
-
initializeAgent: (walletSecret: WalletSecret) => Promise<void>
|
|
18
|
-
shutdownAndClearAgentIfExists: () => Promise<void>
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const useBifoldAgentSetup = (): AgentSetupReturnType => {
|
|
22
|
-
const [agent, setAgent] = useState<Agent | null>(null)
|
|
23
|
-
const agentInstanceRef = useRef<Agent | null>(null)
|
|
24
|
-
const [store, dispatch] = useStore()
|
|
25
|
-
const [cacheSchemas, cacheCredDefs, logger, indyLedgers] = useServices([
|
|
26
|
-
TOKENS.CACHE_SCHEMAS,
|
|
27
|
-
TOKENS.CACHE_CRED_DEFS,
|
|
28
|
-
TOKENS.UTIL_LOGGER,
|
|
29
|
-
TOKENS.UTIL_LEDGERS,
|
|
30
|
-
])
|
|
31
|
-
|
|
32
|
-
const restartExistingAgent = useCallback(
|
|
33
|
-
async (agent: Agent, walletSecret: WalletSecret): Promise<Agent | undefined> => {
|
|
34
|
-
try {
|
|
35
|
-
await agent.wallet.open({
|
|
36
|
-
id: walletSecret.id,
|
|
37
|
-
key: walletSecret.key,
|
|
38
|
-
})
|
|
39
|
-
await agent.initialize()
|
|
40
|
-
} catch (error) {
|
|
41
|
-
logger.warn(`Agent restart failed with error ${error}`)
|
|
42
|
-
// if the existing agents wallet cannot be opened or initialize() fails it was
|
|
43
|
-
// again not a clean shutdown and the agent should be replaced, not restarted
|
|
44
|
-
return
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return agent
|
|
48
|
-
},
|
|
49
|
-
[logger]
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
const createNewAgent = useCallback(
|
|
53
|
-
async (walletSecret: WalletSecret, mediatorUrl: string): Promise<Agent> => {
|
|
54
|
-
const newAgent = new Agent({
|
|
55
|
-
config: {
|
|
56
|
-
label: store.preferences.walletName || 'Aries Bifold',
|
|
57
|
-
walletConfig: {
|
|
58
|
-
id: walletSecret.id,
|
|
59
|
-
key: walletSecret.key,
|
|
60
|
-
},
|
|
61
|
-
logger,
|
|
62
|
-
autoUpdateStorageOnStartup: true,
|
|
63
|
-
},
|
|
64
|
-
dependencies: agentDependencies,
|
|
65
|
-
modules: getAgentModules({
|
|
66
|
-
indyNetworks: indyLedgers,
|
|
67
|
-
mediatorInvitationUrl: mediatorUrl,
|
|
68
|
-
txnCache: {
|
|
69
|
-
capacity: 1000,
|
|
70
|
-
expiryOffsetMs: 1000 * 60 * 60 * 24 * 7,
|
|
71
|
-
path: CachesDirectoryPath + '/txn-cache',
|
|
72
|
-
},
|
|
73
|
-
}),
|
|
74
|
-
})
|
|
75
|
-
const wsTransport = new WsOutboundTransport()
|
|
76
|
-
const httpTransport = new HttpOutboundTransport()
|
|
77
|
-
|
|
78
|
-
newAgent.registerOutboundTransport(wsTransport)
|
|
79
|
-
newAgent.registerOutboundTransport(httpTransport)
|
|
80
|
-
|
|
81
|
-
return newAgent
|
|
82
|
-
},
|
|
83
|
-
[store.preferences.walletName, logger, indyLedgers]
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
const migrateIfRequired = useCallback(
|
|
87
|
-
async (newAgent: Agent, walletSecret: WalletSecret) => {
|
|
88
|
-
// If we haven't migrated to Aries Askar yet, we need to do this before we initialize the agent.
|
|
89
|
-
if (!store.migration.didMigrateToAskar) {
|
|
90
|
-
await migrateToAskar(walletSecret.id, walletSecret.key, newAgent)
|
|
91
|
-
// Store that we migrated to askar.
|
|
92
|
-
dispatch({
|
|
93
|
-
type: DispatchAction.DID_MIGRATE_TO_ASKAR,
|
|
94
|
-
})
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
[store.migration.didMigrateToAskar, dispatch]
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
const warmUpCache = useCallback(
|
|
101
|
-
async (newAgent: Agent) => {
|
|
102
|
-
const poolService = newAgent.dependencyManager.resolve(IndyVdrPoolService)
|
|
103
|
-
cacheCredDefs.forEach(async ({ did, id }) => {
|
|
104
|
-
const pool = await poolService.getPoolForDid(newAgent.context, did)
|
|
105
|
-
const credDefRequest = new GetCredentialDefinitionRequest({ credentialDefinitionId: id })
|
|
106
|
-
await pool.pool.submitRequest(credDefRequest)
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
cacheSchemas.forEach(async ({ did, id }) => {
|
|
110
|
-
const pool = await poolService.getPoolForDid(newAgent.context, did)
|
|
111
|
-
const schemaRequest = new GetSchemaRequest({ schemaId: id })
|
|
112
|
-
await pool.pool.submitRequest(schemaRequest)
|
|
113
|
-
})
|
|
114
|
-
},
|
|
115
|
-
[cacheCredDefs, cacheSchemas]
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
const initializeAgent = useCallback(
|
|
119
|
-
async (walletSecret: WalletSecret): Promise<void> => {
|
|
120
|
-
const mediatorUrl = store.preferences.selectedMediator
|
|
121
|
-
logger.info('Checking for existing agent...')
|
|
122
|
-
if (agentInstanceRef.current) {
|
|
123
|
-
const restartedAgent = await restartExistingAgent(agentInstanceRef.current, walletSecret)
|
|
124
|
-
if (restartedAgent) {
|
|
125
|
-
logger.info('Successfully restarted existing agent...')
|
|
126
|
-
agentInstanceRef.current = restartedAgent
|
|
127
|
-
setAgent(restartedAgent)
|
|
128
|
-
return
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
logger.info('Creating new agent...')
|
|
133
|
-
const newAgent = await createNewAgent(walletSecret, mediatorUrl)
|
|
134
|
-
|
|
135
|
-
logger.info('Migrating if required...')
|
|
136
|
-
await migrateIfRequired(newAgent, walletSecret)
|
|
137
|
-
|
|
138
|
-
logger.info('Initializing agent...')
|
|
139
|
-
await newAgent.initialize()
|
|
140
|
-
|
|
141
|
-
logger.info('Creating link secret if required...')
|
|
142
|
-
await createLinkSecretIfRequired(newAgent)
|
|
143
|
-
|
|
144
|
-
logger.info('Warming up cache...')
|
|
145
|
-
await warmUpCache(newAgent)
|
|
146
|
-
|
|
147
|
-
logger.info('Agent initialized successfully')
|
|
148
|
-
agentInstanceRef.current = newAgent
|
|
149
|
-
setAgent(newAgent)
|
|
150
|
-
},
|
|
151
|
-
[logger, restartExistingAgent, createNewAgent, migrateIfRequired, warmUpCache, store.preferences.selectedMediator]
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
const shutdownAndClearAgentIfExists = useCallback(async () => {
|
|
155
|
-
if (agent) {
|
|
156
|
-
try {
|
|
157
|
-
await agent.shutdown()
|
|
158
|
-
} catch (error) {
|
|
159
|
-
logger.error(`Error shutting down agent with shutdownAndClearAgentIfExists: ${error}`)
|
|
160
|
-
} finally {
|
|
161
|
-
setAgent(null)
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}, [agent, logger])
|
|
165
|
-
|
|
166
|
-
return { agent, initializeAgent, shutdownAndClearAgentIfExists }
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export default useBifoldAgentSetup
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { Agent } from '@credo-ts/core'
|
|
2
|
-
import { useState, useEffect, useMemo } from 'react'
|
|
3
|
-
import { useNavigationState } from '@react-navigation/native'
|
|
4
|
-
import { State } from '../types/state'
|
|
5
|
-
import { OnboardingTask } from '../types/navigators'
|
|
6
|
-
import { Config } from '../types/config'
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Hook to manage onboarding workflow state
|
|
10
|
-
* Tracks the onboarding tasks, their completion status.
|
|
11
|
-
*/
|
|
12
|
-
export const useOnboardingState = (
|
|
13
|
-
store: State,
|
|
14
|
-
config: Config,
|
|
15
|
-
termsVersion: number,
|
|
16
|
-
agent: Agent | null,
|
|
17
|
-
generateOnboardingWorkflowSteps: (
|
|
18
|
-
store: State,
|
|
19
|
-
config: Config,
|
|
20
|
-
termsVersion: number,
|
|
21
|
-
agent: Agent | null
|
|
22
|
-
) => OnboardingTask[]
|
|
23
|
-
): {
|
|
24
|
-
onboardingState: OnboardingTask[]
|
|
25
|
-
setOnboardingState: React.Dispatch<React.SetStateAction<OnboardingTask[]>>
|
|
26
|
-
activeScreen: string | undefined
|
|
27
|
-
currentRoute: any
|
|
28
|
-
isComplete: boolean
|
|
29
|
-
} => {
|
|
30
|
-
const [onboardingState, setOnboardingState] = useState<OnboardingTask[]>([])
|
|
31
|
-
const currentRoute = useNavigationState((state) => state?.routes[state?.index])
|
|
32
|
-
|
|
33
|
-
const activeScreen = useMemo(() => {
|
|
34
|
-
return onboardingState.find((task) => !task.completed)?.name
|
|
35
|
-
}, [onboardingState])
|
|
36
|
-
|
|
37
|
-
useEffect(() => {
|
|
38
|
-
if (!store.stateLoaded) {
|
|
39
|
-
return
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const onboardingTasks = generateOnboardingWorkflowSteps(store, config, termsVersion, agent)
|
|
43
|
-
setOnboardingState(onboardingTasks)
|
|
44
|
-
}, [store, config, termsVersion, agent, generateOnboardingWorkflowSteps])
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
onboardingState,
|
|
48
|
-
setOnboardingState,
|
|
49
|
-
activeScreen,
|
|
50
|
-
currentRoute,
|
|
51
|
-
isComplete: !activeScreen,
|
|
52
|
-
}
|
|
53
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from 'react'
|
|
2
|
-
import { useTranslation } from 'react-i18next'
|
|
3
|
-
|
|
4
|
-
import { InlineErrorType, InlineMessageProps } from '../components/inputs/InlineErrorText'
|
|
5
|
-
import { TOKENS, useServices } from '../container-api'
|
|
6
|
-
import { createPINValidations, PINValidationsType } from '../utils/PINValidation'
|
|
7
|
-
|
|
8
|
-
interface ModalState {
|
|
9
|
-
visible: boolean
|
|
10
|
-
title: string
|
|
11
|
-
message: string
|
|
12
|
-
onModalDismiss?: () => void
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const initialModalState: ModalState = {
|
|
16
|
-
visible: false,
|
|
17
|
-
title: '',
|
|
18
|
-
message: '',
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const usePINValidation = (PIN: string, PINTwo: string) => {
|
|
22
|
-
const { t } = useTranslation()
|
|
23
|
-
const [{ PINSecurity }, inlineMessages] = useServices([TOKENS.CONFIG, TOKENS.INLINE_ERRORS])
|
|
24
|
-
const [inlineMessageField1, setInlineMessageField1] = useState<InlineMessageProps>()
|
|
25
|
-
const [inlineMessageField2, setInlineMessageField2] = useState<InlineMessageProps>()
|
|
26
|
-
const [modalState, setModalState] = useState<ModalState>(initialModalState)
|
|
27
|
-
|
|
28
|
-
const clearModal = useCallback(() => {
|
|
29
|
-
setModalState(initialModalState)
|
|
30
|
-
}, [])
|
|
31
|
-
|
|
32
|
-
const [PINValidations, setPINValidations] = useState<PINValidationsType[]>(
|
|
33
|
-
createPINValidations(PIN, PINSecurity.rules)
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
useEffect(() => {
|
|
37
|
-
setInlineMessageField1(undefined)
|
|
38
|
-
setInlineMessageField2(undefined)
|
|
39
|
-
setPINValidations(createPINValidations(PIN, PINSecurity.rules))
|
|
40
|
-
}, [PIN, PINTwo, PINSecurity.rules])
|
|
41
|
-
|
|
42
|
-
const attentionMessage = useCallback(
|
|
43
|
-
(title: string, message: string, pinOne: boolean) => {
|
|
44
|
-
if (inlineMessages.enabled) {
|
|
45
|
-
const config = {
|
|
46
|
-
message: message,
|
|
47
|
-
inlineType: InlineErrorType.error,
|
|
48
|
-
config: inlineMessages,
|
|
49
|
-
}
|
|
50
|
-
if (pinOne) {
|
|
51
|
-
setInlineMessageField1(config)
|
|
52
|
-
} else {
|
|
53
|
-
setInlineMessageField2(config)
|
|
54
|
-
}
|
|
55
|
-
} else {
|
|
56
|
-
setModalState({
|
|
57
|
-
visible: true,
|
|
58
|
-
title: title,
|
|
59
|
-
message: message,
|
|
60
|
-
onModalDismiss: clearModal,
|
|
61
|
-
})
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
[inlineMessages, clearModal]
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
const validatePINEntry = useCallback(
|
|
68
|
-
(PINOne: string, PINTwo: string): boolean => {
|
|
69
|
-
for (const validation of PINValidations) {
|
|
70
|
-
if (validation.isInvalid) {
|
|
71
|
-
attentionMessage(
|
|
72
|
-
t('PINCreate.InvalidPIN'),
|
|
73
|
-
t(`PINCreate.Message.${validation.errorName}`, validation?.errorTextAddition),
|
|
74
|
-
true
|
|
75
|
-
)
|
|
76
|
-
return false
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (PINOne !== PINTwo) {
|
|
80
|
-
attentionMessage(t('PINCreate.InvalidPIN'), t('PINCreate.PINsDoNotMatch'), false)
|
|
81
|
-
return false
|
|
82
|
-
}
|
|
83
|
-
return true
|
|
84
|
-
},
|
|
85
|
-
[PINValidations, t, attentionMessage]
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
return {
|
|
89
|
-
PINValidations,
|
|
90
|
-
validatePINEntry,
|
|
91
|
-
inlineMessageField1,
|
|
92
|
-
inlineMessageField2,
|
|
93
|
-
modalState,
|
|
94
|
-
setModalState,
|
|
95
|
-
clearModal,
|
|
96
|
-
PINSecurity,
|
|
97
|
-
}
|
|
98
|
-
}
|