diff --git a/.env.sample b/.env.sample index de40b461..bdf4bd32 100644 --- a/.env.sample +++ b/.env.sample @@ -9,3 +9,6 @@ OCA_URL=https://raw.githubusercontent.com/credebl/credebl-aries-oca-bundles/rele #BASE_URL PUBLIC_ORG=https://example.com + +#PROOF_TEMPLATE_URL +PROOF_TEMPLATE_URL= \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index 47870bb6..ccec0061 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -81,8 +81,8 @@ android { applicationId "id.credebl.adeya" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 6 - versionName "1.0.3" + versionCode 8 + versionName "1.0.5" missingDimensionStrategy 'react-native-camera', 'general' } diff --git a/app/contexts/configuration.tsx b/app/contexts/configuration.tsx index 56d23c92..8628a294 100644 --- a/app/contexts/configuration.tsx +++ b/app/contexts/configuration.tsx @@ -29,6 +29,7 @@ export interface ConfigurationContext { credentialEmptyList: React.FC developer: React.FC OCABundleResolver: OCABundleResolverType + proofTemplateBaseUrl?: string scan: React.FC useBiometry: React.FC record: React.FC @@ -39,7 +40,7 @@ export interface ConfigurationContext { useCustomNotifications: () => { total: number; notifications: any } connectionTimerDelay?: number autoRedirectConnectionToHome?: boolean - proofRequestTemplates?: Array + proofRequestTemplates?: () => Array enableTours?: boolean enableWalletNaming?: boolean enableBackupWallet?: boolean diff --git a/app/contexts/store.tsx b/app/contexts/store.tsx index 766d4468..c0d4d101 100644 --- a/app/contexts/store.tsx +++ b/app/contexts/store.tsx @@ -34,7 +34,7 @@ export const defaultState: State = { developerModeEnabled: false, biometryPreferencesUpdated: false, useBiometry: false, - useVerifierCapability: false, + useVerifierCapability: true, useConnectionInviterCapability: false, useDevVerifierTemplates: false, walletName: generateRandomWalletName(), diff --git a/app/defaultConfiguration.ts b/app/defaultConfiguration.ts index 9aff1f8c..14d51203 100644 --- a/app/defaultConfiguration.ts +++ b/app/defaultConfiguration.ts @@ -2,7 +2,7 @@ import { BrandingOverlayType, RemoteOCABundleResolver } from '@hyperledger/aries import { Config } from 'react-native-config' import defaultIndyLedgers from '../configs/ledgers/indy' -import { defaultProofRequestTemplates } from '../verifier' +import { useProofRequestTemplates } from '../verifier' import EmptyList from './components/misc/EmptyList' import Record from './components/record/Record' @@ -30,6 +30,7 @@ export const defaultConfiguration: ConfigurationContext = { brandingOverlayType: BrandingOverlayType.Branding10, preLoad: true, }), + proofTemplateBaseUrl: Config.PROOF_TEMPLATE_URL ?? '', scan: Scan, useBiometry: UseBiometry, record: Record, @@ -45,7 +46,7 @@ export const defaultConfiguration: ConfigurationContext = { pageTitle: '', }, useCustomNotifications: useNotifications, - proofRequestTemplates: defaultProofRequestTemplates, + proofRequestTemplates: useProofRequestTemplates, enableTours: false, enableWalletNaming: true, enableBackupWallet: true, diff --git a/app/hooks/proof-request-templates.ts b/app/hooks/proof-request-templates.ts index 9e0edc71..eca7cf74 100644 --- a/app/hooks/proof-request-templates.ts +++ b/app/hooks/proof-request-templates.ts @@ -1,14 +1,36 @@ -import { useMemo } from 'react' +import { useEffect, useState } from 'react' import { ProofRequestTemplate } from '../../verifier' import { useConfiguration } from '../contexts/configuration' +import { applyTemplateMarkers, useRemoteProofBundleResolver } from '../utils/proofBundle' export const useTemplates = (): Array => { - const { proofRequestTemplates } = useConfiguration() - return proofRequestTemplates || [] + const [proofRequestTemplates, setProofRequestTemplates] = useState([]) + const { proofTemplateBaseUrl } = useConfiguration() + const resolver = useRemoteProofBundleResolver(proofTemplateBaseUrl) + const acceptDevCredentials = false + useEffect(() => { + resolver.resolve(acceptDevCredentials).then(templates => { + if (templates) { + setProofRequestTemplates(applyTemplateMarkers(templates)) + } + }) + }, []) + return proofRequestTemplates } export const useTemplate = (templateId: string): ProofRequestTemplate | undefined => { - const { proofRequestTemplates } = useConfiguration() - return useMemo(() => proofRequestTemplates?.find(template => template.id === templateId), [templateId]) + const [proofRequestTemplate, setProofRequestTemplate] = useState(undefined) + const { proofTemplateBaseUrl } = useConfiguration() + const resolver = useRemoteProofBundleResolver(proofTemplateBaseUrl) + const acceptDevCredentials = false + + useEffect(() => { + resolver.resolveById(templateId, acceptDevCredentials).then(template => { + if (template) { + setProofRequestTemplate(applyTemplateMarkers(template)) + } + }) + }, []) + return proofRequestTemplate } diff --git a/app/screens/CredentialOfferAccept.tsx b/app/screens/CredentialOfferAccept.tsx index 26c6c91d..b91e6dd5 100644 --- a/app/screens/CredentialOfferAccept.tsx +++ b/app/screens/CredentialOfferAccept.tsx @@ -147,7 +147,7 @@ const CredentialOfferAccept: React.FC = ({ visible, - {credentialDeliveryStatus === DeliveryStatus.Pending && ( + {credentialDeliveryStatus === DeliveryStatus.Pending && credential.state === CredentialState.RequestSent && (