From 7233111527d6cbc7203118c62f29a5765907875c Mon Sep 17 00:00:00 2001 From: Bryce McMath <32586431+bryce-mcmath@users.noreply.github.com> Date: Mon, 21 Oct 2024 15:05:33 -0700 Subject: [PATCH] feat: alt person flow framing skeleton (#2228) Signed-off-by: Bryce McMath --- .../__snapshots__/Developer.test.tsx.snap | 93 ++++++++++ app/container-imp.ts | 6 +- app/ios/Podfile.lock | 4 +- app/package.json | 10 +- app/src/localization/en/index.ts | 4 + app/src/localization/fr/index.ts | 4 + app/src/localization/pt-br/index.ts | 4 + app/src/navigators/VerifiedPersonStack.tsx | 59 +++++++ app/src/navigators/navigators.ts | 9 + app/src/screens/ChooseID.tsx | 21 +++ app/src/screens/Developer.tsx | 23 +++ app/src/screens/PersonCredential.tsx | 159 +++++++++++------- app/src/screens/VerificationSteps.tsx | 134 +++++++++++++++ app/src/store.tsx | 12 ++ yarn.lock | 50 +++--- 15 files changed, 495 insertions(+), 97 deletions(-) create mode 100644 app/src/navigators/VerifiedPersonStack.tsx create mode 100644 app/src/navigators/navigators.ts create mode 100644 app/src/screens/ChooseID.tsx create mode 100644 app/src/screens/VerificationSteps.tsx diff --git a/app/__tests__/screens/__snapshots__/Developer.test.tsx.snap b/app/__tests__/screens/__snapshots__/Developer.test.tsx.snap index 477fa840..90ce35bc 100644 --- a/app/__tests__/screens/__snapshots__/Developer.test.tsx.snap +++ b/app/__tests__/screens/__snapshots__/Developer.test.tsx.snap @@ -1225,6 +1225,99 @@ exports[`Developer Screen screen renders correctly 1`] = ` + + + + Developer.EnableAltPersonFlow + + + + + + diff --git a/app/container-imp.ts b/app/container-imp.ts index dfd6cf59..c2e5680d 100644 --- a/app/container-imp.ts +++ b/app/container-imp.ts @@ -47,6 +47,7 @@ import { AttestationRestrictions, autoDisableRemoteLoggingIntervalInMinutes } fr import { activate, deactivate, setup, status } from './src/helpers/PushNotificationsHelper' import { expirationOverrideInMinutes } from './src/helpers/utils' import { useNotifications } from './src/hooks/notifications' +import VerifiedPersonStack from './src/navigators/VerifiedPersonStack' import Developer from './src/screens/Developer' import { pages } from './src/screens/OnboardingPages' import PersonCredential from './src/screens/PersonCredential' @@ -330,6 +331,7 @@ export class AppContainer implements Container { }) this._container.registerInstance(TOKENS.UTIL_PROOF_TEMPLATE, getProofRequestTemplates) + this._container.registerInstance(TOKENS.CUSTOM_NAV_STACK_1, VerifiedPersonStack) this._container.registerInstance(TOKENS.LOAD_STATE, async (dispatch: React.Dispatch>) => { const loadState = async (key: LocalStorageKeys | BCLocalStorageKeys, updateVal: (val: Type) => void) => { const data = (await this.storage.getValueForKey(key)) as Type @@ -344,7 +346,7 @@ export class AppContainer implements Container { let tours = initialState.tours let onboarding = initialState.onboarding let personCredOfferDissmissed = initialState.dismissPersonCredentialOffer - let { environment, remoteDebugging, enableProxy } = initialState.developer + let { environment, remoteDebugging, enableProxy, enableAltPersonFlow } = initialState.developer await Promise.all([ loadLoginAttempt().then((data) => { @@ -363,6 +365,7 @@ export class AppContainer implements Container { loadState(BCLocalStorageKeys.Environment, (val) => (environment = val)), loadState(BCLocalStorageKeys.RemoteDebugging, (val) => (remoteDebugging = val)), loadState(BCLocalStorageKeys.EnableProxy, (val) => (enableProxy = val)), + loadState(BCLocalStorageKeys.EnableAltPersonFlow, (val) => (enableAltPersonFlow = val)), ]) const state: BCState = { ...initialState, @@ -380,6 +383,7 @@ export class AppContainer implements Container { sessionId: remoteDebugging.sessionId, }, enableProxy, + enableAltPersonFlow, }, } diff --git a/app/ios/Podfile.lock b/app/ios/Podfile.lock index c6255e01..f277478f 100644 --- a/app/ios/Podfile.lock +++ b/app/ios/Podfile.lock @@ -445,7 +445,7 @@ PODS: - React-jsinspector (0.72.5) - React-logger (0.72.5): - glog - - "react-native-attestation (1.0.0-alpha.342+d7dbeef6)": + - "react-native-attestation (1.0.0-alpha.346+6366eb31)": - RCT-Folly (= 2021.07.22.00) - React-Core - react-native-config (1.5.0): @@ -931,7 +931,7 @@ SPEC CHECKSUMS: React-jsiexecutor: ff70a72027dea5cc7d71cfcc6fad7f599f63987a React-jsinspector: aef73cbd43b70675f572214d10fa438c89bf11ba React-logger: 2e4aee3e11b3ec4fa6cfd8004610bbb3b8d6cca4 - react-native-attestation: 2fce2f60bd1eaa80040509b63b941a16e44e4e2d + react-native-attestation: 9a66b5137d7d56d58c28efef378b1f579eec87e7 react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727 react-native-encrypted-storage: db300a3f2f0aba1e818417c1c0a6be549038deb7 react-native-get-random-values: a6ea6a8a65dc93e96e24a11105b1a9c8cfe1d72a diff --git a/app/package.json b/app/package.json index 16912300..97e5677b 100644 --- a/app/package.json +++ b/app/package.json @@ -62,11 +62,11 @@ "@formatjs/intl-relativetimeformat": "9.3.1", "@hyperledger/anoncreds-react-native": "0.2.4", "@hyperledger/aries-askar-react-native": "0.2.3", - "@hyperledger/aries-bifold-core": "1.0.0-alpha.342", - "@hyperledger/aries-bifold-remote-logs": "1.0.0-alpha.342", - "@hyperledger/aries-bifold-verifier": "1.0.0-alpha.342", - "@hyperledger/aries-oca": "1.0.0-alpha.342", - "@hyperledger/aries-react-native-attestation": "1.0.0-alpha.342", + "@hyperledger/aries-bifold-core": "1.0.0-alpha.346", + "@hyperledger/aries-bifold-remote-logs": "1.0.0-alpha.346", + "@hyperledger/aries-bifold-verifier": "1.0.0-alpha.346", + "@hyperledger/aries-oca": "1.0.0-alpha.346", + "@hyperledger/aries-react-native-attestation": "1.0.0-alpha.346", "@hyperledger/indy-vdr-react-native": "0.2.2", "@hyperledger/indy-vdr-shared": "0.2.2", "@react-native-async-storage/async-storage": "1.15.11", diff --git a/app/src/localization/en/index.ts b/app/src/localization/en/index.ts index 36b05493..8b959009 100644 --- a/app/src/localization/en/index.ts +++ b/app/src/localization/en/index.ts @@ -65,6 +65,8 @@ const translation = { "Terms": "Terms of Use", "Settings": "Menu", "Preface": "BC Wallet", + "VerificationSteps": "Setup steps", + "ChooseID": "Choose your identification", }, "PersonCredentialNotification": { "Title": "Get your Person credential", @@ -83,6 +85,7 @@ const translation = { "WhatIsPersonCredentialLink": "What is a Person credential", "WhereToUseLink": "Where to use", "HelpLink": "Help", + "ScanOrTakePhotos": "Scan or take photos of your ID." }, "NetInfo": { "NoInternetConnectionTitle": "No internet connection", @@ -132,6 +135,7 @@ const translation = { "Toggle": "Toggle Developer Mode", "AttestationSupport": "Attestation support", "EnableProxy": "Enable proxy", + "EnableAltPersonFlow": "Alt Person flow", }, "Tips": { "Header": "Tips", diff --git a/app/src/localization/fr/index.ts b/app/src/localization/fr/index.ts index 2c897f9b..0ca51c8c 100644 --- a/app/src/localization/fr/index.ts +++ b/app/src/localization/fr/index.ts @@ -65,6 +65,8 @@ const translation = { "Terms": "Conditions générales d'utilisation", "Settings": "Menu", "Preface": "BC Wallet", + "VerificationSteps": "Setup steps (FR)", + "ChooseID": "Choose your identification (FR)", }, "PersonCredentialNotification": { "Title": "Obtener votre carte d'identité", @@ -82,6 +84,7 @@ const translation = { "WhatIsPersonCredentialLink": "Qu'est-ce qu'un justificatif personnel", "WhereToUseLink": "Où l'utiliser", "HelpLink": "Aide", + "ScanOrTakePhotos": "Scan or take photos of your ID. (FR)" }, "NetInfo": { "NoInternetConnectionTitle": "Aucune connection internet", @@ -131,6 +134,7 @@ const translation = { "Toggle": "Activer/Désactiver le mode développeur", "AttestationSupport": "Soutien d'attestation", "EnableProxy": "Enable proxy (FR)", + "EnableAltPersonFlow": "Alt Person flow (FR)", }, "Tips": { "Header": "Conseils", diff --git a/app/src/localization/pt-br/index.ts b/app/src/localization/pt-br/index.ts index 2557625d..eecc6ac0 100644 --- a/app/src/localization/pt-br/index.ts +++ b/app/src/localization/pt-br/index.ts @@ -65,6 +65,8 @@ const translation = { "Terms": "Terms of Use (PT-BR)", "Settings": "Menu (PT-BR)", "Preface": "BC Wallet", + "VerificationSteps": "Setup steps (PT-BR)", + "ChooseID": "Choose your identification (PT-BR)", }, "PersonCredentialNotification": { "Title": "Get your Person credential (PT-BR)", @@ -82,6 +84,7 @@ const translation = { "WhatIsPersonCredentialLink": "What is a Person credential (PT-BR)", "WhereToUseLink": "Where to use (PT-BR)", "HelpLink": "Help (PT-BR)", + "ScanOrTakePhotos": "Scan or take photos of your ID. (PT-BR)", }, "NetInfo": { "NoInternetConnectionTitle": "No internet connection (PT-BR)", @@ -131,6 +134,7 @@ const translation = { "Toggle": "Toggle Developer Mode", "AttestationSupport": "Attestation support (PT-BR)", "EnableProxy": "Enable proxy (PT-BR)", + "EnableAltPersonFlow": "Alt Person flow (PT-BR)", }, "Tips": { "Header": "Tips (PT-BR)", diff --git a/app/src/navigators/VerifiedPersonStack.tsx b/app/src/navigators/VerifiedPersonStack.tsx new file mode 100644 index 00000000..6427e956 --- /dev/null +++ b/app/src/navigators/VerifiedPersonStack.tsx @@ -0,0 +1,59 @@ +import { + ButtonLocation, + IconButton, + testIdWithKey, + useDefaultStackOptions, + useTheme, +} from '@hyperledger/aries-bifold-core' +import { createStackNavigator } from '@react-navigation/stack' +import { useTranslation } from 'react-i18next' +import ChooseID from '../screens/ChooseID' +import VerificationSteps from '../screens/VerificationSteps' + +import { BCScreens, BCVerifiedPersonStackParams } from './navigators' + +const VerifiedPersonStack: React.FC = () => { + const Stack = createStackNavigator() + const theme = useTheme() + const defaultStackOptions = useDefaultStackOptions(theme) + const { t } = useTranslation() + + return ( + + ( + null} + /> + ), + }} + /> + ( + null} + /> + ), + }} + /> + + ) +} + +export default VerifiedPersonStack diff --git a/app/src/navigators/navigators.ts b/app/src/navigators/navigators.ts new file mode 100644 index 00000000..140ceecd --- /dev/null +++ b/app/src/navigators/navigators.ts @@ -0,0 +1,9 @@ +export enum BCScreens { + VerificationSteps = 'VerificationSteps', + ChooseID = 'ChooseID', +} + +export type BCVerifiedPersonStackParams = { + [BCScreens.VerificationSteps]: undefined + [BCScreens.ChooseID]: undefined +} diff --git a/app/src/screens/ChooseID.tsx b/app/src/screens/ChooseID.tsx new file mode 100644 index 00000000..baf9e451 --- /dev/null +++ b/app/src/screens/ChooseID.tsx @@ -0,0 +1,21 @@ +import { Text, View, StyleSheet } from 'react-native' + +const ChooseID: React.FC = () => { + const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 24, + }, + text: { + fontSize: 24, + }, + }) + + return ( + + Placeholder + + ) +} + +export default ChooseID diff --git a/app/src/screens/Developer.tsx b/app/src/screens/Developer.tsx index e9ae524a..e11c085f 100644 --- a/app/src/screens/Developer.tsx +++ b/app/src/screens/Developer.tsx @@ -33,6 +33,7 @@ const Settings: React.FC = () => { const [remoteLoggingEnabled, setRemoteLoggingEnabled] = useState(logger?.remoteLoggingEnabled) const [enableShareableLink, setEnableShareableLink] = useState(!!store.preferences.enableShareableLink) const [enableProxy, setEnableProxy] = useState(!!store.developer.enableProxy) + const [enableAltPersonFlow, setEnableAltPersonFlow] = useState(!!store.developer.enableAltPersonFlow) const navigation = useNavigation() const styles = StyleSheet.create({ @@ -260,6 +261,14 @@ const Settings: React.FC = () => { setEnableProxy((previousState) => !previousState) } + const toggleEnableAltPersonFlowSwitch = () => { + dispatch({ + type: BCDispatchAction.TOGGLE_ALT_PERSON_FLOW, + payload: [!enableAltPersonFlow], + }) + setEnableAltPersonFlow((previousState) => !previousState) + } + return ( { value={enableProxy} /> + + + + ) diff --git a/app/src/screens/PersonCredential.tsx b/app/src/screens/PersonCredential.tsx index e7e4789a..0e085b7e 100644 --- a/app/src/screens/PersonCredential.tsx +++ b/app/src/screens/PersonCredential.tsx @@ -8,6 +8,7 @@ import { Link, Screens, NotificationStackParams, + Stacks, } from '@hyperledger/aries-bifold-core' import { StackScreenProps } from '@react-navigation/stack' import React, { useState, useCallback, useEffect } from 'react' @@ -20,6 +21,7 @@ import PersonIssuance1 from '../assets/img/PersonIssuance1.svg' import PersonIssuance2 from '../assets/img/PersonIssuance2.svg' import { openLink } from '../helpers/utils' import { BCState } from '../store' +import { BCScreens } from '../navigators/navigators' const links = { WhatIsPersonCredential: 'https://www2.gov.bc.ca/gov/content/governments/government-id/person-credential', @@ -115,6 +117,12 @@ const PersonCredential: React.FC = ({ navigation }) => { navigation.replace('PersonCredentialLoading' as never, {} as never) }, [agent, store, t, navigation]) + const startAltPersonFlow = useCallback(() => { + navigation.getParent()?.navigate(Stacks.CustomNavStack1, { + screen: BCScreens.VerificationSteps, + }) + }, [navigation]) + const getBCServicesCardApp = useCallback(() => { setAppInstalled(true) const url = @@ -127,77 +135,100 @@ const PersonCredential: React.FC = ({ navigation }) => { return ( - {appInstalled ? : } - - - - {appInstalled ? t('PersonCredential.ServicesCardInstalled') : t('PersonCredential.InstallServicesCard')} - - {appInstalled && ( - - )} - - {appInstalled ? null : ( - - - ) : null} - + + ) : ( + <> + + + + {appInstalled + ? t('PersonCredential.ServicesCardInstalled') + : t('PersonCredential.InstallServicesCard')} + + {appInstalled && ( + + )} + + {appInstalled ? null : ( + + + ) : null} + + + )} void +} + +const VerificationSteps: React.FC = () => { + const { ColorPallet, TextTheme } = useTheme() + const navigation = useNavigation() + const { t } = useTranslation() + + const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: ColorPallet.brand.primaryBackground, + }, + itemSeparator: { + width: '100%', + height: 8, + backgroundColor: ColorPallet.brand.primaryBackground, + }, + step: { + paddingVertical: 24, + paddingHorizontal: 24, + flex: 1, + }, + contentContainer: { + marginTop: 16, + flex: 1, + }, + titleRow: { + flexDirection: 'row', + alignItems: 'center', + }, + contentText: { + flex: 1, + flexWrap: 'wrap', + fontSize: 16, + }, + contentEmailContainer: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + contentEmail: { + flex: 1, + flexWrap: 'wrap', + fontSize: 16, + }, + contentEmailButton: { + alignSelf: 'flex-end', + }, + }) + + const steps: SetupStep[] = useMemo(() => { + return [ + { + title: 'Step 1', + active: true, + complete: false, + content: {t('PersonCredential.ScanOrTakePhotos')}, + onPress: () => navigation.navigate(BCScreens.ChooseID as never), + }, + { + title: 'Step 2', + active: false, + complete: true, + content: ( + Address: Residential address from your BC Services Card will be used + ), + onPress: () => null, + }, + { + title: 'Step 3', + active: false, + complete: true, + content: ( + + Email: j.lee-martinez@email.com + + null} /> + + + ), + onPress: () => null, + }, + { + title: 'Step 4', + active: false, + complete: false, + content: Verify identity by April 20, 2025, + onPress: () => null, + }, + ] + }, [styles, navigation, t]) + + return ( + + ( + item.onPress?.()} accessible={!!item.onPress} accessibilityLabel={item.title}> + + + {item.title} + {item.complete ? : null} + + {item.content} + + + )} + ItemSeparatorComponent={() => } + keyExtractor={(item) => item.title} + /> + + ) +} + +export default VerificationSteps diff --git a/app/src/store.tsx b/app/src/store.tsx index 54aaf5ca..e7e98432 100644 --- a/app/src/store.tsx +++ b/app/src/store.tsx @@ -21,6 +21,7 @@ export interface Developer { environment: IASEnvironment remoteDebugging: RemoteDebuggingState enableProxy: boolean + enableAltPersonFlow: boolean } export interface DismissPersonCredentialOffer { @@ -35,6 +36,7 @@ export interface BCState extends BifoldState { enum DeveloperDispatchAction { UPDATE_ENVIRONMENT = 'developer/updateEnvironment', TOGGLE_PROXY = 'developer/toggleProxy', + TOGGLE_ALT_PERSON_FLOW = 'developer/toggleAltPersonFlow', } enum DismissPersonCredentialOfferDispatchAction { @@ -86,6 +88,7 @@ const developerState: Developer = { enableProxy: false, environment: iasEnvironments[0], remoteDebugging: remoteDebuggingState, + enableAltPersonFlow: false, } const dismissPersonCredentialOfferState: DismissPersonCredentialOffer = { @@ -98,6 +101,7 @@ export enum BCLocalStorageKeys { GenesisTransactions = 'GenesisTransactions', RemoteDebugging = 'RemoteDebugging', EnableProxy = 'EnableProxy', + EnableAltPersonFlow = 'EnableAltPersonFlow', UserDeniedPushNotifications = 'userDeniedPushNotifications', DeviceToken = 'deviceToken', } @@ -144,6 +148,14 @@ const bcReducer = (state: BCState, action: ReducerAction): BCS return { ...state, developer } } + case DeveloperDispatchAction.TOGGLE_ALT_PERSON_FLOW: { + const enableAltPersonFlow: boolean = (action?.payload || []).pop() || false + const developer = { ...state.developer, enableAltPersonFlow } + + PersistentStorage.storeValueForKey(BCLocalStorageKeys.EnableAltPersonFlow, developer.enableAltPersonFlow) + + return { ...state, developer } + } case DismissPersonCredentialOfferDispatchAction.PERSON_CREDENTIAL_OFFER_DISMISSED: { const { personCredentialOfferDismissed } = (action?.payload || []).pop() const dismissPersonCredentialOffer = { ...state.dismissPersonCredentialOffer, personCredentialOfferDismissed } diff --git a/yarn.lock b/yarn.lock index 6655b284..605d7c4f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3253,9 +3253,9 @@ __metadata: languageName: node linkType: hard -"@hyperledger/aries-bifold-core@npm:1.0.0-alpha.342": - version: 1.0.0-alpha.342 - resolution: "@hyperledger/aries-bifold-core@npm:1.0.0-alpha.342" +"@hyperledger/aries-bifold-core@npm:1.0.0-alpha.346": + version: 1.0.0-alpha.346 + resolution: "@hyperledger/aries-bifold-core@npm:1.0.0-alpha.346" peerDependencies: "@credo-ts/anoncreds": 0.5.11 "@credo-ts/askar": 0.5.11 @@ -3330,13 +3330,13 @@ __metadata: uuid: ^9.0.0 bin: bifold: bin/bifold - checksum: 8b5022f770e5c65c6c1394d25b3c91593caadb189fb57abd71e1ce1424f4b7befb0122866e8c0a5ad6a73c1fb1a0bbd5ac4f3409bac4660fe84cd740bb0fda7e + checksum: a7c013326c756cfd2ac1bff7d7c80876b4e66229d08e7a7656744767f7b970dc45ebc77bbf1c29ec43128fcbde03c0687d3a4182b01439a9b102b185813d0460 languageName: node linkType: hard -"@hyperledger/aries-bifold-remote-logs@npm:1.0.0-alpha.342": - version: 1.0.0-alpha.342 - resolution: "@hyperledger/aries-bifold-remote-logs@npm:1.0.0-alpha.342" +"@hyperledger/aries-bifold-remote-logs@npm:1.0.0-alpha.346": + version: 1.0.0-alpha.346 + resolution: "@hyperledger/aries-bifold-remote-logs@npm:1.0.0-alpha.346" peerDependencies: "@credo-ts/core": 0.5.11 axios: ^1.4.0 @@ -3344,43 +3344,43 @@ __metadata: react: ^18.2.0 react-native: ^0.72.5 react-native-logs: ^5.1.0 - checksum: 60b7659db4f0708bea2bfd2e77ddc143db753b3b8e73281673d48af70ed09e8de9018a070499ccd829b3bda472e09305f38b72acd59cc786118044e05edca1f8 + checksum: 58c609703ad6136b209a508855814e354ed0c78e6f87d42cbb6a402dfcb99eb7d22d09dc692519174ea2eaea9818194f5cb7df736f0389e7b8a4fe3cfd787af8 languageName: node linkType: hard -"@hyperledger/aries-bifold-verifier@npm:1.0.0-alpha.342": - version: 1.0.0-alpha.342 - resolution: "@hyperledger/aries-bifold-verifier@npm:1.0.0-alpha.342" +"@hyperledger/aries-bifold-verifier@npm:1.0.0-alpha.346": + version: 1.0.0-alpha.346 + resolution: "@hyperledger/aries-bifold-verifier@npm:1.0.0-alpha.346" peerDependencies: "@credo-ts/anoncreds": 0.5.11 "@credo-ts/core": 0.5.11 "@credo-ts/react-hooks": ^0.6.0 "@hyperledger/anoncreds-shared": 0.2.4 react: ^18.2.0 - checksum: b18be51504dfaf7ea85016d9f5ce1875bbf08a832c11df287c8790879b0a1ef36dc32c32234d3dc5458227db565a24dbb2f6194417882c3dcfb00bf040279077 + checksum: aed520ab96319165d4db0cd115ef546285c92118c82f7de6683323154ce9c1c9433c1d2b17ef7f71b1b10e0712a63d61010ff479c5bee0e4d2604114e14dba4c languageName: node linkType: hard -"@hyperledger/aries-oca@npm:1.0.0-alpha.342": - version: 1.0.0-alpha.342 - resolution: "@hyperledger/aries-oca@npm:1.0.0-alpha.342" +"@hyperledger/aries-oca@npm:1.0.0-alpha.346": + version: 1.0.0-alpha.346 + resolution: "@hyperledger/aries-oca@npm:1.0.0-alpha.346" dependencies: "@credo-ts/anoncreds": "npm:0.5.11" "@credo-ts/core": "npm:0.5.11" axios: "npm:^1.4.0" lodash.startcase: "npm:^4.4.0" react-native-fs: "npm:^2.16.6" - checksum: 861b486e6f9e7c85c41277c6813906d43ab32156269c0da3c8da21273aada9e024737c90031e477c367e3fd1ae4f07be29c724224e24181b176721e3bb53b05b + checksum: 21eca966736e2de09a03349c655fce502b74fc93ce3d78999695ddd835d9eb5ccc9a0b0d35f7270b160a6ae6f2191e665e8b574e16ea5e76fd24fcfe66bc5b84 languageName: node linkType: hard -"@hyperledger/aries-react-native-attestation@npm:1.0.0-alpha.342": - version: 1.0.0-alpha.342 - resolution: "@hyperledger/aries-react-native-attestation@npm:1.0.0-alpha.342" +"@hyperledger/aries-react-native-attestation@npm:1.0.0-alpha.346": + version: 1.0.0-alpha.346 + resolution: "@hyperledger/aries-react-native-attestation@npm:1.0.0-alpha.346" peerDependencies: react: "*" react-native: "*" - checksum: 79ed4b864e267cd5c893e42999827b17472c92dd690ef632cd068ac5544b49426ee37d7e9249c548022dc0ab3174c8cc4157b5801307f35e8311c9bc33be65a9 + checksum: f637a46f8f98e6232aa76aced346ec3146e3cdb1f0d29efaea9b3b6b3f0f9c349f8fa708d0784ed1688a144dacd47cc2008111e972e6ef7d35c36f5830448f24 languageName: node linkType: hard @@ -8291,11 +8291,11 @@ __metadata: "@formatjs/intl-relativetimeformat": "npm:9.3.1" "@hyperledger/anoncreds-react-native": "npm:0.2.4" "@hyperledger/aries-askar-react-native": "npm:0.2.3" - "@hyperledger/aries-bifold-core": "npm:1.0.0-alpha.342" - "@hyperledger/aries-bifold-remote-logs": "npm:1.0.0-alpha.342" - "@hyperledger/aries-bifold-verifier": "npm:1.0.0-alpha.342" - "@hyperledger/aries-oca": "npm:1.0.0-alpha.342" - "@hyperledger/aries-react-native-attestation": "npm:1.0.0-alpha.342" + "@hyperledger/aries-bifold-core": "npm:1.0.0-alpha.346" + "@hyperledger/aries-bifold-remote-logs": "npm:1.0.0-alpha.346" + "@hyperledger/aries-bifold-verifier": "npm:1.0.0-alpha.346" + "@hyperledger/aries-oca": "npm:1.0.0-alpha.346" + "@hyperledger/aries-react-native-attestation": "npm:1.0.0-alpha.346" "@hyperledger/indy-vdr-react-native": "npm:0.2.2" "@hyperledger/indy-vdr-shared": "npm:0.2.2" "@react-native-async-storage/async-storage": "npm:1.15.11"