@procivis/one-react-native-components 0.3.53 → 0.3.62

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 (103) hide show
  1. package/lib/commonjs/components/credential/credential.js +6 -3
  2. package/lib/commonjs/components/credential/credential.js.map +1 -1
  3. package/lib/commonjs/components/history/history-list-item-icon.js +3 -1
  4. package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
  5. package/lib/commonjs/components/history/history-list-screen.js +2 -2
  6. package/lib/commonjs/components/history/history-list-screen.js.map +1 -1
  7. package/lib/commonjs/components/proof-request/select-credential.js +7 -3
  8. package/lib/commonjs/components/proof-request/select-credential.js.map +1 -1
  9. package/lib/commonjs/components/proof-request/share-credential.js +6 -9
  10. package/lib/commonjs/components/proof-request/share-credential.js.map +1 -1
  11. package/lib/commonjs/ui-components/credential/card/credential-card.js +14 -29
  12. package/lib/commonjs/ui-components/credential/card/credential-card.js.map +1 -1
  13. package/lib/commonjs/ui-components/credential/card/credential-details-card.js +27 -28
  14. package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
  15. package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js +10 -6
  16. package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js.map +1 -1
  17. package/lib/commonjs/ui-components/header/header.js +7 -5
  18. package/lib/commonjs/ui-components/header/header.js.map +1 -1
  19. package/lib/commonjs/ui-components/history/history-details.js +3 -1
  20. package/lib/commonjs/ui-components/history/history-details.js.map +1 -1
  21. package/lib/commonjs/ui-components/icons/icons.js +100 -1
  22. package/lib/commonjs/ui-components/icons/icons.js.map +1 -1
  23. package/lib/commonjs/ui-components/searchbar/animated-search-bar.js +10 -8
  24. package/lib/commonjs/ui-components/searchbar/animated-search-bar.js.map +1 -1
  25. package/lib/commonjs/utils/hooks/core/backup.js +4 -3
  26. package/lib/commonjs/utils/hooks/core/backup.js.map +1 -1
  27. package/lib/commonjs/utils/hooks/core/core-init.js +23 -4
  28. package/lib/commonjs/utils/hooks/core/core-init.js.map +1 -1
  29. package/lib/commonjs/utils/hooks/core/credentials.js +4 -4
  30. package/lib/commonjs/utils/hooks/core/credentials.js.map +1 -1
  31. package/lib/commonjs/utils/hooks/core/proofs.js +3 -1
  32. package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
  33. package/lib/commonjs/utils/parsers/credential-sharing.js +18 -1
  34. package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
  35. package/lib/commonjs/utils/parsers/credential.js.map +1 -1
  36. package/lib/module/components/credential/credential.js +5 -3
  37. package/lib/module/components/credential/credential.js.map +1 -1
  38. package/lib/module/components/history/history-list-item-icon.js +3 -1
  39. package/lib/module/components/history/history-list-item-icon.js.map +1 -1
  40. package/lib/module/components/history/history-list-screen.js +2 -2
  41. package/lib/module/components/history/history-list-screen.js.map +1 -1
  42. package/lib/module/components/proof-request/select-credential.js +5 -2
  43. package/lib/module/components/proof-request/select-credential.js.map +1 -1
  44. package/lib/module/components/proof-request/share-credential.js +7 -10
  45. package/lib/module/components/proof-request/share-credential.js.map +1 -1
  46. package/lib/module/ui-components/credential/card/credential-card.js +15 -30
  47. package/lib/module/ui-components/credential/card/credential-card.js.map +1 -1
  48. package/lib/module/ui-components/credential/card/credential-details-card.js +27 -28
  49. package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
  50. package/lib/module/ui-components/credential/card/credential-details-list-item.js +10 -6
  51. package/lib/module/ui-components/credential/card/credential-details-list-item.js.map +1 -1
  52. package/lib/module/ui-components/header/header.js +7 -5
  53. package/lib/module/ui-components/header/header.js.map +1 -1
  54. package/lib/module/ui-components/history/history-details.js +4 -2
  55. package/lib/module/ui-components/history/history-details.js.map +1 -1
  56. package/lib/module/ui-components/icons/icons.js +95 -0
  57. package/lib/module/ui-components/icons/icons.js.map +1 -1
  58. package/lib/module/ui-components/searchbar/animated-search-bar.js +10 -8
  59. package/lib/module/ui-components/searchbar/animated-search-bar.js.map +1 -1
  60. package/lib/module/utils/hooks/core/backup.js +5 -4
  61. package/lib/module/utils/hooks/core/backup.js.map +1 -1
  62. package/lib/module/utils/hooks/core/core-init.js +21 -3
  63. package/lib/module/utils/hooks/core/core-init.js.map +1 -1
  64. package/lib/module/utils/hooks/core/credentials.js +4 -4
  65. package/lib/module/utils/hooks/core/credentials.js.map +1 -1
  66. package/lib/module/utils/hooks/core/proofs.js +3 -1
  67. package/lib/module/utils/hooks/core/proofs.js.map +1 -1
  68. package/lib/module/utils/parsers/credential-sharing.js +18 -1
  69. package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
  70. package/lib/module/utils/parsers/credential.js.map +1 -1
  71. package/lib/typescript/components/proof-request/share-credential.d.ts +4 -5
  72. package/lib/typescript/ui-components/credential/card/credential-card.d.ts +1 -0
  73. package/lib/typescript/ui-components/header/header.d.ts +1 -1
  74. package/lib/typescript/ui-components/icons/icons.d.ts +4 -0
  75. package/lib/typescript/ui-components/searchbar/animated-search-bar.d.ts +2 -2
  76. package/lib/typescript/utils/hooks/core/backup.d.ts +1 -1
  77. package/lib/typescript/utils/hooks/core/core-init.d.ts +4 -1
  78. package/lib/typescript/utils/hooks/core/credentials.d.ts +2 -6
  79. package/lib/typescript/utils/parsers/credential-sharing.d.ts +6 -6
  80. package/lib/typescript/utils/parsers/credential.d.ts +6 -3
  81. package/package.json +3 -3
  82. package/src/components/credential/credential.tsx +4 -2
  83. package/src/components/history/history-list-item-icon.tsx +2 -0
  84. package/src/components/history/history-list-screen.tsx +9 -7
  85. package/src/components/proof-request/select-credential.tsx +4 -2
  86. package/src/components/proof-request/share-credential.tsx +10 -10
  87. package/src/ui-components/credential/card/credential-card.stories.tsx +14 -2
  88. package/src/ui-components/credential/card/credential-card.tsx +16 -23
  89. package/src/ui-components/credential/card/credential-details-card.stories.tsx +14 -4
  90. package/src/ui-components/credential/card/credential-details-card.tsx +32 -34
  91. package/src/ui-components/credential/card/credential-details-list-item.tsx +10 -6
  92. package/src/ui-components/detail/detail.stories.tsx +3 -3
  93. package/src/ui-components/header/header.stories.tsx +8 -6
  94. package/src/ui-components/header/header.tsx +7 -5
  95. package/src/ui-components/history/history-details.tsx +3 -1
  96. package/src/ui-components/icons/icons.tsx +85 -0
  97. package/src/ui-components/searchbar/animated-search-bar.tsx +11 -9
  98. package/src/utils/hooks/core/backup.ts +8 -2
  99. package/src/utils/hooks/core/core-init.ts +28 -2
  100. package/src/utils/hooks/core/credentials.ts +3 -3
  101. package/src/utils/hooks/core/proofs.ts +3 -1
  102. package/src/utils/parsers/credential-sharing.tsx +34 -11
  103. package/src/utils/parsers/credential.ts +8 -4
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeOneCore","require","_reactQuery","_query","_coreContext","_credentialSchemas","_errorCode","_history","PAGE_SIZE","CREDENTIAL_LIST_QUERY_KEY","exports","CREDENTIAL_LIST_PAGED_QUERY_KEY","CREDENTIAL_DETAIL_QUERY_KEY","useCredentials","queryParams","core","organisationId","useONECore","useQuery","getQueryKeyFromCredentialListQueryParams","values","getCredentials","page","pageSize","status","CredentialStateEnum","ACCEPTED","SUSPENDED","REVOKED","keepPreviousData","usePagedCredentials","useInfiniteQuery","pageParam","getNextPageParam","lastPage","allPages","length","totalPages","undefined","useCredentialDetail","credentialId","active","getCredential","enabled","Boolean","useInvitationHandler","queryClient","useQueryClient","useMutation","invitationUrl","transport","handleInvitation","onSuccess","result","invalidateQueries","CREDENTIAL_SCHEMA_LIST_QUERY_KEY","HISTORY_LIST_QUERY_KEY","useCredentialAccept","interactionId","didId","identifierId","keyId","txCode","holderAcceptCredential","useCredentialReject","holderRejectCredential","catch","e","OneError","code","OneErrorCode","OperationNotSupported","useCredentialRevocationCheck","forceRefresh","credentialIds","checkRevocation","useCredentialDelete","deleteCredential","_","removeQueries","useInvalidateCredentialDetails","useInitiateIssuance","request","initiateIssuance","useContinueIssuance","url","continueIssuance"],"sources":["credentials.ts"],"sourcesContent":["import {\n CredentialListQuery,\n CredentialStateEnum,\n InitiateIssuanceRequest,\n InvitationResult,\n OneError,\n} from '@procivis/react-native-one-core';\nimport { useInfiniteQuery, useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { getQueryKeyFromCredentialListQueryParams } from '../../parsers/query';\nimport { Transport } from '../connectivity/connectivity';\nimport { useONECore } from './core-context';\nimport { CREDENTIAL_SCHEMA_LIST_QUERY_KEY } from './credential-schemas';\nimport { OneErrorCode } from './error-code';\nimport { HISTORY_LIST_QUERY_KEY } from './history';\n\nconst PAGE_SIZE = 20;\nexport const CREDENTIAL_LIST_QUERY_KEY = 'credential-list';\nexport const CREDENTIAL_LIST_PAGED_QUERY_KEY = 'credential-list-paged';\nexport const CREDENTIAL_DETAIL_QUERY_KEY = 'credential-detail';\n\nexport const useCredentials = (queryParams?: Partial<CredentialListQuery>) => {\n const { core, organisationId } = useONECore();\n\n return useQuery(\n [CREDENTIAL_LIST_QUERY_KEY, ...getQueryKeyFromCredentialListQueryParams(queryParams)],\n async () => {\n const { values } = await core.getCredentials({\n organisationId,\n page: 0,\n // TODO: workaround pagination for now, until it's supported by UI\n pageSize: 10000,\n status: [CredentialStateEnum.ACCEPTED, CredentialStateEnum.SUSPENDED, CredentialStateEnum.REVOKED],\n ...queryParams,\n });\n return values;\n },\n {\n keepPreviousData: true,\n },\n );\n};\n\nexport const usePagedCredentials = (queryParams?: Partial<CredentialListQuery>) => {\n const { core, organisationId } = useONECore();\n\n return useInfiniteQuery(\n [\n CREDENTIAL_LIST_QUERY_KEY,\n CREDENTIAL_LIST_PAGED_QUERY_KEY,\n ...getQueryKeyFromCredentialListQueryParams(queryParams),\n ],\n ({ pageParam = 0 }) =>\n core.getCredentials({\n organisationId,\n page: pageParam,\n pageSize: PAGE_SIZE,\n status: [CredentialStateEnum.ACCEPTED, CredentialStateEnum.SUSPENDED, CredentialStateEnum.REVOKED],\n ...queryParams,\n }),\n {\n getNextPageParam: (lastPage, allPages) => (allPages.length < lastPage.totalPages ? allPages.length : undefined),\n keepPreviousData: true,\n },\n );\n};\n\nexport const useCredentialDetail = (credentialId: string | undefined, active = true) => {\n const { core } = useONECore();\n\n return useQuery(\n [CREDENTIAL_DETAIL_QUERY_KEY, credentialId],\n () => (credentialId ? core.getCredential(credentialId) : undefined),\n {\n enabled: active && Boolean(credentialId),\n keepPreviousData: true,\n },\n );\n};\n\nexport const useInvitationHandler = () => {\n const queryClient = useQueryClient();\n const { core, organisationId } = useONECore();\n\n return useMutation(\n async ({ invitationUrl, transport }: { invitationUrl: string; transport: Transport }) =>\n core.handleInvitation(invitationUrl, organisationId, [transport]),\n {\n onSuccess: async (result: InvitationResult) => {\n if ('credentialIds' in result) {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_SCHEMA_LIST_QUERY_KEY);\n }\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useCredentialAccept = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n type CredentialAcceptHookParams = {\n didId?: string;\n identifierId?: string;\n interactionId: string;\n keyId?: string;\n txCode?: string;\n };\n\n return useMutation(\n async ({ interactionId, didId, identifierId, keyId, txCode }: CredentialAcceptHookParams) =>\n core.holderAcceptCredential(interactionId, didId, identifierId, keyId, txCode),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useCredentialReject = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (interactionId: string) =>\n core.holderRejectCredential(interactionId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n }),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useCredentialRevocationCheck = (forceRefresh: boolean) => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(async (credentialIds: string[]) => core.checkRevocation(credentialIds, forceRefresh), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useCredentialDelete = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(async (credentialId: string) => core.deleteCredential(credentialId), {\n onSuccess: async (_, credentialId) => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.removeQueries([CREDENTIAL_DETAIL_QUERY_KEY, credentialId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useInvalidateCredentialDetails = () => {\n const queryClient = useQueryClient();\n\n return (credentialId: string | undefined) =>\n queryClient.invalidateQueries([CREDENTIAL_DETAIL_QUERY_KEY, credentialId]);\n};\n\nexport const useInitiateIssuance = () => {\n const queryClient = useQueryClient();\n const { core, organisationId } = useONECore();\n\n return useMutation(\n async (request: Omit<InitiateIssuanceRequest, 'organisationId'>) =>\n core.initiateIssuance({ organisationId, ...request }),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useContinueIssuance = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(async (url: string) => core.continueIssuance(url), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_SCHEMA_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeOneCore","require","_reactQuery","_query","_coreContext","_credentialSchemas","_errorCode","_history","PAGE_SIZE","CREDENTIAL_LIST_QUERY_KEY","exports","CREDENTIAL_LIST_PAGED_QUERY_KEY","CREDENTIAL_DETAIL_QUERY_KEY","useCredentials","queryParams","core","organisationId","useONECore","useQuery","getQueryKeyFromCredentialListQueryParams","values","getCredentials","page","pageSize","status","CredentialStateEnum","ACCEPTED","SUSPENDED","REVOKED","keepPreviousData","usePagedCredentials","useInfiniteQuery","pageParam","getNextPageParam","lastPage","allPages","length","totalPages","undefined","useCredentialDetail","credentialId","active","getCredential","enabled","Boolean","useInvitationHandler","queryClient","useQueryClient","useMutation","request","handleInvitation","onSuccess","result","invalidateQueries","CREDENTIAL_SCHEMA_LIST_QUERY_KEY","HISTORY_LIST_QUERY_KEY","useCredentialAccept","interactionId","didId","identifierId","keyId","txCode","holderAcceptCredential","useCredentialReject","holderRejectCredential","catch","e","OneError","code","OneErrorCode","OperationNotSupported","useCredentialRevocationCheck","forceRefresh","credentialIds","checkRevocation","useCredentialDelete","deleteCredential","_","removeQueries","useInvalidateCredentialDetails","useInitiateIssuance","initiateIssuance","useContinueIssuance","url","continueIssuance"],"sources":["credentials.ts"],"sourcesContent":["import {\n CredentialListQuery,\n CredentialStateEnum,\n HandleInvitationRequest,\n InitiateIssuanceRequest,\n InvitationResult,\n OneError,\n} from '@procivis/react-native-one-core';\nimport { useInfiniteQuery, useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { getQueryKeyFromCredentialListQueryParams } from '../../parsers/query';\nimport { useONECore } from './core-context';\nimport { CREDENTIAL_SCHEMA_LIST_QUERY_KEY } from './credential-schemas';\nimport { OneErrorCode } from './error-code';\nimport { HISTORY_LIST_QUERY_KEY } from './history';\n\nconst PAGE_SIZE = 20;\nexport const CREDENTIAL_LIST_QUERY_KEY = 'credential-list';\nexport const CREDENTIAL_LIST_PAGED_QUERY_KEY = 'credential-list-paged';\nexport const CREDENTIAL_DETAIL_QUERY_KEY = 'credential-detail';\n\nexport const useCredentials = (queryParams?: Partial<CredentialListQuery>) => {\n const { core, organisationId } = useONECore();\n\n return useQuery(\n [CREDENTIAL_LIST_QUERY_KEY, ...getQueryKeyFromCredentialListQueryParams(queryParams)],\n async () => {\n const { values } = await core.getCredentials({\n organisationId,\n page: 0,\n // TODO: workaround pagination for now, until it's supported by UI\n pageSize: 10000,\n status: [CredentialStateEnum.ACCEPTED, CredentialStateEnum.SUSPENDED, CredentialStateEnum.REVOKED],\n ...queryParams,\n });\n return values;\n },\n {\n keepPreviousData: true,\n },\n );\n};\n\nexport const usePagedCredentials = (queryParams?: Partial<CredentialListQuery>) => {\n const { core, organisationId } = useONECore();\n\n return useInfiniteQuery(\n [\n CREDENTIAL_LIST_QUERY_KEY,\n CREDENTIAL_LIST_PAGED_QUERY_KEY,\n ...getQueryKeyFromCredentialListQueryParams(queryParams),\n ],\n ({ pageParam = 0 }) =>\n core.getCredentials({\n organisationId,\n page: pageParam,\n pageSize: PAGE_SIZE,\n status: [CredentialStateEnum.ACCEPTED, CredentialStateEnum.SUSPENDED, CredentialStateEnum.REVOKED],\n ...queryParams,\n }),\n {\n getNextPageParam: (lastPage, allPages) => (allPages.length < lastPage.totalPages ? allPages.length : undefined),\n keepPreviousData: true,\n },\n );\n};\n\nexport const useCredentialDetail = (credentialId: string | undefined, active = true) => {\n const { core } = useONECore();\n\n return useQuery(\n [CREDENTIAL_DETAIL_QUERY_KEY, credentialId],\n () => (credentialId ? core.getCredential(credentialId) : undefined),\n {\n enabled: active && Boolean(credentialId),\n keepPreviousData: true,\n },\n );\n};\n\nexport const useInvitationHandler = () => {\n const queryClient = useQueryClient();\n const { core, organisationId } = useONECore();\n\n return useMutation(\n async (request: Omit<HandleInvitationRequest, 'organisationId'>) =>\n core.handleInvitation({ organisationId, ...request }),\n {\n onSuccess: async (result: InvitationResult) => {\n if ('credentialIds' in result) {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_SCHEMA_LIST_QUERY_KEY);\n }\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useCredentialAccept = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n type CredentialAcceptHookParams = {\n didId?: string;\n identifierId?: string;\n interactionId: string;\n keyId?: string;\n txCode?: string;\n };\n\n return useMutation(\n async ({ interactionId, didId, identifierId, keyId, txCode }: CredentialAcceptHookParams) =>\n core.holderAcceptCredential(interactionId, didId, identifierId, keyId, txCode),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useCredentialReject = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (interactionId: string) =>\n core.holderRejectCredential(interactionId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n }),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useCredentialRevocationCheck = (forceRefresh: boolean) => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(async (credentialIds: string[]) => core.checkRevocation(credentialIds, forceRefresh), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useCredentialDelete = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(async (credentialId: string) => core.deleteCredential(credentialId), {\n onSuccess: async (_, credentialId) => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.removeQueries([CREDENTIAL_DETAIL_QUERY_KEY, credentialId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useInvalidateCredentialDetails = () => {\n const queryClient = useQueryClient();\n\n return (credentialId: string | undefined) =>\n queryClient.invalidateQueries([CREDENTIAL_DETAIL_QUERY_KEY, credentialId]);\n};\n\nexport const useInitiateIssuance = () => {\n const queryClient = useQueryClient();\n const { core, organisationId } = useONECore();\n\n return useMutation(\n async (request: Omit<InitiateIssuanceRequest, 'organisationId'>) =>\n core.initiateIssuance({ organisationId, ...request }),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useContinueIssuance = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(async (url: string) => core.continueIssuance(url), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(CREDENTIAL_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(CREDENTIAL_SCHEMA_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n"],"mappings":"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","ignoreList":[]}
@@ -8,6 +8,7 @@ var _reactNativeOneCore = require("@procivis/react-native-one-core");
8
8
  var _react = require("react");
9
9
  var _reactQuery = require("react-query");
10
10
  var _query = require("../../parsers/query");
11
+ var _reporting = require("../../reporting");
11
12
  var _coreConfig = require("./core-config");
12
13
  var _coreContext = require("./core-context");
13
14
  var _errorCode = require("./error-code");
@@ -66,7 +67,8 @@ const useProofAccept = () => {
66
67
  identifierId,
67
68
  keyId
68
69
  }) => core.holderSubmitProof(interactionId, credentials, didId, identifierId, keyId), {
69
- onError: async () => {
70
+ onError: async err => {
71
+ (0, _reporting.reportException)(err, 'Proof submission failure');
70
72
  await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);
71
73
  },
72
74
  onSuccess: async () => {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeOneCore","require","_react","_reactQuery","_query","_coreConfig","_coreContext","_errorCode","_history","_identifiers","_proofSchemas","PAGE_SIZE","PROOF_DETAIL_QUERY_KEY","exports","PROOF_STATE_QUERY_KEY","PROOF_LIST_QUERY_KEY","useProofDetail","proofId","core","useONECore","useQuery","getProof","undefined","enabled","Boolean","keepPreviousData","useProofState","isPolling","then","proof","state","refetchInterval","useProofUrl","queryClient","useQueryClient","useMutation","request","shareProof","url","onSuccess","invalidateQueries","useProofAccept","interactionId","credentials","didId","identifierId","keyId","holderSubmitProof","onError","HISTORY_LIST_QUERY_KEY","useProofReject","holderRejectProof","catch","e","OneError","code","OneErrorCode","OperationNotSupported","IssuanceProtocol","VerificationProtocol","useProposeProof","organisationId","exchange","proposeProof","useProofDelete","deleteProof","useProofs","queryParams","queryKey","getQueryKeyFromProofListQueryParams","pageParam","getProofs","page","pageSize","useProofCreate","data","createProof","getIdentifierFilterForProofSchema","proofSchema","config","requestedFormats","proofInputSchemas","map","schema","credentialSchema","format","requestedFormatsCapabilities","_config$format$format","capabilities","filter","x","keyAlgorithms","reduce","others","_others$filter","current","verificationKeyAlgorithms","item","includes","keyStorages","_others$filter2","verificationKeyStorages","useProofForSchemaIdWithTransport","proofSchemaId","transport","useProofSchemaDetail","useCoreConfig","identifierFilter","useMemo","identifiers","useIdentifiers","mutateAsync","deleting","setDeleting","useState","setProofIdState","proofIdRef","useRef","proofState","setProofId","useCallback","id","useEffect","ProofStateEnum","CREATED","PENDING","values","length","protocol","OPENID4VP_PROXIMITY_DRAFT00","verifierIdentifierId","useCleanupUnusedProofs","proofs","proofStates","cleaned","setCleaned","forEach","useShareProof","proofUrlProps","sharedProof","setSharedProof","bleAdapterDisabled","error","_error$cause","cause","useRetainProofCheck","runTask","removeQueries","useDeleteProofData","deleteProofClaims","useDeleteAllProofsData","schemaId","proofSchemaIds","ACCEPTED","result","Promise","all","reverse"],"sources":["proofs.ts"],"sourcesContent":["import {\n Config,\n CreateProofRequest,\n IdentifierListQuery,\n OneError,\n PresentationSubmitCredentialRequest,\n ProofListQuery,\n ProofSchema,\n ProofStateEnum,\n ShareProofRequest,\n} from '@procivis/react-native-one-core';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { getQueryKeyFromProofListQueryParams } from '../../parsers/query';\nimport { Transport } from '../connectivity/connectivity';\nimport { useCoreConfig } from './core-config';\nimport { useONECore } from './core-context';\nimport { OneErrorCode } from './error-code';\nimport { HISTORY_LIST_QUERY_KEY } from './history';\nimport { useIdentifiers } from './identifiers';\nimport { useProofSchemaDetail } from './proof-schemas';\n\nconst PAGE_SIZE = 10;\nexport const PROOF_DETAIL_QUERY_KEY = 'proof-detail';\nexport const PROOF_STATE_QUERY_KEY = 'proof-state';\nexport const PROOF_LIST_QUERY_KEY = 'proof-list';\n\nexport const useProofDetail = (proofId: string | undefined) => {\n const { core } = useONECore();\n\n return useQuery([PROOF_DETAIL_QUERY_KEY, proofId], () => (proofId ? core.getProof(proofId) : undefined), {\n enabled: Boolean(proofId),\n keepPreviousData: true,\n });\n};\n\nexport const useProofState = (proofId: string | undefined, isPolling: boolean) => {\n const { core } = useONECore();\n\n return useQuery(\n [PROOF_STATE_QUERY_KEY, proofId],\n () => (proofId ? core.getProof(proofId).then((proof) => proof.state) : undefined),\n {\n enabled: Boolean(proofId),\n refetchInterval: isPolling ? 1000 : false,\n },\n );\n};\n\ntype ProofUrlHookParams = { proofId: string; request?: ShareProofRequest };\n\nexport const useProofUrl = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async ({ proofId, request }: ProofUrlHookParams) =>\n core.shareProof(proofId, request ?? {}).then((proof) => proof.url),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofAccept = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async ({\n interactionId,\n credentials,\n didId,\n identifierId,\n keyId,\n }: {\n credentials: Record<string, PresentationSubmitCredentialRequest>;\n didId?: string;\n identifierId?: string;\n interactionId: string;\n keyId?: string;\n }) => core.holderSubmitProof(interactionId, credentials, didId, identifierId, keyId),\n {\n onError: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofReject = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (interactionId: string) =>\n core.holderRejectProof(interactionId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n }),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport enum IssuanceProtocol {\n OPENID4VCI_DRAFT13 = 'OPENID4VCI_DRAFT13',\n}\n\nexport enum VerificationProtocol {\n ISO_MDL = 'ISO_MDL',\n OPENID4VP_DRAFT20 = 'OPENID4VP_DRAFT20',\n OPENID4VP_DRAFT25 = 'OPENID4VP_DRAFT25',\n OPENID4VP_PROXIMITY_DRAFT00 = 'OPENID4VP_PROXIMITY_DRAFT00',\n SCAN_TO_VERIFY = 'SCAN_TO_VERIFY',\n}\n\nexport const useProposeProof = () => {\n const queryClient = useQueryClient();\n const { core, organisationId } = useONECore();\n\n return useMutation(async (exchange: VerificationProtocol) => core.proposeProof(exchange, organisationId), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useProofDelete = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (proofId: string) => {\n return core.deleteProof(proofId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n });\n },\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofs = (queryParams?: Partial<ProofListQuery>) => {\n const { core, organisationId } = useONECore();\n\n const queryKey = [PROOF_LIST_QUERY_KEY, ...getQueryKeyFromProofListQueryParams(queryParams)];\n\n return useQuery(\n queryKey,\n ({ pageParam = 0 }) =>\n core.getProofs({\n organisationId,\n page: pageParam,\n pageSize: PAGE_SIZE,\n ...queryParams,\n }),\n {\n keepPreviousData: false,\n },\n );\n};\n\nexport const useProofCreate = () => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async (data: CreateProofRequest) => core.createProof(data), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n },\n });\n};\n\nconst getIdentifierFilterForProofSchema = (proofSchema: ProofSchema, config: Config): Partial<IdentifierListQuery> => {\n const requestedFormats = proofSchema.proofInputSchemas.map((schema) => schema.credentialSchema.format);\n const requestedFormatsCapabilities = requestedFormats\n .map((format) => config.format[format]?.capabilities)\n .filter((x) => x);\n\n // key algorithms must be supported by all requested formats\n const keyAlgorithms = requestedFormatsCapabilities.reduce<string[] | undefined>((others, capabilities) => {\n const current = capabilities.verificationKeyAlgorithms;\n return others?.filter((item) => current.includes(item)) ?? current;\n }, undefined);\n\n // key storages must be supported by all requested formats\n const keyStorages = requestedFormatsCapabilities.reduce<string[] | undefined>((others, capabilities) => {\n const current = capabilities.verificationKeyStorages;\n return others?.filter((item) => current.includes(item)) ?? current;\n }, undefined);\n\n return { keyAlgorithms, keyStorages };\n};\n\nexport const useProofForSchemaIdWithTransport = (\n proofSchemaId: string,\n transport: Transport[] | undefined,\n enabled: boolean,\n) => {\n const { data: proofSchema } = useProofSchemaDetail(proofSchemaId, enabled);\n const { data: config } = useCoreConfig();\n\n const identifierFilter = useMemo(\n () => (proofSchema && config ? getIdentifierFilterForProofSchema(proofSchema, config) : undefined),\n [config, proofSchema],\n );\n\n const { data: identifiers } = useIdentifiers(identifierFilter);\n const { mutateAsync: createProof } = useProofCreate();\n const { mutateAsync: deleteProof } = useProofDelete();\n\n const [deleting, setDeleting] = useState(false);\n const [proofId, setProofIdState] = useState<string | undefined>(undefined);\n const proofIdRef = useRef<string>();\n\n const { data: proofState } = useProofState(deleting ? undefined : proofId, enabled);\n\n const setProofId = useCallback((id: string | undefined) => {\n proofIdRef.current = id;\n setProofIdState(id);\n }, []);\n\n useEffect(() => {\n if (!proofIdRef.current) {\n return;\n }\n setDeleting(true);\n deleteProof(proofIdRef.current)\n .then(() => {\n setProofId(undefined);\n setDeleting(false);\n })\n .catch(() => {});\n }, [proofIdRef, deleteProof, proofSchemaId, transport, setProofId]);\n\n useEffect(() => {\n if (enabled) {\n return;\n }\n\n if (proofState !== ProofStateEnum.CREATED && proofState !== ProofStateEnum.PENDING) {\n setProofId(undefined);\n } else {\n setDeleting(true);\n deleteProof(proofIdRef.current || '')\n .then(() => {\n setProofId(undefined);\n setDeleting(false);\n })\n .catch(() => {});\n }\n }, [deleteProof, enabled, proofId, proofState, setProofId]);\n\n useEffect(() => {\n if (\n deleting ||\n !enabled ||\n proofId ||\n !identifiers ||\n !identifierFilter ||\n !identifiers.values.length ||\n !transport ||\n transport.length === 0\n ) {\n return;\n }\n\n createProof({\n protocol: VerificationProtocol.OPENID4VP_PROXIMITY_DRAFT00,\n proofSchemaId,\n transport,\n verifierIdentifierId: identifiers.values[0].id,\n })\n .then((id) => {\n setProofId(id);\n })\n .catch(() => {});\n }, [proofSchemaId, identifiers, identifierFilter, createProof, enabled, transport, proofId, setProofId, deleting]);\n\n return deleting ? undefined : proofId;\n};\n\nexport const useCleanupUnusedProofs = () => {\n const { mutateAsync: deleteProof } = useProofDelete();\n const { data: proofs } = useProofs({\n page: 0,\n pageSize: 100,\n proofStates: [ProofStateEnum.CREATED, ProofStateEnum.PENDING],\n });\n const [cleaned, setCleaned] = useState(false);\n\n useEffect(() => {\n if (cleaned || !proofs) {\n return;\n }\n setCleaned(true);\n proofs.values.forEach((proof) => deleteProof(proof.id));\n }, [cleaned, deleteProof, proofs]);\n};\n\nexport const useShareProof = (proofUrlProps: ProofUrlHookParams | undefined, enabled: boolean) => {\n const { mutateAsync: shareProof } = useProofUrl();\n const { data: proofState } = useProofState(proofUrlProps?.proofId, enabled);\n\n const [sharedProof, setSharedProof] = useState<{\n bleAdapterDisabled: boolean;\n url?: string;\n error?: unknown;\n }>();\n\n // reset when proofId changes or the proof was retracted\n useEffect(() => {\n if (!proofUrlProps?.proofId || proofState === ProofStateEnum.CREATED) {\n setSharedProof(undefined);\n }\n }, [proofUrlProps?.proofId, proofState]);\n\n useEffect(() => {\n if (!proofUrlProps || !enabled || sharedProof) {\n return;\n }\n\n shareProof(proofUrlProps)\n .then((url) => {\n setSharedProof({\n bleAdapterDisabled: false,\n url,\n });\n })\n .catch((error: unknown) => {\n if (error instanceof OneError && error.cause?.includes('BLE adapter not enabled')) {\n setSharedProof({\n bleAdapterDisabled: true,\n });\n } else {\n setSharedProof({ error, bleAdapterDisabled: false });\n }\n });\n }, [enabled, proofUrlProps, shareProof, sharedProof]);\n\n return sharedProof;\n};\n\nexport const useRetainProofCheck = (proofId?: string) => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async () => core.runTask('RETAIN_PROOF_CHECK'), {\n onSuccess: async () => {\n if (proofId) {\n await queryClient.removeQueries([PROOF_DETAIL_QUERY_KEY, proofId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n }\n },\n });\n};\n\nexport const useDeleteProofData = (proofId: string) => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async () => core.deleteProofClaims(proofId), {\n onSuccess: async () => {\n await queryClient.removeQueries([PROOF_DETAIL_QUERY_KEY, proofId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useDeleteAllProofsData = (schemaId: string) => {\n const queryClient = useQueryClient();\n\n const { core, organisationId } = useONECore();\n\n return useMutation(\n async () =>\n core\n .getProofs({\n organisationId,\n page: 0,\n pageSize: 1000,\n proofSchemaIds: [schemaId],\n proofStates: [ProofStateEnum.ACCEPTED],\n })\n .then((result) => Promise.all(result.values.reverse().map((proof) => core.deleteProofClaims(proof.id)))),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeOneCore","require","_react","_reactQuery","_query","_reporting","_coreConfig","_coreContext","_errorCode","_history","_identifiers","_proofSchemas","PAGE_SIZE","PROOF_DETAIL_QUERY_KEY","exports","PROOF_STATE_QUERY_KEY","PROOF_LIST_QUERY_KEY","useProofDetail","proofId","core","useONECore","useQuery","getProof","undefined","enabled","Boolean","keepPreviousData","useProofState","isPolling","then","proof","state","refetchInterval","useProofUrl","queryClient","useQueryClient","useMutation","request","shareProof","url","onSuccess","invalidateQueries","useProofAccept","interactionId","credentials","didId","identifierId","keyId","holderSubmitProof","onError","err","reportException","HISTORY_LIST_QUERY_KEY","useProofReject","holderRejectProof","catch","e","OneError","code","OneErrorCode","OperationNotSupported","IssuanceProtocol","VerificationProtocol","useProposeProof","organisationId","exchange","proposeProof","useProofDelete","deleteProof","useProofs","queryParams","queryKey","getQueryKeyFromProofListQueryParams","pageParam","getProofs","page","pageSize","useProofCreate","data","createProof","getIdentifierFilterForProofSchema","proofSchema","config","requestedFormats","proofInputSchemas","map","schema","credentialSchema","format","requestedFormatsCapabilities","_config$format$format","capabilities","filter","x","keyAlgorithms","reduce","others","_others$filter","current","verificationKeyAlgorithms","item","includes","keyStorages","_others$filter2","verificationKeyStorages","useProofForSchemaIdWithTransport","proofSchemaId","transport","useProofSchemaDetail","useCoreConfig","identifierFilter","useMemo","identifiers","useIdentifiers","mutateAsync","deleting","setDeleting","useState","setProofIdState","proofIdRef","useRef","proofState","setProofId","useCallback","id","useEffect","ProofStateEnum","CREATED","PENDING","values","length","protocol","OPENID4VP_PROXIMITY_DRAFT00","verifierIdentifierId","useCleanupUnusedProofs","proofs","proofStates","cleaned","setCleaned","forEach","useShareProof","proofUrlProps","sharedProof","setSharedProof","bleAdapterDisabled","error","_error$cause","cause","useRetainProofCheck","runTask","removeQueries","useDeleteProofData","deleteProofClaims","useDeleteAllProofsData","schemaId","proofSchemaIds","ACCEPTED","result","Promise","all","reverse"],"sources":["proofs.ts"],"sourcesContent":["import {\n Config,\n CreateProofRequest,\n IdentifierListQuery,\n OneError,\n PresentationSubmitCredentialRequest,\n ProofListQuery,\n ProofSchema,\n ProofStateEnum,\n ShareProofRequest,\n} from '@procivis/react-native-one-core';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { getQueryKeyFromProofListQueryParams } from '../../parsers/query';\nimport { reportException } from '../../reporting';\nimport { Transport } from '../connectivity/connectivity';\nimport { useCoreConfig } from './core-config';\nimport { useONECore } from './core-context';\nimport { OneErrorCode } from './error-code';\nimport { HISTORY_LIST_QUERY_KEY } from './history';\nimport { useIdentifiers } from './identifiers';\nimport { useProofSchemaDetail } from './proof-schemas';\n\nconst PAGE_SIZE = 10;\nexport const PROOF_DETAIL_QUERY_KEY = 'proof-detail';\nexport const PROOF_STATE_QUERY_KEY = 'proof-state';\nexport const PROOF_LIST_QUERY_KEY = 'proof-list';\n\nexport const useProofDetail = (proofId: string | undefined) => {\n const { core } = useONECore();\n\n return useQuery([PROOF_DETAIL_QUERY_KEY, proofId], () => (proofId ? core.getProof(proofId) : undefined), {\n enabled: Boolean(proofId),\n keepPreviousData: true,\n });\n};\n\nexport const useProofState = (proofId: string | undefined, isPolling: boolean) => {\n const { core } = useONECore();\n\n return useQuery(\n [PROOF_STATE_QUERY_KEY, proofId],\n () => (proofId ? core.getProof(proofId).then((proof) => proof.state) : undefined),\n {\n enabled: Boolean(proofId),\n refetchInterval: isPolling ? 1000 : false,\n },\n );\n};\n\ntype ProofUrlHookParams = { proofId: string; request?: ShareProofRequest };\n\nexport const useProofUrl = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async ({ proofId, request }: ProofUrlHookParams) =>\n core.shareProof(proofId, request ?? {}).then((proof) => proof.url),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofAccept = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async ({\n interactionId,\n credentials,\n didId,\n identifierId,\n keyId,\n }: {\n credentials: Record<string, PresentationSubmitCredentialRequest>;\n didId?: string;\n identifierId?: string;\n interactionId: string;\n keyId?: string;\n }) => core.holderSubmitProof(interactionId, credentials, didId, identifierId, keyId),\n {\n onError: async (err) => {\n reportException(err, 'Proof submission failure');\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofReject = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (interactionId: string) =>\n core.holderRejectProof(interactionId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n }),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport enum IssuanceProtocol {\n OPENID4VCI_DRAFT13 = 'OPENID4VCI_DRAFT13',\n}\n\nexport enum VerificationProtocol {\n ISO_MDL = 'ISO_MDL',\n OPENID4VP_DRAFT20 = 'OPENID4VP_DRAFT20',\n OPENID4VP_DRAFT25 = 'OPENID4VP_DRAFT25',\n OPENID4VP_PROXIMITY_DRAFT00 = 'OPENID4VP_PROXIMITY_DRAFT00',\n SCAN_TO_VERIFY = 'SCAN_TO_VERIFY',\n}\n\nexport const useProposeProof = () => {\n const queryClient = useQueryClient();\n const { core, organisationId } = useONECore();\n\n return useMutation(async (exchange: VerificationProtocol) => core.proposeProof(exchange, organisationId), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useProofDelete = () => {\n const queryClient = useQueryClient();\n const { core } = useONECore();\n\n return useMutation(\n async (proofId: string) => {\n return core.deleteProof(proofId).catch((e) => {\n if (e instanceof OneError && e.code === OneErrorCode.OperationNotSupported) {\n return;\n }\n throw e;\n });\n },\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n\nexport const useProofs = (queryParams?: Partial<ProofListQuery>) => {\n const { core, organisationId } = useONECore();\n\n const queryKey = [PROOF_LIST_QUERY_KEY, ...getQueryKeyFromProofListQueryParams(queryParams)];\n\n return useQuery(\n queryKey,\n ({ pageParam = 0 }) =>\n core.getProofs({\n organisationId,\n page: pageParam,\n pageSize: PAGE_SIZE,\n ...queryParams,\n }),\n {\n keepPreviousData: false,\n },\n );\n};\n\nexport const useProofCreate = () => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async (data: CreateProofRequest) => core.createProof(data), {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_LIST_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_STATE_QUERY_KEY);\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n },\n });\n};\n\nconst getIdentifierFilterForProofSchema = (proofSchema: ProofSchema, config: Config): Partial<IdentifierListQuery> => {\n const requestedFormats = proofSchema.proofInputSchemas.map((schema) => schema.credentialSchema.format);\n const requestedFormatsCapabilities = requestedFormats\n .map((format) => config.format[format]?.capabilities)\n .filter((x) => x);\n\n // key algorithms must be supported by all requested formats\n const keyAlgorithms = requestedFormatsCapabilities.reduce<string[] | undefined>((others, capabilities) => {\n const current = capabilities.verificationKeyAlgorithms;\n return others?.filter((item) => current.includes(item)) ?? current;\n }, undefined);\n\n // key storages must be supported by all requested formats\n const keyStorages = requestedFormatsCapabilities.reduce<string[] | undefined>((others, capabilities) => {\n const current = capabilities.verificationKeyStorages;\n return others?.filter((item) => current.includes(item)) ?? current;\n }, undefined);\n\n return { keyAlgorithms, keyStorages };\n};\n\nexport const useProofForSchemaIdWithTransport = (\n proofSchemaId: string,\n transport: Transport[] | undefined,\n enabled: boolean,\n) => {\n const { data: proofSchema } = useProofSchemaDetail(proofSchemaId, enabled);\n const { data: config } = useCoreConfig();\n\n const identifierFilter = useMemo(\n () => (proofSchema && config ? getIdentifierFilterForProofSchema(proofSchema, config) : undefined),\n [config, proofSchema],\n );\n\n const { data: identifiers } = useIdentifiers(identifierFilter);\n const { mutateAsync: createProof } = useProofCreate();\n const { mutateAsync: deleteProof } = useProofDelete();\n\n const [deleting, setDeleting] = useState(false);\n const [proofId, setProofIdState] = useState<string | undefined>(undefined);\n const proofIdRef = useRef<string>();\n\n const { data: proofState } = useProofState(deleting ? undefined : proofId, enabled);\n\n const setProofId = useCallback((id: string | undefined) => {\n proofIdRef.current = id;\n setProofIdState(id);\n }, []);\n\n useEffect(() => {\n if (!proofIdRef.current) {\n return;\n }\n setDeleting(true);\n deleteProof(proofIdRef.current)\n .then(() => {\n setProofId(undefined);\n setDeleting(false);\n })\n .catch(() => {});\n }, [proofIdRef, deleteProof, proofSchemaId, transport, setProofId]);\n\n useEffect(() => {\n if (enabled) {\n return;\n }\n\n if (proofState !== ProofStateEnum.CREATED && proofState !== ProofStateEnum.PENDING) {\n setProofId(undefined);\n } else {\n setDeleting(true);\n deleteProof(proofIdRef.current || '')\n .then(() => {\n setProofId(undefined);\n setDeleting(false);\n })\n .catch(() => {});\n }\n }, [deleteProof, enabled, proofId, proofState, setProofId]);\n\n useEffect(() => {\n if (\n deleting ||\n !enabled ||\n proofId ||\n !identifiers ||\n !identifierFilter ||\n !identifiers.values.length ||\n !transport ||\n transport.length === 0\n ) {\n return;\n }\n\n createProof({\n protocol: VerificationProtocol.OPENID4VP_PROXIMITY_DRAFT00,\n proofSchemaId,\n transport,\n verifierIdentifierId: identifiers.values[0].id,\n })\n .then((id) => {\n setProofId(id);\n })\n .catch(() => {});\n }, [proofSchemaId, identifiers, identifierFilter, createProof, enabled, transport, proofId, setProofId, deleting]);\n\n return deleting ? undefined : proofId;\n};\n\nexport const useCleanupUnusedProofs = () => {\n const { mutateAsync: deleteProof } = useProofDelete();\n const { data: proofs } = useProofs({\n page: 0,\n pageSize: 100,\n proofStates: [ProofStateEnum.CREATED, ProofStateEnum.PENDING],\n });\n const [cleaned, setCleaned] = useState(false);\n\n useEffect(() => {\n if (cleaned || !proofs) {\n return;\n }\n setCleaned(true);\n proofs.values.forEach((proof) => deleteProof(proof.id));\n }, [cleaned, deleteProof, proofs]);\n};\n\nexport const useShareProof = (proofUrlProps: ProofUrlHookParams | undefined, enabled: boolean) => {\n const { mutateAsync: shareProof } = useProofUrl();\n const { data: proofState } = useProofState(proofUrlProps?.proofId, enabled);\n\n const [sharedProof, setSharedProof] = useState<{\n bleAdapterDisabled: boolean;\n url?: string;\n error?: unknown;\n }>();\n\n // reset when proofId changes or the proof was retracted\n useEffect(() => {\n if (!proofUrlProps?.proofId || proofState === ProofStateEnum.CREATED) {\n setSharedProof(undefined);\n }\n }, [proofUrlProps?.proofId, proofState]);\n\n useEffect(() => {\n if (!proofUrlProps || !enabled || sharedProof) {\n return;\n }\n\n shareProof(proofUrlProps)\n .then((url) => {\n setSharedProof({\n bleAdapterDisabled: false,\n url,\n });\n })\n .catch((error: unknown) => {\n if (error instanceof OneError && error.cause?.includes('BLE adapter not enabled')) {\n setSharedProof({\n bleAdapterDisabled: true,\n });\n } else {\n setSharedProof({ error, bleAdapterDisabled: false });\n }\n });\n }, [enabled, proofUrlProps, shareProof, sharedProof]);\n\n return sharedProof;\n};\n\nexport const useRetainProofCheck = (proofId?: string) => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async () => core.runTask('RETAIN_PROOF_CHECK'), {\n onSuccess: async () => {\n if (proofId) {\n await queryClient.removeQueries([PROOF_DETAIL_QUERY_KEY, proofId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n }\n },\n });\n};\n\nexport const useDeleteProofData = (proofId: string) => {\n const queryClient = useQueryClient();\n\n const { core } = useONECore();\n\n return useMutation(async () => core.deleteProofClaims(proofId), {\n onSuccess: async () => {\n await queryClient.removeQueries([PROOF_DETAIL_QUERY_KEY, proofId]);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n });\n};\n\nexport const useDeleteAllProofsData = (schemaId: string) => {\n const queryClient = useQueryClient();\n\n const { core, organisationId } = useONECore();\n\n return useMutation(\n async () =>\n core\n .getProofs({\n organisationId,\n page: 0,\n pageSize: 1000,\n proofSchemaIds: [schemaId],\n proofStates: [ProofStateEnum.ACCEPTED],\n })\n .then((result) => Promise.all(result.values.reverse().map((proof) => core.deleteProofClaims(proof.id)))),\n {\n onSuccess: async () => {\n await queryClient.invalidateQueries(PROOF_DETAIL_QUERY_KEY);\n await queryClient.invalidateQueries(HISTORY_LIST_QUERY_KEY);\n },\n },\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAWA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAEA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AACA,IAAAS,YAAA,GAAAT,OAAA;AACA,IAAAU,aAAA,GAAAV,OAAA;AAEA,MAAMW,SAAS,GAAG,EAAE;AACb,MAAMC,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,GAAG,cAAc;AAC7C,MAAME,qBAAqB,GAAAD,OAAA,CAAAC,qBAAA,GAAG,aAAa;AAC3C,MAAMC,oBAAoB,GAAAF,OAAA,CAAAE,oBAAA,GAAG,YAAY;AAEzC,MAAMC,cAAc,GAAIC,OAA2B,IAAK;EAC7D,MAAM;IAAEC;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAC,oBAAQ,EAAC,CAACR,sBAAsB,EAAEK,OAAO,CAAC,EAAE,MAAOA,OAAO,GAAGC,IAAI,CAACG,QAAQ,CAACJ,OAAO,CAAC,GAAGK,SAAU,EAAE;IACvGC,OAAO,EAAEC,OAAO,CAACP,OAAO,CAAC;IACzBQ,gBAAgB,EAAE;EACpB,CAAC,CAAC;AACJ,CAAC;AAACZ,OAAA,CAAAG,cAAA,GAAAA,cAAA;AAEK,MAAMU,aAAa,GAAGA,CAACT,OAA2B,EAAEU,SAAkB,KAAK;EAChF,MAAM;IAAET;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAC,oBAAQ,EACb,CAACN,qBAAqB,EAAEG,OAAO,CAAC,EAChC,MAAOA,OAAO,GAAGC,IAAI,CAACG,QAAQ,CAACJ,OAAO,CAAC,CAACW,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACC,KAAK,CAAC,GAAGR,SAAU,EACjF;IACEC,OAAO,EAAEC,OAAO,CAACP,OAAO,CAAC;IACzBc,eAAe,EAAEJ,SAAS,GAAG,IAAI,GAAG;EACtC,CACF,CAAC;AACH,CAAC;AAACd,OAAA,CAAAa,aAAA,GAAAA,aAAA;AAIK,MAAMM,WAAW,GAAGA,CAAA,KAAM;EAC/B,MAAMC,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EACpC,MAAM;IAAEhB;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAgB,uBAAW,EAChB,OAAO;IAAElB,OAAO;IAAEmB;EAA4B,CAAC,KAC7ClB,IAAI,CAACmB,UAAU,CAACpB,OAAO,EAAEmB,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC,CAAC,CAACR,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACS,GAAG,CAAC,EACpE;IACEC,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMN,WAAW,CAACO,iBAAiB,CAAC5B,sBAAsB,CAAC;MAC3D,MAAMqB,WAAW,CAACO,iBAAiB,CAAC1B,qBAAqB,CAAC;IAC5D;EACF,CACF,CAAC;AACH,CAAC;AAACD,OAAA,CAAAmB,WAAA,GAAAA,WAAA;AAEK,MAAMS,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMR,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EACpC,MAAM;IAAEhB;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAgB,uBAAW,EAChB,OAAO;IACLO,aAAa;IACbC,WAAW;IACXC,KAAK;IACLC,YAAY;IACZC;EAOF,CAAC,KAAK5B,IAAI,CAAC6B,iBAAiB,CAACL,aAAa,EAAEC,WAAW,EAAEC,KAAK,EAAEC,YAAY,EAAEC,KAAK,CAAC,EACpF;IACEE,OAAO,EAAE,MAAOC,GAAG,IAAK;MACtB,IAAAC,0BAAe,EAACD,GAAG,EAAE,0BAA0B,CAAC;MAChD,MAAMhB,WAAW,CAACO,iBAAiB,CAAC5B,sBAAsB,CAAC;IAC7D,CAAC;IACD2B,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMN,WAAW,CAACO,iBAAiB,CAAC5B,sBAAsB,CAAC;MAC3D,MAAMqB,WAAW,CAACO,iBAAiB,CAACW,+BAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAACtC,OAAA,CAAA4B,cAAA,GAAAA,cAAA;AAEK,MAAMW,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMnB,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EACpC,MAAM;IAAEhB;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAgB,uBAAW,EAChB,MAAOO,aAAqB,IAC1BxB,IAAI,CAACmC,iBAAiB,CAACX,aAAa,CAAC,CAACY,KAAK,CAAEC,CAAC,IAAK;IACjD,IAAIA,CAAC,YAAYC,4BAAQ,IAAID,CAAC,CAACE,IAAI,KAAKC,uBAAY,CAACC,qBAAqB,EAAE;MAC1E;IACF;IACA,MAAMJ,CAAC;EACT,CAAC,CAAC,EACJ;IACEhB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMN,WAAW,CAACO,iBAAiB,CAAC5B,sBAAsB,CAAC;MAC3D,MAAMqB,WAAW,CAACO,iBAAiB,CAACW,+BAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAACtC,OAAA,CAAAuC,cAAA,GAAAA,cAAA;AAAA,IAEUQ,gBAAgB,GAAA/C,OAAA,CAAA+C,gBAAA,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;AAAA,IAIhBC,oBAAoB,GAAAhD,OAAA,CAAAgD,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAQzB,MAAMC,eAAe,GAAGA,CAAA,KAAM;EACnC,MAAM7B,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EACpC,MAAM;IAAEhB,IAAI;IAAE6C;EAAe,CAAC,GAAG,IAAA5C,uBAAU,EAAC,CAAC;EAE7C,OAAO,IAAAgB,uBAAW,EAAC,MAAO6B,QAA8B,IAAK9C,IAAI,CAAC+C,YAAY,CAACD,QAAQ,EAAED,cAAc,CAAC,EAAE;IACxGxB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMN,WAAW,CAACO,iBAAiB,CAACW,+BAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAACtC,OAAA,CAAAiD,eAAA,GAAAA,eAAA;AAEK,MAAMI,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMjC,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EACpC,MAAM;IAAEhB;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAgB,uBAAW,EAChB,MAAOlB,OAAe,IAAK;IACzB,OAAOC,IAAI,CAACiD,WAAW,CAAClD,OAAO,CAAC,CAACqC,KAAK,CAAEC,CAAC,IAAK;MAC5C,IAAIA,CAAC,YAAYC,4BAAQ,IAAID,CAAC,CAACE,IAAI,KAAKC,uBAAY,CAACC,qBAAqB,EAAE;QAC1E;MACF;MACA,MAAMJ,CAAC;IACT,CAAC,CAAC;EACJ,CAAC,EACD;IACEhB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMN,WAAW,CAACO,iBAAiB,CAACzB,oBAAoB,CAAC;MACzD,MAAMkB,WAAW,CAACO,iBAAiB,CAAC1B,qBAAqB,CAAC;MAC1D,MAAMmB,WAAW,CAACO,iBAAiB,CAAC5B,sBAAsB,CAAC;MAC3D,MAAMqB,WAAW,CAACO,iBAAiB,CAACW,+BAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAACtC,OAAA,CAAAqD,cAAA,GAAAA,cAAA;AAEK,MAAME,SAAS,GAAIC,WAAqC,IAAK;EAClE,MAAM;IAAEnD,IAAI;IAAE6C;EAAe,CAAC,GAAG,IAAA5C,uBAAU,EAAC,CAAC;EAE7C,MAAMmD,QAAQ,GAAG,CAACvD,oBAAoB,EAAE,GAAG,IAAAwD,0CAAmC,EAACF,WAAW,CAAC,CAAC;EAE5F,OAAO,IAAAjD,oBAAQ,EACbkD,QAAQ,EACR,CAAC;IAAEE,SAAS,GAAG;EAAE,CAAC,KAChBtD,IAAI,CAACuD,SAAS,CAAC;IACbV,cAAc;IACdW,IAAI,EAAEF,SAAS;IACfG,QAAQ,EAAEhE,SAAS;IACnB,GAAG0D;EACL,CAAC,CAAC,EACJ;IACE5C,gBAAgB,EAAE;EACpB,CACF,CAAC;AACH,CAAC;AAACZ,OAAA,CAAAuD,SAAA,GAAAA,SAAA;AAEK,MAAMQ,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAM3C,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EAEpC,MAAM;IAAEhB;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAgB,uBAAW,EAAC,MAAO0C,IAAwB,IAAK3D,IAAI,CAAC4D,WAAW,CAACD,IAAI,CAAC,EAAE;IAC7EtC,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMN,WAAW,CAACO,iBAAiB,CAACzB,oBAAoB,CAAC;MACzD,MAAMkB,WAAW,CAACO,iBAAiB,CAAC1B,qBAAqB,CAAC;MAC1D,MAAMmB,WAAW,CAACO,iBAAiB,CAAC5B,sBAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAACC,OAAA,CAAA+D,cAAA,GAAAA,cAAA;AAEF,MAAMG,iCAAiC,GAAGA,CAACC,WAAwB,EAAEC,MAAc,KAAmC;EACpH,MAAMC,gBAAgB,GAAGF,WAAW,CAACG,iBAAiB,CAACC,GAAG,CAAEC,MAAM,IAAKA,MAAM,CAACC,gBAAgB,CAACC,MAAM,CAAC;EACtG,MAAMC,4BAA4B,GAAGN,gBAAgB,CAClDE,GAAG,CAAEG,MAAM;IAAA,IAAAE,qBAAA;IAAA,QAAAA,qBAAA,GAAKR,MAAM,CAACM,MAAM,CAACA,MAAM,CAAC,cAAAE,qBAAA,uBAArBA,qBAAA,CAAuBC,YAAY;EAAA,EAAC,CACpDC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAAC;;EAEnB;EACA,MAAMC,aAAa,GAAGL,4BAA4B,CAACM,MAAM,CAAuB,CAACC,MAAM,EAAEL,YAAY,KAAK;IAAA,IAAAM,cAAA;IACxG,MAAMC,OAAO,GAAGP,YAAY,CAACQ,yBAAyB;IACtD,QAAAF,cAAA,GAAOD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEJ,MAAM,CAAEQ,IAAI,IAAKF,OAAO,CAACG,QAAQ,CAACD,IAAI,CAAC,CAAC,cAAAH,cAAA,cAAAA,cAAA,GAAIC,OAAO;EACpE,CAAC,EAAE3E,SAAS,CAAC;;EAEb;EACA,MAAM+E,WAAW,GAAGb,4BAA4B,CAACM,MAAM,CAAuB,CAACC,MAAM,EAAEL,YAAY,KAAK;IAAA,IAAAY,eAAA;IACtG,MAAML,OAAO,GAAGP,YAAY,CAACa,uBAAuB;IACpD,QAAAD,eAAA,GAAOP,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEJ,MAAM,CAAEQ,IAAI,IAAKF,OAAO,CAACG,QAAQ,CAACD,IAAI,CAAC,CAAC,cAAAG,eAAA,cAAAA,eAAA,GAAIL,OAAO;EACpE,CAAC,EAAE3E,SAAS,CAAC;EAEb,OAAO;IAAEuE,aAAa;IAAEQ;EAAY,CAAC;AACvC,CAAC;AAEM,MAAMG,gCAAgC,GAAGA,CAC9CC,aAAqB,EACrBC,SAAkC,EAClCnF,OAAgB,KACb;EACH,MAAM;IAAEsD,IAAI,EAAEG;EAAY,CAAC,GAAG,IAAA2B,kCAAoB,EAACF,aAAa,EAAElF,OAAO,CAAC;EAC1E,MAAM;IAAEsD,IAAI,EAAEI;EAAO,CAAC,GAAG,IAAA2B,yBAAa,EAAC,CAAC;EAExC,MAAMC,gBAAgB,GAAG,IAAAC,cAAO,EAC9B,MAAO9B,WAAW,IAAIC,MAAM,GAAGF,iCAAiC,CAACC,WAAW,EAAEC,MAAM,CAAC,GAAG3D,SAAU,EAClG,CAAC2D,MAAM,EAAED,WAAW,CACtB,CAAC;EAED,MAAM;IAAEH,IAAI,EAAEkC;EAAY,CAAC,GAAG,IAAAC,2BAAc,EAACH,gBAAgB,CAAC;EAC9D,MAAM;IAAEI,WAAW,EAAEnC;EAAY,CAAC,GAAGF,cAAc,CAAC,CAAC;EACrD,MAAM;IAAEqC,WAAW,EAAE9C;EAAY,CAAC,GAAGD,cAAc,CAAC,CAAC;EAErD,MAAM,CAACgD,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAC/C,MAAM,CAACnG,OAAO,EAAEoG,eAAe,CAAC,GAAG,IAAAD,eAAQ,EAAqB9F,SAAS,CAAC;EAC1E,MAAMgG,UAAU,GAAG,IAAAC,aAAM,EAAS,CAAC;EAEnC,MAAM;IAAE1C,IAAI,EAAE2C;EAAW,CAAC,GAAG9F,aAAa,CAACwF,QAAQ,GAAG5F,SAAS,GAAGL,OAAO,EAAEM,OAAO,CAAC;EAEnF,MAAMkG,UAAU,GAAG,IAAAC,kBAAW,EAAEC,EAAsB,IAAK;IACzDL,UAAU,CAACrB,OAAO,GAAG0B,EAAE;IACvBN,eAAe,CAACM,EAAE,CAAC;EACrB,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACN,UAAU,CAACrB,OAAO,EAAE;MACvB;IACF;IACAkB,WAAW,CAAC,IAAI,CAAC;IACjBhD,WAAW,CAACmD,UAAU,CAACrB,OAAO,CAAC,CAC5BrE,IAAI,CAAC,MAAM;MACV6F,UAAU,CAACnG,SAAS,CAAC;MACrB6F,WAAW,CAAC,KAAK,CAAC;IACpB,CAAC,CAAC,CACD7D,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC,EAAE,CAACgE,UAAU,EAAEnD,WAAW,EAAEsC,aAAa,EAAEC,SAAS,EAAEe,UAAU,CAAC,CAAC;EAEnE,IAAAG,gBAAS,EAAC,MAAM;IACd,IAAIrG,OAAO,EAAE;MACX;IACF;IAEA,IAAIiG,UAAU,KAAKK,kCAAc,CAACC,OAAO,IAAIN,UAAU,KAAKK,kCAAc,CAACE,OAAO,EAAE;MAClFN,UAAU,CAACnG,SAAS,CAAC;IACvB,CAAC,MAAM;MACL6F,WAAW,CAAC,IAAI,CAAC;MACjBhD,WAAW,CAACmD,UAAU,CAACrB,OAAO,IAAI,EAAE,CAAC,CAClCrE,IAAI,CAAC,MAAM;QACV6F,UAAU,CAACnG,SAAS,CAAC;QACrB6F,WAAW,CAAC,KAAK,CAAC;MACpB,CAAC,CAAC,CACD7D,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACpB;EACF,CAAC,EAAE,CAACa,WAAW,EAAE5C,OAAO,EAAEN,OAAO,EAAEuG,UAAU,EAAEC,UAAU,CAAC,CAAC;EAE3D,IAAAG,gBAAS,EAAC,MAAM;IACd,IACEV,QAAQ,IACR,CAAC3F,OAAO,IACRN,OAAO,IACP,CAAC8F,WAAW,IACZ,CAACF,gBAAgB,IACjB,CAACE,WAAW,CAACiB,MAAM,CAACC,MAAM,IAC1B,CAACvB,SAAS,IACVA,SAAS,CAACuB,MAAM,KAAK,CAAC,EACtB;MACA;IACF;IAEAnD,WAAW,CAAC;MACVoD,QAAQ,EAAErE,oBAAoB,CAACsE,2BAA2B;MAC1D1B,aAAa;MACbC,SAAS;MACT0B,oBAAoB,EAAErB,WAAW,CAACiB,MAAM,CAAC,CAAC,CAAC,CAACL;IAC9C,CAAC,CAAC,CACC/F,IAAI,CAAE+F,EAAE,IAAK;MACZF,UAAU,CAACE,EAAE,CAAC;IAChB,CAAC,CAAC,CACDrE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;EACpB,CAAC,EAAE,CAACmD,aAAa,EAAEM,WAAW,EAAEF,gBAAgB,EAAE/B,WAAW,EAAEvD,OAAO,EAAEmF,SAAS,EAAEzF,OAAO,EAAEwG,UAAU,EAAEP,QAAQ,CAAC,CAAC;EAElH,OAAOA,QAAQ,GAAG5F,SAAS,GAAGL,OAAO;AACvC,CAAC;AAACJ,OAAA,CAAA2F,gCAAA,GAAAA,gCAAA;AAEK,MAAM6B,sBAAsB,GAAGA,CAAA,KAAM;EAC1C,MAAM;IAAEpB,WAAW,EAAE9C;EAAY,CAAC,GAAGD,cAAc,CAAC,CAAC;EACrD,MAAM;IAAEW,IAAI,EAAEyD;EAAO,CAAC,GAAGlE,SAAS,CAAC;IACjCM,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,GAAG;IACb4D,WAAW,EAAE,CAACV,kCAAc,CAACC,OAAO,EAAED,kCAAc,CAACE,OAAO;EAC9D,CAAC,CAAC;EACF,MAAM,CAACS,OAAO,EAAEC,UAAU,CAAC,GAAG,IAAArB,eAAQ,EAAC,KAAK,CAAC;EAE7C,IAAAQ,gBAAS,EAAC,MAAM;IACd,IAAIY,OAAO,IAAI,CAACF,MAAM,EAAE;MACtB;IACF;IACAG,UAAU,CAAC,IAAI,CAAC;IAChBH,MAAM,CAACN,MAAM,CAACU,OAAO,CAAE7G,KAAK,IAAKsC,WAAW,CAACtC,KAAK,CAAC8F,EAAE,CAAC,CAAC;EACzD,CAAC,EAAE,CAACa,OAAO,EAAErE,WAAW,EAAEmE,MAAM,CAAC,CAAC;AACpC,CAAC;AAACzH,OAAA,CAAAwH,sBAAA,GAAAA,sBAAA;AAEK,MAAMM,aAAa,GAAGA,CAACC,aAA6C,EAAErH,OAAgB,KAAK;EAChG,MAAM;IAAE0F,WAAW,EAAE5E;EAAW,CAAC,GAAGL,WAAW,CAAC,CAAC;EACjD,MAAM;IAAE6C,IAAI,EAAE2C;EAAW,CAAC,GAAG9F,aAAa,CAACkH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE3H,OAAO,EAAEM,OAAO,CAAC;EAE3E,MAAM,CAACsH,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAA1B,eAAQ,EAI3C,CAAC;;EAEJ;EACA,IAAAQ,gBAAS,EAAC,MAAM;IACd,IAAI,EAACgB,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAE3H,OAAO,KAAIuG,UAAU,KAAKK,kCAAc,CAACC,OAAO,EAAE;MACpEgB,cAAc,CAACxH,SAAS,CAAC;IAC3B;EACF,CAAC,EAAE,CAACsH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAE3H,OAAO,EAAEuG,UAAU,CAAC,CAAC;EAExC,IAAAI,gBAAS,EAAC,MAAM;IACd,IAAI,CAACgB,aAAa,IAAI,CAACrH,OAAO,IAAIsH,WAAW,EAAE;MAC7C;IACF;IAEAxG,UAAU,CAACuG,aAAa,CAAC,CACtBhH,IAAI,CAAEU,GAAG,IAAK;MACbwG,cAAc,CAAC;QACbC,kBAAkB,EAAE,KAAK;QACzBzG;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,CACDgB,KAAK,CAAE0F,KAAc,IAAK;MAAA,IAAAC,YAAA;MACzB,IAAID,KAAK,YAAYxF,4BAAQ,KAAAyF,YAAA,GAAID,KAAK,CAACE,KAAK,cAAAD,YAAA,eAAXA,YAAA,CAAa7C,QAAQ,CAAC,yBAAyB,CAAC,EAAE;QACjF0C,cAAc,CAAC;UACbC,kBAAkB,EAAE;QACtB,CAAC,CAAC;MACJ,CAAC,MAAM;QACLD,cAAc,CAAC;UAAEE,KAAK;UAAED,kBAAkB,EAAE;QAAM,CAAC,CAAC;MACtD;IACF,CAAC,CAAC;EACN,CAAC,EAAE,CAACxH,OAAO,EAAEqH,aAAa,EAAEvG,UAAU,EAAEwG,WAAW,CAAC,CAAC;EAErD,OAAOA,WAAW;AACpB,CAAC;AAAChI,OAAA,CAAA8H,aAAA,GAAAA,aAAA;AAEK,MAAMQ,mBAAmB,GAAIlI,OAAgB,IAAK;EACvD,MAAMgB,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EAEpC,MAAM;IAAEhB;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAgB,uBAAW,EAAC,YAAYjB,IAAI,CAACkI,OAAO,CAAC,oBAAoB,CAAC,EAAE;IACjE7G,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,IAAItB,OAAO,EAAE;QACX,MAAMgB,WAAW,CAACoH,aAAa,CAAC,CAACzI,sBAAsB,EAAEK,OAAO,CAAC,CAAC;QAClE,MAAMgB,WAAW,CAACO,iBAAiB,CAACW,+BAAsB,CAAC;MAC7D;IACF;EACF,CAAC,CAAC;AACJ,CAAC;AAACtC,OAAA,CAAAsI,mBAAA,GAAAA,mBAAA;AAEK,MAAMG,kBAAkB,GAAIrI,OAAe,IAAK;EACrD,MAAMgB,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EAEpC,MAAM;IAAEhB;EAAK,CAAC,GAAG,IAAAC,uBAAU,EAAC,CAAC;EAE7B,OAAO,IAAAgB,uBAAW,EAAC,YAAYjB,IAAI,CAACqI,iBAAiB,CAACtI,OAAO,CAAC,EAAE;IAC9DsB,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMN,WAAW,CAACoH,aAAa,CAAC,CAACzI,sBAAsB,EAAEK,OAAO,CAAC,CAAC;MAClE,MAAMgB,WAAW,CAACO,iBAAiB,CAACW,+BAAsB,CAAC;IAC7D;EACF,CAAC,CAAC;AACJ,CAAC;AAACtC,OAAA,CAAAyI,kBAAA,GAAAA,kBAAA;AAEK,MAAME,sBAAsB,GAAIC,QAAgB,IAAK;EAC1D,MAAMxH,WAAW,GAAG,IAAAC,0BAAc,EAAC,CAAC;EAEpC,MAAM;IAAEhB,IAAI;IAAE6C;EAAe,CAAC,GAAG,IAAA5C,uBAAU,EAAC,CAAC;EAE7C,OAAO,IAAAgB,uBAAW,EAChB,YACEjB,IAAI,CACDuD,SAAS,CAAC;IACTV,cAAc;IACdW,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,IAAI;IACd+E,cAAc,EAAE,CAACD,QAAQ,CAAC;IAC1BlB,WAAW,EAAE,CAACV,kCAAc,CAAC8B,QAAQ;EACvC,CAAC,CAAC,CACD/H,IAAI,CAAEgI,MAAM,IAAKC,OAAO,CAACC,GAAG,CAACF,MAAM,CAAC5B,MAAM,CAAC+B,OAAO,CAAC,CAAC,CAAC3E,GAAG,CAAEvD,KAAK,IAAKX,IAAI,CAACqI,iBAAiB,CAAC1H,KAAK,CAAC8F,EAAE,CAAC,CAAC,CAAC,CAAC,EAC5G;IACEpF,SAAS,EAAE,MAAAA,CAAA,KAAY;MACrB,MAAMN,WAAW,CAACO,iBAAiB,CAAC5B,sBAAsB,CAAC;MAC3D,MAAMqB,WAAW,CAACO,iBAAiB,CAACW,+BAAsB,CAAC;IAC7D;EACF,CACF,CAAC;AACH,CAAC;AAACtC,OAAA,CAAA2I,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -82,7 +82,13 @@ const spreadClaims = (claims, parentClaimPath = '') => {
82
82
  };
83
83
  const getDisplayedAttributes = (request, validityState, credential, selectiveDisclosureSupported, selectedFields) => {
84
84
  const claims = credential ? spreadClaims(credential.claims) : undefined;
85
- return request.fields.map(field => {
85
+ let fields = request.fields;
86
+ if (credential) {
87
+ const fieldsWithNoKeyMapping = request.fields.filter(field => !(credential.id in field.keyMap));
88
+ const fullyNestedFields = getFullyNestedFields(request.fields, credential.id);
89
+ fields = [...fieldsWithNoKeyMapping, ...fullyNestedFields];
90
+ }
91
+ return fields.map(field => {
86
92
  const selected = !field.required && (selectedFields === null || selectedFields === void 0 ? void 0 : selectedFields.includes(field.id));
87
93
  const claim = credential ? claims === null || claims === void 0 ? void 0 : claims.find(({
88
94
  key
@@ -99,6 +105,17 @@ const getDisplayedAttributes = (request, validityState, credential, selectiveDis
99
105
  };
100
106
  });
101
107
  };
108
+ const getFullyNestedFields = (fields, credentialId) => {
109
+ const allKeys = fields.filter(field => credentialId in field.keyMap).map(field => field.keyMap[credentialId]);
110
+ return fields.map(field => ({
111
+ field,
112
+ key: field.keyMap[credentialId]
113
+ })).filter(({
114
+ key
115
+ }) => key && allKeys.every(k => !k.startsWith(`${key}/`))).map(({
116
+ field
117
+ }) => field);
118
+ };
102
119
  const shareCredentialCardAttributeFromClaim = (id, config, testID, labels, claim, field) => {
103
120
  var _field$name$split$pop, _field$name, _field$name2;
104
121
  if (claim) {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_credential","_icons","_testID","_credential2","e","__esModule","default","validityCheckedCardFromCredential","credential","invalidLVVC","expanded","multipleCredentialsAvailable","config","notice","testID","labels","credentialHeaderDetail","credentialDetailErrorColor","credentialDetailPrimary","revoked","credentialDetailTestID","concatTestID","multipleCredentials","statusIcon","CredentialWarningIcon","card","getCredentialCardPropsFromCredential","claims","header","exports","missingCredentialCardFromRequest","request","_request$name","cardImage","undefined","color","missingCredential","credentialName","name","id","getAttributeSelectorStatus","field","validityState","claim","selected","ValidityState","Valid","SelectorStatus","Rejected","required","Required","Disabled","SelectedCheckmark","Empty","spreadClaims","parentClaimPath","reduce","acc","result","Array","isArray","value","claimPath","key","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","fields","map","includes","find","keyMap","status","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","detailsCardAttributeFromClaim","split","pop","path","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","Selector","isObject","attributes","length","values","rightAccessory","_attribute$attributes","nested","nestedAttribute","shareCredentialCardFromCredential","_credential$issuer","_credential$issuer2","supportsSelectiveDisclosure","issuer","text","selectiveDisclosureNotice","noticeIcon","CredentialNoticeWarningIcon","cardTestId","getValidityState","displayedAttributes","index","nestAttributes","selectCredentialCardAttributeFromClaim","RequiredAttributeIcon","selectCredentialCardFromCredential","_credential$issuer3","SelectedRadio","cardProps"],"sources":["credential-sharing.tsx"],"sourcesContent":["import {\n Claim,\n Config,\n CredentialDetail,\n PresentationDefinitionField,\n PresentationDefinitionRequestedCredential,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardProps,\n CredentialDetailsCardProps,\n CredentialHeaderProps,\n Selector,\n SelectorStatus,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialNoticeWarningIcon, CredentialWarningIcon, RequiredAttributeIcon } from '../../ui-components/icons';\nimport { concatTestID } from '../testID';\nimport {\n CardLabels,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n getValidityState,\n nestAttributes,\n supportsSelectiveDisclosure,\n ValidityState,\n} from './credential';\n\nexport const validityCheckedCardFromCredential = (\n credential: CredentialDetail,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID'> => {\n let credentialHeaderDetail:\n | Pick<\n CredentialHeaderProps,\n | 'credentialDetailPrimary'\n | 'credentialDetailSecondary'\n | 'credentialDetailErrorColor'\n | 'credentialDetailTestID'\n | 'statusIcon'\n >\n | undefined;\n if (invalidLVVC) {\n credentialHeaderDetail = {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.revoked,\n credentialDetailTestID: concatTestID(testID, 'header.invalid'),\n };\n } else if (!expanded && multipleCredentialsAvailable) {\n credentialHeaderDetail = {\n credentialDetailPrimary: labels.multipleCredentials,\n credentialDetailTestID: concatTestID(testID, 'header.multiple'),\n statusIcon: CredentialWarningIcon,\n };\n }\n\n const card = getCredentialCardPropsFromCredential(credential, credential.claims, config, notice, testID, labels);\n return {\n ...card,\n header: {\n ...card.header,\n ...credentialHeaderDetail,\n },\n };\n};\n\nexport const missingCredentialCardFromRequest = (\n request: PresentationDefinitionRequestedCredential,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style'> => {\n return {\n cardImage: undefined,\n color: undefined,\n testID,\n header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: request.name ?? request.id,\n statusIcon: CredentialWarningIcon,\n },\n ...notice,\n };\n};\n\ninterface DisplayedAttribute {\n claim?: Claim;\n field?: PresentationDefinitionField;\n id: string;\n selected?: boolean;\n status: SelectorStatus;\n}\n\nconst getAttributeSelectorStatus = (\n field: PresentationDefinitionField,\n validityState: ValidityState,\n credential?: CredentialDetail,\n claim?: Claim,\n selected?: boolean,\n): SelectorStatus => {\n if (!credential || validityState !== ValidityState.Valid) {\n return SelectorStatus.Rejected;\n }\n if (field.required) {\n if (claim) {\n return SelectorStatus.Required;\n } else {\n return SelectorStatus.Rejected;\n }\n }\n if (!claim) {\n return SelectorStatus.Disabled;\n }\n return selected ? SelectorStatus.SelectedCheckmark : SelectorStatus.Empty;\n};\n\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: Claim[], parentClaimPath = ''): Claim[] => {\n return claims.reduce((acc, claim) => {\n const result = [claim];\n if (Array.isArray(claim.value)) {\n const claimPath = parentClaimPath ? `${parentClaimPath}/${claim.key}` : claim.key;\n result.push(...spreadClaims(claim.value, claimPath));\n }\n return [...acc, ...result];\n }, [] as Claim[]);\n};\n\nconst getDisplayedAttributes = (\n request: PresentationDefinitionRequestedCredential,\n validityState: ValidityState,\n credential?: CredentialDetail,\n selectiveDisclosureSupported?: boolean,\n selectedFields?: string[],\n): DisplayedAttribute[] => {\n const claims = credential ? spreadClaims(credential.claims) : undefined;\n\n return request.fields.map((field) => {\n const selected = !field.required && selectedFields?.includes(field.id);\n const claim =\n credential ?\n claims?.find(({ key }) => {\n return key === field.keyMap[credential.id];\n }) : undefined;\n const status = selectiveDisclosureSupported === false ? SelectorStatus.Required : getAttributeSelectorStatus(field, validityState, credential, claim, selected);\n return { claim, field, id: field.id, selected, status };\n });\n};\n\nexport const shareCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: Claim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n if (claim) {\n return { ...detailsCardAttributeFromClaim(claim, config, testID), id };\n }\n return {\n id,\n name: field?.name?.split('/').pop() ?? id,\n path: field?.name ?? id,\n value: labels.missingAttribute,\n valueErrorColor: true,\n };\n};\n\n// Will propagate the attribute status (right accessory + selected?) for all nested attributes\n// Note: This function MUTATES the input attribute\nconst setStatusForNestedObjectOrArrayFields = (\n attribute: CredentialAttribute,\n status?: SelectorStatus,\n disabled?: boolean,\n) => {\n const accessory = status && <Selector status={status} />;\n const isObject = attribute.attributes && attribute.attributes.length > 0;\n const isArray = attribute.values && attribute.values.length > 0;\n\n // If the attribute is not an object or array, we update the attribute and return\n if (!isObject && !isArray) {\n attribute.rightAccessory = accessory;\n attribute.disabled = disabled;\n return attribute;\n }\n\n // The object can be optional (tappable radio-checkmark), or required (checkmark)\n if (status === SelectorStatus.SelectedCheckmark || status === SelectorStatus.Empty) {\n // If it's a selectable object, the accessory is rendered next to the object title,\n // The nested attributes have no accessory, and can not be selected\n attribute.rightAccessory = accessory;\n setStatusForNestedObjectOrArrayFields(attribute, undefined, true);\n } else {\n const nested = attribute.attributes ?? attribute.values;\n // If the object is required / rejected, the accessory is rendered next to each nested attribute (except other object titles)\n // all fields are disabled\n for (const nestedAttribute of nested) {\n setStatusForNestedObjectOrArrayFields(nestedAttribute, status, true);\n }\n }\n};\n\nexport type ShareCredentialCardLabels = CardLabels & {\n selectiveDisclosureNotice: string;\n missingAttribute: string;\n missingCredential: string;\n multipleCredentials: string;\n};\n\nexport const shareCredentialCardFromCredential = (\n credential: CredentialDetail | undefined,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n request: PresentationDefinitionRequestedCredential,\n selectedFields: string[] | undefined,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialDetailsCardProps, 'expanded'> => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n credential,\n invalidLVVC,\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromRequest(request, notice, cardTestId, labels);\n const validityState = getValidityState(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n );\n const displayedAttributes = getDisplayedAttributes(\n request,\n validityState,\n credential,\n selectiveDisclosureSupported,\n selectedFields,\n );\n\n const attributes: CredentialAttribute[] = displayedAttributes.map(({ claim, field, id, selected, status }, index) => {\n const disabled = !credential || !field || field.required || !claim;\n const attribute: CredentialAttribute = {\n ...shareCredentialCardAttributeFromClaim(\n id,\n config,\n concatTestID(testID, 'attribute', `${index}`),\n labels,\n claim,\n field,\n ),\n selected,\n };\n\n setStatusForNestedObjectOrArrayFields(attribute, status, disabled);\n return attribute;\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n\nexport const selectCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: Claim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n const attribute = shareCredentialCardAttributeFromClaim(id, config, testID, labels, claim, field);\n if (!claim) {\n return attribute;\n }\n return {\n ...attribute,\n rightAccessory: RequiredAttributeIcon,\n };\n};\n\nexport const selectCredentialCardFromCredential = (\n credential: CredentialDetail,\n selected: boolean,\n request: PresentationDefinitionRequestedCredential,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialDetailsCardProps, 'expanded'> => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const rightAccessory = <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n credential,\n credential.claims,\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n const attributes: CredentialAttribute[] = request.fields.map((field) => {\n const claim = spreadClaims(credential.claims).find(({ key }) => {\n return key === field.keyMap[credential.id];\n });\n\n const attribute = selectCredentialCardAttributeFromClaim(field.id, config, testID, labels, claim, field);\n return {\n ...attribute,\n rightAccessory: (\n <Selector status={field.required && !claim ? SelectorStatus.Rejected : SelectorStatus.Required} />\n ),\n };\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_credential","_icons","_testID","_credential2","e","__esModule","default","validityCheckedCardFromCredential","credential","invalidLVVC","expanded","multipleCredentialsAvailable","config","notice","testID","labels","credentialHeaderDetail","credentialDetailErrorColor","credentialDetailPrimary","revoked","credentialDetailTestID","concatTestID","multipleCredentials","statusIcon","CredentialWarningIcon","card","getCredentialCardPropsFromCredential","claims","header","exports","missingCredentialCardFromRequest","request","_request$name","cardImage","undefined","color","missingCredential","credentialName","name","id","getAttributeSelectorStatus","field","validityState","claim","selected","ValidityState","Valid","SelectorStatus","Rejected","required","Required","Disabled","SelectedCheckmark","Empty","spreadClaims","parentClaimPath","reduce","acc","result","Array","isArray","value","claimPath","key","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","fields","fieldsWithNoKeyMapping","filter","keyMap","fullyNestedFields","getFullyNestedFields","map","includes","find","status","credentialId","allKeys","every","k","startsWith","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","detailsCardAttributeFromClaim","split","pop","path","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","Selector","isObject","attributes","length","values","rightAccessory","_attribute$attributes","nested","nestedAttribute","shareCredentialCardFromCredential","_credential$issuer","_credential$issuer2","supportsSelectiveDisclosure","issuer","text","selectiveDisclosureNotice","noticeIcon","CredentialNoticeWarningIcon","cardTestId","getValidityState","displayedAttributes","index","nestAttributes","selectCredentialCardAttributeFromClaim","RequiredAttributeIcon","selectCredentialCardFromCredential","_credential$issuer3","SelectedRadio","cardProps"],"sources":["credential-sharing.tsx"],"sourcesContent":["import {\n Claim,\n Config,\n CredentialDetail,\n PresentationDefinitionField,\n PresentationDefinitionRequestedCredential,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardProps,\n CredentialHeaderProps,\n Selector,\n SelectorStatus,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialNoticeWarningIcon, CredentialWarningIcon, RequiredAttributeIcon } from '../../ui-components/icons';\nimport { concatTestID } from '../testID';\nimport {\n CardLabels,\n CredentialDetailsCardPropsWithoutWidth,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n getValidityState,\n nestAttributes,\n supportsSelectiveDisclosure,\n ValidityState,\n} from './credential';\n\nexport const validityCheckedCardFromCredential = (\n credential: CredentialDetail,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID' | 'width'> => {\n let credentialHeaderDetail:\n | Pick<\n CredentialHeaderProps,\n | 'credentialDetailPrimary'\n | 'credentialDetailSecondary'\n | 'credentialDetailErrorColor'\n | 'credentialDetailTestID'\n | 'statusIcon'\n >\n | undefined;\n if (invalidLVVC) {\n credentialHeaderDetail = {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.revoked,\n credentialDetailTestID: concatTestID(testID, 'header.invalid'),\n };\n } else if (!expanded && multipleCredentialsAvailable) {\n credentialHeaderDetail = {\n credentialDetailPrimary: labels.multipleCredentials,\n credentialDetailTestID: concatTestID(testID, 'header.multiple'),\n statusIcon: CredentialWarningIcon,\n };\n }\n\n const card = getCredentialCardPropsFromCredential(credential, credential.claims, config, notice, testID, labels);\n return {\n ...card,\n header: {\n ...card.header,\n ...credentialHeaderDetail,\n },\n };\n};\n\nexport const missingCredentialCardFromRequest = (\n request: PresentationDefinitionRequestedCredential,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n return {\n cardImage: undefined,\n color: undefined,\n testID,\n header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: request.name ?? request.id,\n statusIcon: CredentialWarningIcon,\n },\n ...notice,\n };\n};\n\ninterface DisplayedAttribute {\n claim?: Claim;\n field?: PresentationDefinitionField;\n id: string;\n selected?: boolean;\n status: SelectorStatus;\n}\n\nconst getAttributeSelectorStatus = (\n field: PresentationDefinitionField,\n validityState: ValidityState,\n credential?: CredentialDetail,\n claim?: Claim,\n selected?: boolean,\n): SelectorStatus => {\n if (!credential || validityState !== ValidityState.Valid) {\n return SelectorStatus.Rejected;\n }\n if (field.required) {\n if (claim) {\n return SelectorStatus.Required;\n } else {\n return SelectorStatus.Rejected;\n }\n }\n if (!claim) {\n return SelectorStatus.Disabled;\n }\n return selected ? SelectorStatus.SelectedCheckmark : SelectorStatus.Empty;\n};\n\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: Claim[], parentClaimPath = ''): Claim[] => {\n return claims.reduce((acc, claim) => {\n const result = [claim];\n if (Array.isArray(claim.value)) {\n const claimPath = parentClaimPath ? `${parentClaimPath}/${claim.key}` : claim.key;\n result.push(...spreadClaims(claim.value, claimPath));\n }\n return [...acc, ...result];\n }, [] as Claim[]);\n};\n\nconst getDisplayedAttributes = (\n request: PresentationDefinitionRequestedCredential,\n validityState: ValidityState,\n credential?: CredentialDetail,\n selectiveDisclosureSupported?: boolean,\n selectedFields?: string[],\n): DisplayedAttribute[] => {\n const claims = credential ? spreadClaims(credential.claims) : undefined;\n\n let fields = request.fields;\n if (credential) {\n const fieldsWithNoKeyMapping = request.fields.filter((field) => !(credential.id in field.keyMap));\n const fullyNestedFields = getFullyNestedFields(request.fields, credential.id);\n\n fields = [...fieldsWithNoKeyMapping, ...fullyNestedFields];\n }\n\n return fields.map((field) => {\n const selected = !field.required && selectedFields?.includes(field.id);\n const claim = credential\n ? claims?.find(({ key }) => {\n return key === field.keyMap[credential.id];\n })\n : undefined;\n const status =\n selectiveDisclosureSupported === false\n ? SelectorStatus.Required\n : getAttributeSelectorStatus(field, validityState, credential, claim, selected);\n return { claim, field, id: field.id, selected, status };\n });\n};\n\nconst getFullyNestedFields = (\n fields: PresentationDefinitionRequestedCredential['fields'],\n credentialId: CredentialDetail['id'],\n) => {\n const allKeys = fields.filter((field) => credentialId in field.keyMap).map((field) => field.keyMap[credentialId]);\n\n return fields\n .map((field) => ({ field, key: field.keyMap[credentialId] }))\n .filter(({ key }) => key && allKeys.every((k) => !k.startsWith(`${key}/`)))\n .map(({ field }) => field);\n};\n\nexport const shareCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: Claim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n if (claim) {\n return { ...detailsCardAttributeFromClaim(claim, config, testID), id };\n }\n return {\n id,\n name: field?.name?.split('/').pop() ?? id,\n path: field?.name ?? id,\n value: labels.missingAttribute,\n valueErrorColor: true,\n };\n};\n\n// Will propagate the attribute status (right accessory + selected?) for all nested attributes\n// Note: This function MUTATES the input attribute\nconst setStatusForNestedObjectOrArrayFields = (\n attribute: CredentialAttribute,\n status?: SelectorStatus,\n disabled?: boolean,\n) => {\n const accessory = status && <Selector status={status} />;\n const isObject = attribute.attributes && attribute.attributes.length > 0;\n const isArray = attribute.values && attribute.values.length > 0;\n\n // If the attribute is not an object or array, we update the attribute and return\n if (!isObject && !isArray) {\n attribute.rightAccessory = accessory;\n attribute.disabled = disabled;\n return attribute;\n }\n\n // The object can be optional (tappable radio-checkmark), or required (checkmark)\n if (status === SelectorStatus.SelectedCheckmark || status === SelectorStatus.Empty) {\n // If it's a selectable object, the accessory is rendered next to the object title,\n // The nested attributes have no accessory, and can not be selected\n attribute.rightAccessory = accessory;\n setStatusForNestedObjectOrArrayFields(attribute, undefined, true);\n } else {\n const nested = attribute.attributes ?? attribute.values;\n // If the object is required / rejected, the accessory is rendered next to each nested attribute (except other object titles)\n // all fields are disabled\n for (const nestedAttribute of nested) {\n setStatusForNestedObjectOrArrayFields(nestedAttribute, status, true);\n }\n }\n};\n\nexport type ShareCredentialCardLabels = CardLabels & {\n selectiveDisclosureNotice: string;\n missingAttribute: string;\n missingCredential: string;\n multipleCredentials: string;\n};\n\nexport const shareCredentialCardFromCredential = (\n credential: CredentialDetail | undefined,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n request: PresentationDefinitionRequestedCredential,\n selectedFields: string[] | undefined,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n credential,\n invalidLVVC,\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromRequest(request, notice, cardTestId, labels);\n const validityState = getValidityState(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n );\n const displayedAttributes = getDisplayedAttributes(\n request,\n validityState,\n credential,\n selectiveDisclosureSupported,\n selectedFields,\n );\n\n const attributes: CredentialAttribute[] = displayedAttributes.map(({ claim, field, id, selected, status }, index) => {\n const disabled = !credential || !field || field.required || !claim;\n const attribute: CredentialAttribute = {\n ...shareCredentialCardAttributeFromClaim(\n id,\n config,\n concatTestID(testID, 'attribute', `${index}`),\n labels,\n claim,\n field,\n ),\n selected,\n };\n\n setStatusForNestedObjectOrArrayFields(attribute, status, disabled);\n return attribute;\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n\nexport const selectCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: Claim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n const attribute = shareCredentialCardAttributeFromClaim(id, config, testID, labels, claim, field);\n if (!claim) {\n return attribute;\n }\n return {\n ...attribute,\n rightAccessory: RequiredAttributeIcon,\n };\n};\n\nexport const selectCredentialCardFromCredential = (\n credential: CredentialDetail,\n selected: boolean,\n request: PresentationDefinitionRequestedCredential,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const rightAccessory = <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n credential,\n credential.claims,\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n const attributes: CredentialAttribute[] = request.fields.map((field) => {\n const claim = spreadClaims(credential.claims).find(({ key }) => {\n return key === field.keyMap[credential.id];\n });\n\n const attribute = selectCredentialCardAttributeFromClaim(field.id, config, testID, labels, claim, field);\n return {\n ...attribute,\n rightAccessory: (\n <Selector status={field.required && !claim ? SelectorStatus.Rejected : SelectorStatus.Required} />\n ),\n };\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeOneCore","require","_icons","_date","_testID","_credentialImages","ValidityState","exports","getValidityState","credential","state","CredentialStateEnum","REVOKED","Revoked","SUSPENDED","Suspended","Valid","supportsSelectiveDisclosure","config","_formatConfig$capabil","formatConfig","format","schema","Boolean","capabilities","features","includes","FormatFeatureEnum","SelectiveDisclosure","undefined","findClaimByPathParts","path","claims","length","first","second","rest","claim","find","c","key","dataType","DataTypeEnum","Object","value","findClaimByPath","split","formatCredentialDetail","testID","_attributeValue$value","attributeValue","detailsCardAttributeValueFromClaim","hasMsoValidityIssues","mdocMsoValidity","mdocMsoValidityIssue","nextUpdate","Date","cardHeaderFromCredential","labels","_formatDateTimeLocali","_credential$issuanceD","_layoutProperties$log","_layoutProperties$log2","_layoutProperties$log3","credentialDetailPrimary","formatDateTimeLocalized","issuanceDate","createdDate","credentialDetailSecondary","credentialDetailErrorColor","credentialDetailTestID","statusIcon","layoutProperties","suspendEndDate","suspendedUntil","suspended","concatTestID","CredentialWarningIcon","revoked","CredentialErrorIcon","validityIssues","primary","primaryAttribute","secondary","secondaryAttribute","color","logo","backgroundColor","credentialName","name","icon","image","imageSource","uri","iconLabelColor","fontColor","getCredentialCardPropsFromCredential","notice","_layoutProperties$bac","_layoutProperties$bac2","text","validityIssuesNotice","noticeIcon","CredentialNoticeWarningIcon","result","cardCarouselImages","getCarouselImagesFromClaims","cardImage","background","header","detailsCardAttributeFromClaim","id","pop","typeConfig","datatype","array","values","map","arrayValue","index","toString","type","Array","isArray","attributes","nestedClaim","_formatDateLocalized","String","date","formatDateLocalized","File","_typeConfig$params","params","showAs","detailsCardFromCredential","detailsCardFromCredentialWithClaims","card","nestAttributes","attribute","attributePath","push","parent","a","insertAttributeInObject","join","nestAttributeInDummyObject","pathParts","disabled","object","_object$attributes","nextParent","_object$attributes2","parseBase64Image","getCredentialSchemaWithoutImages","credentialSchema","_credentialSchema$lay","_credentialSchema$lay2","_credentialSchema$lay3","_credentialSchema$lay4"],"sources":["credential.ts"],"sourcesContent":["import {\n Claim,\n Config,\n CredentialDetail,\n CredentialListItem,\n CredentialSchema,\n CredentialStateEnum,\n DataTypeEnum,\n FormatFeatureEnum,\n} from '@procivis/react-native-one-core';\n\nimport {\n CredentialAttribute,\n CredentialAttributeValue,\n CredentialCardProps,\n CredentialDetailsCardProps,\n CredentialHeaderProps,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialErrorIcon, CredentialNoticeWarningIcon, CredentialWarningIcon } from '../../ui-components/icons';\nimport { formatDateLocalized, formatDateTimeLocalized } from '../date';\nimport { concatTestID } from '../testID';\nimport { getCarouselImagesFromClaims } from './credential-images';\n\nexport enum ValidityState {\n Revoked = 'revoked',\n Suspended = 'suspended',\n Valid = 'valid',\n}\n\nexport const getValidityState = (credential: CredentialListItem | undefined) => {\n if (credential?.state === CredentialStateEnum.REVOKED) {\n return ValidityState.Revoked;\n }\n if (credential?.state === CredentialStateEnum.SUSPENDED) {\n return ValidityState.Suspended;\n }\n return ValidityState.Valid;\n};\n\nexport const supportsSelectiveDisclosure = (credential: CredentialListItem | undefined, config: Config | undefined) => {\n const formatConfig = credential && config?.format[credential.schema.format];\n return formatConfig\n ? Boolean(formatConfig.capabilities?.features?.includes(FormatFeatureEnum.SelectiveDisclosure))\n : undefined;\n};\n\nconst findClaimByPathParts = (path: string[], claims?: Claim[]): Claim | undefined => {\n if (!claims?.length) {\n return undefined;\n }\n const [first, second, ...rest] = path;\n const claim = claims.find((c) => c.key === first);\n if (claim === undefined || second === undefined || claim.dataType !== DataTypeEnum.Object) {\n return claim;\n }\n\n return findClaimByPathParts([`${first}/${second}`, ...rest], claim.value as Claim[]);\n};\n\nexport const findClaimByPath = (path: string | undefined, claims: Claim[] | undefined) =>\n path ? findClaimByPathParts(path.split('/'), claims) : undefined;\n\nconst formatCredentialDetail = (claim: Claim, config: Config, testID: string): string => {\n const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID);\n return attributeValue.value ?? '';\n};\n\nexport const hasMsoValidityIssues = (credential: CredentialDetail): boolean => {\n const mdocMsoValidity: { nextUpdate: string } | undefined =\n 'mdocMsoValidity' in credential ? (credential.mdocMsoValidity as { nextUpdate: string }) : undefined;\n\n const mdocMsoValidityIssue = Boolean(\n mdocMsoValidity?.nextUpdate && new Date(mdocMsoValidity.nextUpdate) < new Date(),\n );\n\n return mdocMsoValidityIssue;\n};\n\nexport type CardHeaderLabels = {\n validityIssues: string;\n revoked: string;\n suspended: string;\n suspendedUntil: (date: string) => string;\n};\n\nexport const cardHeaderFromCredential = (\n credential: CredentialDetail,\n claims: Claim[] = [],\n config: Config,\n testID: string,\n labels: CardHeaderLabels,\n): Omit<CredentialHeaderProps, 'style'> => {\n let credentialDetailPrimary =\n formatDateTimeLocalized(new Date(credential.issuanceDate ?? credential.createdDate)) ?? '';\n\n let credentialDetailSecondary: string | undefined;\n let credentialDetailErrorColor: boolean | undefined;\n let credentialDetailTestID: string | undefined;\n let statusIcon;\n\n const { layoutProperties } = credential.schema;\n\n switch (credential.state) {\n case CredentialStateEnum.SUSPENDED:\n credentialDetailPrimary = credential.suspendEndDate\n ? labels.suspendedUntil(formatDateTimeLocalized(new Date(credential.suspendEndDate))!)\n : labels.suspended;\n credentialDetailTestID = concatTestID(testID, 'suspended');\n statusIcon = CredentialWarningIcon;\n break;\n case CredentialStateEnum.REVOKED:\n credentialDetailPrimary = labels.revoked;\n credentialDetailErrorColor = true;\n credentialDetailTestID = concatTestID(testID, 'revoked');\n statusIcon = CredentialErrorIcon;\n break;\n default: {\n if (hasMsoValidityIssues(credential)) {\n credentialDetailPrimary = labels.validityIssues;\n credentialDetailTestID = concatTestID(testID, 'validity-issue');\n statusIcon = CredentialWarningIcon;\n } else {\n const primary = findClaimByPath(layoutProperties?.primaryAttribute, claims);\n\n if (primary) {\n credentialDetailPrimary = formatCredentialDetail(primary, config, concatTestID(testID, 'primary'));\n }\n\n const secondary = findClaimByPath(layoutProperties?.secondaryAttribute, claims);\n\n if (secondary) {\n credentialDetailSecondary = formatCredentialDetail(secondary, config, concatTestID(testID, 'secondary'));\n }\n\n credentialDetailTestID = concatTestID(testID, 'detail');\n }\n break;\n }\n }\n return {\n color: layoutProperties?.logo?.backgroundColor,\n credentialDetailErrorColor,\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID,\n credentialName: credential.schema.name,\n icon: layoutProperties?.logo?.image\n ? {\n imageSource: {\n uri: layoutProperties.logo.image,\n },\n }\n : undefined,\n iconLabelColor: layoutProperties?.logo?.fontColor,\n statusIcon,\n testID,\n };\n};\n\nexport type CardLabels = CardHeaderLabels & {\n validityIssuesNotice: string;\n};\n\nexport const getCredentialCardPropsFromCredential = (\n credential: CredentialDetail,\n claims: Claim[] = [],\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style'> => {\n const { layoutProperties } = credential.schema;\n\n if (hasMsoValidityIssues(credential)) {\n notice = {\n text: labels.validityIssuesNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n };\n }\n\n const result: Omit<CredentialCardProps, 'onHeaderPress' | 'style'> = {\n cardCarouselImages: getCarouselImagesFromClaims(claims, layoutProperties, concatTestID(testID, 'carousel')),\n cardImage: layoutProperties?.background?.image\n ? { imageSource: { uri: layoutProperties.background.image } }\n : undefined,\n color: layoutProperties?.background?.color,\n header: cardHeaderFromCredential(credential, claims, config, concatTestID(testID, 'header'), labels),\n testID,\n notice,\n };\n\n return result;\n};\n\nexport const detailsCardAttributeFromClaim = (claim: Claim, config: Config, testID: string): CredentialAttribute => {\n const value = detailsCardAttributeValueFromClaim(claim, config, testID);\n return {\n id: claim.id,\n name: claim.key.split('/').pop(),\n path: claim.key,\n ...value,\n };\n};\n\nconst detailsCardAttributeValueFromClaim = (claim: Claim, config: Config, testID: string): CredentialAttributeValue => {\n const typeConfig = config?.datatype[claim.dataType];\n\n if (claim.array) {\n return {\n values: (claim.value || []).map((arrayValue, index) => {\n return detailsCardAttributeFromClaim(\n {\n ...arrayValue,\n id: `${arrayValue.id}/${index}`,\n },\n config,\n concatTestID(testID, index.toString()),\n );\n }),\n };\n } else {\n switch (typeConfig?.type) {\n case DataTypeEnum.Object: {\n if (!Array.isArray(claim.value)) {\n return { attributes: [] };\n }\n return {\n attributes: (claim.value as Claim[]).map((nestedClaim, index) =>\n detailsCardAttributeFromClaim(nestedClaim, config, concatTestID(testID, index.toString())),\n ),\n };\n }\n case DataTypeEnum.Date: {\n if (!claim.value) {\n // Don't try to parse empty values (which will return \"Invalid Date\")\n return { testID: testID, value: String(claim.value) };\n }\n const date = claim.value as string;\n return {\n testID: testID,\n value: formatDateLocalized(new Date(date)) ?? date,\n };\n }\n case DataTypeEnum.File: {\n if (typeConfig.params?.showAs === 'IMAGE') {\n return { image: { uri: claim.value as string }, testID: testID };\n } else {\n return { testID: testID, value: claim.value as string };\n }\n }\n default:\n return { testID: testID, value: String(claim.value) };\n }\n }\n};\n\nexport const detailsCardFromCredential = (\n credential: CredentialDetail,\n config: Config,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialDetailsCardProps, 'expanded'> => {\n return detailsCardFromCredentialWithClaims(credential, credential.claims, config, testID, labels);\n};\n\nexport const detailsCardFromCredentialWithClaims = (\n credential: CredentialDetail,\n claims: Claim[],\n config: Config,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialDetailsCardProps, 'expanded'> => {\n const attributes: CredentialAttribute[] = claims.map((claim, index) =>\n detailsCardAttributeFromClaim(claim, config, concatTestID(testID, 'attribute', index.toString())),\n );\n\n const card = getCredentialCardPropsFromCredential(\n credential,\n claims,\n config,\n undefined,\n concatTestID(testID, 'card'),\n labels,\n );\n\n return {\n attributes,\n card,\n };\n};\n\n// Converts a flat list of attributes into a nested structure\n// modifies the names to not include slashes\nexport const nestAttributes = (attributes: CredentialAttribute[]): CredentialAttribute[] => {\n const result: CredentialAttribute[] = [];\n\n for (const attribute of attributes) {\n const attributePath = attribute.path.split('/');\n if (attributePath.length === 0) {\n result.push(attribute);\n } else {\n const [first, ...rest] = attributePath;\n const parent = result.find((a) => a.name === first);\n if (parent) {\n insertAttributeInObject({ ...attribute, path: rest.join('/') }, parent);\n } else {\n result.push(nestAttributeInDummyObject(attribute));\n }\n }\n }\n\n return result;\n};\n\n// We nest the leaf node in a (one or more) nested object(s)\n// to make sure the tree structure is correctly rendered in proof request screens.\nconst nestAttributeInDummyObject = (attribute: CredentialAttribute): CredentialAttribute => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n if (!rest.length) {\n return attribute;\n }\n\n // The dummy object is not selectable, and contains a placeholder ID\n // the user can't interact with it.\n return {\n attributes: [nestAttributeInDummyObject({ ...attribute, path: rest.join('/') })],\n disabled: true,\n id: `${attribute.id}/${first}`,\n name: first,\n path: attribute.path,\n };\n};\n\n// Recursively insert an attribute into an object\n// Will create nested objects if necessary\nconst insertAttributeInObject = (attribute: CredentialAttribute, object: CredentialAttribute) => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n\n const nextParent = object.attributes?.find((a) => a.name === first);\n\n if (!nextParent) {\n object.attributes?.push(nestAttributeInDummyObject(attribute));\n } else {\n insertAttributeInObject({ ...attribute, path: rest.join('/') }, nextParent);\n }\n};\n\nfunction parseBase64Image(image: string | undefined) {\n return image ? '__BASE64IMAGE__' : '';\n}\n\nexport function getCredentialSchemaWithoutImages(credentialSchema: CredentialSchema) {\n return {\n ...credentialSchema,\n layoutProperties: {\n ...credentialSchema.layoutProperties,\n background: {\n ...credentialSchema.layoutProperties?.background,\n image: parseBase64Image(credentialSchema.layoutProperties?.background?.image),\n },\n logo: {\n ...credentialSchema.layoutProperties?.logo,\n image: parseBase64Image(credentialSchema.layoutProperties?.logo?.image),\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeOneCore","require","_icons","_date","_testID","_credentialImages","ValidityState","exports","getValidityState","credential","state","CredentialStateEnum","REVOKED","Revoked","SUSPENDED","Suspended","Valid","supportsSelectiveDisclosure","config","_formatConfig$capabil","formatConfig","format","schema","Boolean","capabilities","features","includes","FormatFeatureEnum","SelectiveDisclosure","undefined","findClaimByPathParts","path","claims","length","first","second","rest","claim","find","c","key","dataType","DataTypeEnum","Object","value","findClaimByPath","split","formatCredentialDetail","testID","_attributeValue$value","attributeValue","detailsCardAttributeValueFromClaim","hasMsoValidityIssues","mdocMsoValidity","mdocMsoValidityIssue","nextUpdate","Date","cardHeaderFromCredential","labels","_formatDateTimeLocali","_credential$issuanceD","_layoutProperties$log","_layoutProperties$log2","_layoutProperties$log3","credentialDetailPrimary","formatDateTimeLocalized","issuanceDate","createdDate","credentialDetailSecondary","credentialDetailErrorColor","credentialDetailTestID","statusIcon","layoutProperties","suspendEndDate","suspendedUntil","suspended","concatTestID","CredentialWarningIcon","revoked","CredentialErrorIcon","validityIssues","primary","primaryAttribute","secondary","secondaryAttribute","color","logo","backgroundColor","credentialName","name","icon","image","imageSource","uri","iconLabelColor","fontColor","getCredentialCardPropsFromCredential","notice","_layoutProperties$bac","_layoutProperties$bac2","text","validityIssuesNotice","noticeIcon","CredentialNoticeWarningIcon","result","cardCarouselImages","getCarouselImagesFromClaims","cardImage","background","header","detailsCardAttributeFromClaim","id","pop","typeConfig","datatype","array","values","map","arrayValue","index","toString","type","Array","isArray","attributes","nestedClaim","_formatDateLocalized","String","date","formatDateLocalized","File","_typeConfig$params","params","showAs","detailsCardFromCredential","detailsCardFromCredentialWithClaims","card","nestAttributes","attribute","attributePath","push","parent","a","insertAttributeInObject","join","nestAttributeInDummyObject","pathParts","disabled","object","_object$attributes","nextParent","_object$attributes2","parseBase64Image","getCredentialSchemaWithoutImages","credentialSchema","_credentialSchema$lay","_credentialSchema$lay2","_credentialSchema$lay3","_credentialSchema$lay4"],"sources":["credential.ts"],"sourcesContent":["import {\n Claim,\n Config,\n CredentialDetail,\n CredentialListItem,\n CredentialSchema,\n CredentialStateEnum,\n DataTypeEnum,\n FormatFeatureEnum,\n} from '@procivis/react-native-one-core';\n\nimport {\n CredentialAttribute,\n CredentialAttributeValue,\n CredentialCardProps,\n CredentialDetailsCardProps,\n CredentialHeaderProps,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialErrorIcon, CredentialNoticeWarningIcon, CredentialWarningIcon } from '../../ui-components/icons';\nimport { formatDateLocalized, formatDateTimeLocalized } from '../date';\nimport { concatTestID } from '../testID';\nimport { getCarouselImagesFromClaims } from './credential-images';\n\nexport enum ValidityState {\n Revoked = 'revoked',\n Suspended = 'suspended',\n Valid = 'valid',\n}\n\nexport const getValidityState = (credential: CredentialListItem | undefined) => {\n if (credential?.state === CredentialStateEnum.REVOKED) {\n return ValidityState.Revoked;\n }\n if (credential?.state === CredentialStateEnum.SUSPENDED) {\n return ValidityState.Suspended;\n }\n return ValidityState.Valid;\n};\n\nexport const supportsSelectiveDisclosure = (credential: CredentialListItem | undefined, config: Config | undefined) => {\n const formatConfig = credential && config?.format[credential.schema.format];\n return formatConfig\n ? Boolean(formatConfig.capabilities?.features?.includes(FormatFeatureEnum.SelectiveDisclosure))\n : undefined;\n};\n\nconst findClaimByPathParts = (path: string[], claims?: Claim[]): Claim | undefined => {\n if (!claims?.length) {\n return undefined;\n }\n const [first, second, ...rest] = path;\n const claim = claims.find((c) => c.key === first);\n if (claim === undefined || second === undefined || claim.dataType !== DataTypeEnum.Object) {\n return claim;\n }\n\n return findClaimByPathParts([`${first}/${second}`, ...rest], claim.value as Claim[]);\n};\n\nexport const findClaimByPath = (path: string | undefined, claims: Claim[] | undefined) =>\n path ? findClaimByPathParts(path.split('/'), claims) : undefined;\n\nconst formatCredentialDetail = (claim: Claim, config: Config, testID: string): string => {\n const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID);\n return attributeValue.value ?? '';\n};\n\nexport const hasMsoValidityIssues = (credential: CredentialDetail): boolean => {\n const mdocMsoValidity: { nextUpdate: string } | undefined =\n 'mdocMsoValidity' in credential ? (credential.mdocMsoValidity as { nextUpdate: string }) : undefined;\n\n const mdocMsoValidityIssue = Boolean(\n mdocMsoValidity?.nextUpdate && new Date(mdocMsoValidity.nextUpdate) < new Date(),\n );\n\n return mdocMsoValidityIssue;\n};\n\nexport type CardHeaderLabels = {\n validityIssues: string;\n revoked: string;\n suspended: string;\n suspendedUntil: (date: string) => string;\n};\n\nexport const cardHeaderFromCredential = (\n credential: CredentialDetail,\n claims: Claim[] = [],\n config: Config,\n testID: string,\n labels: CardHeaderLabels,\n): Omit<CredentialHeaderProps, 'style'> => {\n let credentialDetailPrimary =\n formatDateTimeLocalized(new Date(credential.issuanceDate ?? credential.createdDate)) ?? '';\n\n let credentialDetailSecondary: string | undefined;\n let credentialDetailErrorColor: boolean | undefined;\n let credentialDetailTestID: string | undefined;\n let statusIcon;\n\n const { layoutProperties } = credential.schema;\n\n switch (credential.state) {\n case CredentialStateEnum.SUSPENDED:\n credentialDetailPrimary = credential.suspendEndDate\n ? labels.suspendedUntil(formatDateTimeLocalized(new Date(credential.suspendEndDate))!)\n : labels.suspended;\n credentialDetailTestID = concatTestID(testID, 'suspended');\n statusIcon = CredentialWarningIcon;\n break;\n case CredentialStateEnum.REVOKED:\n credentialDetailPrimary = labels.revoked;\n credentialDetailErrorColor = true;\n credentialDetailTestID = concatTestID(testID, 'revoked');\n statusIcon = CredentialErrorIcon;\n break;\n default: {\n if (hasMsoValidityIssues(credential)) {\n credentialDetailPrimary = labels.validityIssues;\n credentialDetailTestID = concatTestID(testID, 'validity-issue');\n statusIcon = CredentialWarningIcon;\n } else {\n const primary = findClaimByPath(layoutProperties?.primaryAttribute, claims);\n\n if (primary) {\n credentialDetailPrimary = formatCredentialDetail(primary, config, concatTestID(testID, 'primary'));\n }\n\n const secondary = findClaimByPath(layoutProperties?.secondaryAttribute, claims);\n\n if (secondary) {\n credentialDetailSecondary = formatCredentialDetail(secondary, config, concatTestID(testID, 'secondary'));\n }\n\n credentialDetailTestID = concatTestID(testID, 'detail');\n }\n break;\n }\n }\n return {\n color: layoutProperties?.logo?.backgroundColor,\n credentialDetailErrorColor,\n credentialDetailPrimary,\n credentialDetailSecondary,\n credentialDetailTestID,\n credentialName: credential.schema.name,\n icon: layoutProperties?.logo?.image\n ? {\n imageSource: {\n uri: layoutProperties.logo.image,\n },\n }\n : undefined,\n iconLabelColor: layoutProperties?.logo?.fontColor,\n statusIcon,\n testID,\n };\n};\n\nexport type CardLabels = CardHeaderLabels & {\n validityIssuesNotice: string;\n};\n\nexport const getCredentialCardPropsFromCredential = (\n credential: CredentialDetail,\n claims: Claim[] = [],\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: CardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n const { layoutProperties } = credential.schema;\n\n if (hasMsoValidityIssues(credential)) {\n notice = {\n text: labels.validityIssuesNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n };\n }\n\n const result: Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> = {\n cardCarouselImages: getCarouselImagesFromClaims(claims, layoutProperties, concatTestID(testID, 'carousel')),\n cardImage: layoutProperties?.background?.image\n ? { imageSource: { uri: layoutProperties.background.image } }\n : undefined,\n color: layoutProperties?.background?.color,\n header: cardHeaderFromCredential(credential, claims, config, concatTestID(testID, 'header'), labels),\n testID,\n notice,\n };\n\n return result;\n};\n\nexport const detailsCardAttributeFromClaim = (claim: Claim, config: Config, testID: string): CredentialAttribute => {\n const value = detailsCardAttributeValueFromClaim(claim, config, testID);\n return {\n id: claim.id,\n name: claim.key.split('/').pop(),\n path: claim.key,\n ...value,\n };\n};\n\nconst detailsCardAttributeValueFromClaim = (claim: Claim, config: Config, testID: string): CredentialAttributeValue => {\n const typeConfig = config?.datatype[claim.dataType];\n\n if (claim.array) {\n return {\n values: (claim.value || []).map((arrayValue, index) => {\n return detailsCardAttributeFromClaim(\n {\n ...arrayValue,\n id: `${arrayValue.id}/${index}`,\n },\n config,\n concatTestID(testID, index.toString()),\n );\n }),\n };\n } else {\n switch (typeConfig?.type) {\n case DataTypeEnum.Object: {\n if (!Array.isArray(claim.value)) {\n return { attributes: [] };\n }\n return {\n attributes: (claim.value as Claim[]).map((nestedClaim, index) =>\n detailsCardAttributeFromClaim(nestedClaim, config, concatTestID(testID, index.toString())),\n ),\n };\n }\n case DataTypeEnum.Date: {\n if (!claim.value) {\n // Don't try to parse empty values (which will return \"Invalid Date\")\n return { testID: testID, value: String(claim.value) };\n }\n const date = claim.value as string;\n return {\n testID: testID,\n value: formatDateLocalized(new Date(date)) ?? date,\n };\n }\n case DataTypeEnum.File: {\n if (typeConfig.params?.showAs === 'IMAGE') {\n return { image: { uri: claim.value as string }, testID: testID };\n } else {\n return { testID: testID, value: claim.value as string };\n }\n }\n default:\n return { testID: testID, value: String(claim.value) };\n }\n }\n};\n\nexport type CredentialDetailsCardPropsWithoutWidth = Omit<CredentialDetailsCardProps, 'expanded' | 'card'> & {\n card: Omit<CredentialCardProps, 'width'>;\n}\n\nexport const detailsCardFromCredential = (\n credential: CredentialDetail,\n config: Config,\n testID: string,\n labels: CardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n return detailsCardFromCredentialWithClaims(credential, credential.claims, config, testID, labels);\n};\n\nexport const detailsCardFromCredentialWithClaims = (\n credential: CredentialDetail,\n claims: Claim[],\n config: Config,\n testID: string,\n labels: CardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const attributes: CredentialAttribute[] = claims.map((claim, index) =>\n detailsCardAttributeFromClaim(claim, config, concatTestID(testID, 'attribute', index.toString())),\n );\n\n const card = getCredentialCardPropsFromCredential(\n credential,\n claims,\n config,\n undefined,\n concatTestID(testID, 'card'),\n labels,\n );\n\n return {\n attributes,\n card,\n };\n};\n\n// Converts a flat list of attributes into a nested structure\n// modifies the names to not include slashes\nexport const nestAttributes = (attributes: CredentialAttribute[]): CredentialAttribute[] => {\n const result: CredentialAttribute[] = [];\n\n for (const attribute of attributes) {\n const attributePath = attribute.path.split('/');\n if (attributePath.length === 0) {\n result.push(attribute);\n } else {\n const [first, ...rest] = attributePath;\n const parent = result.find((a) => a.name === first);\n if (parent) {\n insertAttributeInObject({ ...attribute, path: rest.join('/') }, parent);\n } else {\n result.push(nestAttributeInDummyObject(attribute));\n }\n }\n }\n\n return result;\n};\n\n// We nest the leaf node in a (one or more) nested object(s)\n// to make sure the tree structure is correctly rendered in proof request screens.\nconst nestAttributeInDummyObject = (attribute: CredentialAttribute): CredentialAttribute => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n if (!rest.length) {\n return attribute;\n }\n\n // The dummy object is not selectable, and contains a placeholder ID\n // the user can't interact with it.\n return {\n attributes: [nestAttributeInDummyObject({ ...attribute, path: rest.join('/') })],\n disabled: true,\n id: `${attribute.id}/${first}`,\n name: first,\n path: attribute.path,\n };\n};\n\n// Recursively insert an attribute into an object\n// Will create nested objects if necessary\nconst insertAttributeInObject = (attribute: CredentialAttribute, object: CredentialAttribute) => {\n const pathParts = attribute.path.split('/');\n const [first, ...rest] = pathParts;\n\n const nextParent = object.attributes?.find((a) => a.name === first);\n\n if (!nextParent) {\n object.attributes?.push(nestAttributeInDummyObject(attribute));\n } else {\n insertAttributeInObject({ ...attribute, path: rest.join('/') }, nextParent);\n }\n};\n\nfunction parseBase64Image(image: string | undefined) {\n return image ? '__BASE64IMAGE__' : '';\n}\n\nexport function getCredentialSchemaWithoutImages(credentialSchema: CredentialSchema) {\n return {\n ...credentialSchema,\n layoutProperties: {\n ...credentialSchema.layoutProperties,\n background: {\n ...credentialSchema.layoutProperties?.background,\n image: parseBase64Image(credentialSchema.layoutProperties?.background?.image),\n },\n logo: {\n ...credentialSchema.layoutProperties?.logo,\n image: parseBase64Image(credentialSchema.layoutProperties?.logo?.image),\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import { StyleSheet } from 'react-native';
1
+ import React, { useMemo } from 'react';
2
+ import { Dimensions, StyleSheet } from 'react-native';
3
3
  import { CredentialDetailsCardListItem } from '../../ui-components/credential/card';
4
4
  import { concatTestID } from '../../utils';
5
5
  import { useCoreConfig } from '../../utils/hooks/core/core-config';
@@ -21,6 +21,7 @@ export const CredentialDetails = ({
21
21
  const {
22
22
  data: config
23
23
  } = useCoreConfig();
24
+ const cardWidth = useMemo(() => Dimensions.get('window').width - 32, []);
24
25
  if (!credential || !config) {
25
26
  return null;
26
27
  }
@@ -37,7 +38,8 @@ export const CredentialDetails = ({
37
38
  card: {
38
39
  ...card,
39
40
  credentialId,
40
- onHeaderPress
41
+ onHeaderPress,
42
+ width: cardWidth
41
43
  },
42
44
  expanded: expanded,
43
45
  lastItem: lastItem,
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","CredentialDetailsCardListItem","concatTestID","useCoreConfig","useCredentialDetail","detailsCardFromCredentialWithClaims","CredentialDetails","claims","credentialId","expanded","labels","lastItem","onHeaderPress","onImagePreview","headerAccessory","data","credential","config","testID","id","card","attributes","header","accessory","createElement","style","styles","create","marginBottom"],"sources":["credential.tsx"],"sourcesContent":["import { Claim } from '@procivis/react-native-one-core';\nimport React, { FC } from 'react';\nimport { ImageSourcePropType, StyleSheet } from 'react-native';\n\nimport { CredentialDetailsCardListItem, CredentialHeaderProps } from '../../ui-components/credential/card';\nimport { concatTestID } from '../../utils';\nimport { useCoreConfig } from '../../utils/hooks/core/core-config';\nimport { useCredentialDetail } from '../../utils/hooks/core/credentials';\nimport { CardLabels, detailsCardFromCredentialWithClaims } from '../../utils/parsers/credential';\n\nexport interface CredentialDetailsProps {\n claims?: Claim[];\n credentialId: string;\n expanded?: boolean;\n headerAccessory?: CredentialHeaderProps['accessory'];\n labels: CardLabels;\n lastItem?: boolean;\n onHeaderPress?: (credentialId?: string) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n}\n\nexport const CredentialDetails: FC<CredentialDetailsProps> = ({\n claims,\n credentialId,\n expanded = false,\n labels,\n lastItem,\n onHeaderPress,\n onImagePreview,\n headerAccessory,\n}) => {\n const { data: credential } = useCredentialDetail(credentialId);\n const { data: config } = useCoreConfig();\n\n if (!credential || !config) {\n return null;\n }\n const testID = concatTestID('Credential.credential', credential.id);\n\n const { card, attributes } = detailsCardFromCredentialWithClaims(\n credential,\n claims ?? credential.claims,\n config,\n testID,\n labels,\n );\n if (headerAccessory) {\n card.header.accessory = headerAccessory;\n }\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n credentialId,\n onHeaderPress,\n }}\n expanded={expanded}\n lastItem={lastItem}\n onImagePreview={onImagePreview}\n style={styles.credential}\n testID={testID}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n credential: {\n marginBottom: 8,\n },\n});\n"],"mappings":"AACA,OAAOA,KAAK,MAAc,OAAO;AACjC,SAA8BC,UAAU,QAAQ,cAAc;AAE9D,SAASC,6BAA6B,QAA+B,qCAAqC;AAC1G,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,aAAa,QAAQ,oCAAoC;AAClE,SAASC,mBAAmB,QAAQ,oCAAoC;AACxE,SAAqBC,mCAAmC,QAAQ,gCAAgC;AAahG,OAAO,MAAMC,iBAA6C,GAAGA,CAAC;EAC5DC,MAAM;EACNC,YAAY;EACZC,QAAQ,GAAG,KAAK;EAChBC,MAAM;EACNC,QAAQ;EACRC,aAAa;EACbC,cAAc;EACdC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC,IAAI,EAAEC;EAAW,CAAC,GAAGZ,mBAAmB,CAACI,YAAY,CAAC;EAC9D,MAAM;IAAEO,IAAI,EAAEE;EAAO,CAAC,GAAGd,aAAa,CAAC,CAAC;EAExC,IAAI,CAACa,UAAU,IAAI,CAACC,MAAM,EAAE;IAC1B,OAAO,IAAI;EACb;EACA,MAAMC,MAAM,GAAGhB,YAAY,CAAC,uBAAuB,EAAEc,UAAU,CAACG,EAAE,CAAC;EAEnE,MAAM;IAAEC,IAAI;IAAEC;EAAW,CAAC,GAAGhB,mCAAmC,CAC9DW,UAAU,EACVT,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIS,UAAU,CAACT,MAAM,EAC3BU,MAAM,EACNC,MAAM,EACNR,MACF,CAAC;EACD,IAAII,eAAe,EAAE;IACnBM,IAAI,CAACE,MAAM,CAACC,SAAS,GAAGT,eAAe;EACzC;EAEA,oBACEf,KAAA,CAAAyB,aAAA,CAACvB,6BAA6B;IAC5BoB,UAAU,EAAEA,UAAW;IACvBD,IAAI,EAAE;MACJ,GAAGA,IAAI;MACPZ,YAAY;MACZI;IACF,CAAE;IACFH,QAAQ,EAAEA,QAAS;IACnBE,QAAQ,EAAEA,QAAS;IACnBE,cAAc,EAAEA,cAAe;IAC/BY,KAAK,EAAEC,MAAM,CAACV,UAAW;IACzBE,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN,CAAC;AAED,MAAMQ,MAAM,GAAG1B,UAAU,CAAC2B,MAAM,CAAC;EAC/BX,UAAU,EAAE;IACVY,YAAY,EAAE;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","Dimensions","StyleSheet","CredentialDetailsCardListItem","concatTestID","useCoreConfig","useCredentialDetail","detailsCardFromCredentialWithClaims","CredentialDetails","claims","credentialId","expanded","labels","lastItem","onHeaderPress","onImagePreview","headerAccessory","data","credential","config","cardWidth","get","width","testID","id","card","attributes","header","accessory","createElement","style","styles","create","marginBottom"],"sources":["credential.tsx"],"sourcesContent":["import { Claim } from '@procivis/react-native-one-core';\nimport React, { FC, useMemo } from 'react';\nimport { Dimensions, ImageSourcePropType, StyleSheet } from 'react-native';\n\nimport { CredentialDetailsCardListItem, CredentialHeaderProps } from '../../ui-components/credential/card';\nimport { concatTestID } from '../../utils';\nimport { useCoreConfig } from '../../utils/hooks/core/core-config';\nimport { useCredentialDetail } from '../../utils/hooks/core/credentials';\nimport { CardLabels, detailsCardFromCredentialWithClaims } from '../../utils/parsers/credential';\n\nexport interface CredentialDetailsProps {\n claims?: Claim[];\n credentialId: string;\n expanded?: boolean;\n headerAccessory?: CredentialHeaderProps['accessory'];\n labels: CardLabels;\n lastItem?: boolean;\n onHeaderPress?: (credentialId?: string) => void;\n onImagePreview: (title: string, image: ImageSourcePropType) => void;\n}\n\nexport const CredentialDetails: FC<CredentialDetailsProps> = ({\n claims,\n credentialId,\n expanded = false,\n labels,\n lastItem,\n onHeaderPress,\n onImagePreview,\n headerAccessory,\n}) => {\n const { data: credential } = useCredentialDetail(credentialId);\n const { data: config } = useCoreConfig();\n const cardWidth = useMemo(() => Dimensions.get('window').width - 32, []);\n\n if (!credential || !config) {\n return null;\n }\n const testID = concatTestID('Credential.credential', credential.id);\n\n const { card, attributes } = detailsCardFromCredentialWithClaims(\n credential,\n claims ?? credential.claims,\n config,\n testID,\n labels,\n );\n if (headerAccessory) {\n card.header.accessory = headerAccessory;\n }\n\n return (\n <CredentialDetailsCardListItem\n attributes={attributes}\n card={{\n ...card,\n credentialId,\n onHeaderPress,\n width: cardWidth,\n }}\n expanded={expanded}\n lastItem={lastItem}\n onImagePreview={onImagePreview}\n style={styles.credential}\n testID={testID}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n credential: {\n marginBottom: 8,\n },\n});\n"],"mappings":"AACA,OAAOA,KAAK,IAAQC,OAAO,QAAQ,OAAO;AAC1C,SAASC,UAAU,EAAuBC,UAAU,QAAQ,cAAc;AAE1E,SAASC,6BAA6B,QAA+B,qCAAqC;AAC1G,SAASC,YAAY,QAAQ,aAAa;AAC1C,SAASC,aAAa,QAAQ,oCAAoC;AAClE,SAASC,mBAAmB,QAAQ,oCAAoC;AACxE,SAAqBC,mCAAmC,QAAQ,gCAAgC;AAahG,OAAO,MAAMC,iBAA6C,GAAGA,CAAC;EAC5DC,MAAM;EACNC,YAAY;EACZC,QAAQ,GAAG,KAAK;EAChBC,MAAM;EACNC,QAAQ;EACRC,aAAa;EACbC,cAAc;EACdC;AACF,CAAC,KAAK;EACJ,MAAM;IAAEC,IAAI,EAAEC;EAAW,CAAC,GAAGZ,mBAAmB,CAACI,YAAY,CAAC;EAC9D,MAAM;IAAEO,IAAI,EAAEE;EAAO,CAAC,GAAGd,aAAa,CAAC,CAAC;EACxC,MAAMe,SAAS,GAAGpB,OAAO,CAAC,MAAMC,UAAU,CAACoB,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC;EAExE,IAAI,CAACJ,UAAU,IAAI,CAACC,MAAM,EAAE;IAC1B,OAAO,IAAI;EACb;EACA,MAAMI,MAAM,GAAGnB,YAAY,CAAC,uBAAuB,EAAEc,UAAU,CAACM,EAAE,CAAC;EAEnE,MAAM;IAAEC,IAAI;IAAEC;EAAW,CAAC,GAAGnB,mCAAmC,CAC9DW,UAAU,EACVT,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIS,UAAU,CAACT,MAAM,EAC3BU,MAAM,EACNI,MAAM,EACNX,MACF,CAAC;EACD,IAAII,eAAe,EAAE;IACnBS,IAAI,CAACE,MAAM,CAACC,SAAS,GAAGZ,eAAe;EACzC;EAEA,oBACEjB,KAAA,CAAA8B,aAAA,CAAC1B,6BAA6B;IAC5BuB,UAAU,EAAEA,UAAW;IACvBD,IAAI,EAAE;MACJ,GAAGA,IAAI;MACPf,YAAY;MACZI,aAAa;MACbQ,KAAK,EAAEF;IACT,CAAE;IACFT,QAAQ,EAAEA,QAAS;IACnBE,QAAQ,EAAEA,QAAS;IACnBE,cAAc,EAAEA,cAAe;IAC/Be,KAAK,EAAEC,MAAM,CAACb,UAAW;IACzBK,MAAM,EAAEA;EAAO,CAChB,CAAC;AAEN,CAAC;AAED,MAAMQ,MAAM,GAAG7B,UAAU,CAAC8B,MAAM,CAAC;EAC/Bd,UAAU,EAAE;IACVe,YAAY,EAAE;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -40,7 +40,9 @@ const defaultIcons = {
40
40
  PROOF: HistoryProofRequestIcon,
41
41
  PROOF_SCHEMA: HistorySchemaIcon,
42
42
  TRUST_ANCHOR: HistoryTrustAnchorIcon,
43
- TRUST_ENTITY: HistoryTrustedEntityIcon
43
+ TRUST_ENTITY: HistoryTrustedEntityIcon,
44
+ WALLET_UNIT: HistoryTrustedEntityIcon,
45
+ WALLET_UNIT_ATTESTATION: HistoryTrustedEntityIcon
44
46
  }
45
47
  };
46
48
  export const getHistoryItemActionIcon = action => {