@procivis/one-react-native-components 0.3.94 → 0.3.99

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 (263) hide show
  1. package/lib/commonjs/components/backup/preview-credentials.js.map +1 -1
  2. package/lib/commonjs/components/credential/credential.js.map +1 -1
  3. package/lib/commonjs/components/entity/EntityButtons.js.map +1 -1
  4. package/lib/commonjs/components/entity/entity-attributes.js.map +1 -1
  5. package/lib/commonjs/components/entity/entity-details-with-buttons.js +2 -2
  6. package/lib/commonjs/components/entity/entity-details-with-buttons.js.map +1 -1
  7. package/lib/commonjs/components/entity/entity-details.js +3 -3
  8. package/lib/commonjs/components/entity/entity-details.js.map +1 -1
  9. package/lib/commonjs/components/history/history-details-screen.js +10 -10
  10. package/lib/commonjs/components/history/history-details-screen.js.map +1 -1
  11. package/lib/commonjs/components/history/history-list-item-icon.js +12 -8
  12. package/lib/commonjs/components/history/history-list-item-icon.js.map +1 -1
  13. package/lib/commonjs/components/history/history-list-item.js.map +1 -1
  14. package/lib/commonjs/components/history/history-list-screen.js.map +1 -1
  15. package/lib/commonjs/components/history/history-list-section-header.js +1 -1
  16. package/lib/commonjs/components/history/history-list-section-header.js.map +1 -1
  17. package/lib/commonjs/components/history/history-list.js.map +1 -1
  18. package/lib/commonjs/components/proof-request/share-credential-card-notice.js.map +1 -1
  19. package/lib/commonjs/components/proof-request/v1/select-credential.js.map +1 -1
  20. package/lib/commonjs/components/proof-request/v1/share-credential.js +1 -1
  21. package/lib/commonjs/components/proof-request/v1/share-credential.js.map +1 -1
  22. package/lib/commonjs/components/proof-request/v2/select-credential-v2.js.map +1 -1
  23. package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js +2 -2
  24. package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
  25. package/lib/commonjs/components/proof-request/v2/share-credential-v2.js +2 -2
  26. package/lib/commonjs/components/proof-request/v2/share-credential-v2.js.map +1 -1
  27. package/lib/commonjs/ui-components/accessibility/accessibilityHistoryWrappers.js.map +1 -1
  28. package/lib/commonjs/ui-components/accessibility/locale/fi.json +1 -1
  29. package/lib/commonjs/ui-components/entity/entity-cluster.js.map +1 -1
  30. package/lib/commonjs/ui-components/header/foldable-header.js.map +1 -1
  31. package/lib/commonjs/ui-components/history/history-section-header.js +1 -1
  32. package/lib/commonjs/ui-components/history/history-section-header.js.map +1 -1
  33. package/lib/commonjs/ui-components/history/history-section-list-item.js +1 -1
  34. package/lib/commonjs/ui-components/history/history-section-list-item.js.map +1 -1
  35. package/lib/commonjs/ui-components/icons/entity.js.map +1 -1
  36. package/lib/commonjs/ui-components/screens/nerd-mode-screen.js.map +1 -1
  37. package/lib/commonjs/ui-components/screens/section-list-screen.js.map +1 -1
  38. package/lib/commonjs/ui-components/settings/button-setting.js +3 -1
  39. package/lib/commonjs/ui-components/settings/button-setting.js.map +1 -1
  40. package/lib/commonjs/ui-components/settings/setting-item.js +4 -2
  41. package/lib/commonjs/ui-components/settings/setting-item.js.map +1 -1
  42. package/lib/commonjs/ui-components/settings/switch-setting.js +4 -2
  43. package/lib/commonjs/ui-components/settings/switch-setting.js.map +1 -1
  44. package/lib/commonjs/utils/date.js.map +1 -1
  45. package/lib/commonjs/utils/history.js +1 -41
  46. package/lib/commonjs/utils/history.js.map +1 -1
  47. package/lib/commonjs/utils/hooks/connectivity/connectivity.test.js.map +1 -1
  48. package/lib/commonjs/utils/hooks/core/backup.js +3 -3
  49. package/lib/commonjs/utils/hooks/core/backup.js.map +1 -1
  50. package/lib/commonjs/utils/hooks/core/cache.js +10 -10
  51. package/lib/commonjs/utils/hooks/core/cache.js.map +1 -1
  52. package/lib/commonjs/utils/hooks/core/core-context.js +5 -5
  53. package/lib/commonjs/utils/hooks/core/core-context.js.map +1 -1
  54. package/lib/commonjs/utils/hooks/core/credential-schemas.js.map +1 -1
  55. package/lib/commonjs/utils/hooks/core/credentials.js +3 -3
  56. package/lib/commonjs/utils/hooks/core/credentials.js.map +1 -1
  57. package/lib/commonjs/utils/hooks/core/dids.js +1 -1
  58. package/lib/commonjs/utils/hooks/core/dids.js.map +1 -1
  59. package/lib/commonjs/utils/hooks/core/history.js +1 -1
  60. package/lib/commonjs/utils/hooks/core/history.js.map +1 -1
  61. package/lib/commonjs/utils/hooks/core/identifiers.js +3 -3
  62. package/lib/commonjs/utils/hooks/core/identifiers.js.map +1 -1
  63. package/lib/commonjs/utils/hooks/core/proof-schemas.js.map +1 -1
  64. package/lib/commonjs/utils/hooks/core/proofs.js +9 -9
  65. package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
  66. package/lib/commonjs/utils/hooks/core/trust-entity.js +5 -5
  67. package/lib/commonjs/utils/hooks/core/trust-entity.js.map +1 -1
  68. package/lib/commonjs/utils/hooks/core/wallet-unit.js +1 -1
  69. package/lib/commonjs/utils/hooks/core/wallet-unit.js.map +1 -1
  70. package/lib/commonjs/utils/hooks/navigation/open-settings.js.map +1 -1
  71. package/lib/commonjs/utils/hooks/revocation/credential-status.js +1 -1
  72. package/lib/commonjs/utils/hooks/revocation/credential-status.js.map +1 -1
  73. package/lib/commonjs/utils/parsers/credential-images.js +11 -10
  74. package/lib/commonjs/utils/parsers/credential-images.js.map +1 -1
  75. package/lib/commonjs/utils/parsers/credential-sharing-v2.js +14 -33
  76. package/lib/commonjs/utils/parsers/credential-sharing-v2.js.map +1 -1
  77. package/lib/commonjs/utils/parsers/credential-sharing.js +4 -12
  78. package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
  79. package/lib/commonjs/utils/parsers/credential.js +31 -32
  80. package/lib/commonjs/utils/parsers/credential.js.map +1 -1
  81. package/lib/commonjs/utils/parsers/query.js.map +1 -1
  82. package/lib/commonjs/utils/url.js.map +1 -1
  83. package/lib/module/components/backup/preview-credentials.js.map +1 -1
  84. package/lib/module/components/credential/credential.js.map +1 -1
  85. package/lib/module/components/entity/EntityButtons.js.map +1 -1
  86. package/lib/module/components/entity/entity-attributes.js.map +1 -1
  87. package/lib/module/components/entity/entity-details-with-buttons.js +3 -3
  88. package/lib/module/components/entity/entity-details-with-buttons.js.map +1 -1
  89. package/lib/module/components/entity/entity-details.js +4 -4
  90. package/lib/module/components/entity/entity-details.js.map +1 -1
  91. package/lib/module/components/history/history-details-screen.js +11 -11
  92. package/lib/module/components/history/history-details-screen.js.map +1 -1
  93. package/lib/module/components/history/history-list-item-icon.js +13 -9
  94. package/lib/module/components/history/history-list-item-icon.js.map +1 -1
  95. package/lib/module/components/history/history-list-item.js.map +1 -1
  96. package/lib/module/components/history/history-list-screen.js.map +1 -1
  97. package/lib/module/components/history/history-list-section-header.js +1 -1
  98. package/lib/module/components/history/history-list-section-header.js.map +1 -1
  99. package/lib/module/components/history/history-list.js.map +1 -1
  100. package/lib/module/components/proof-request/share-credential-card-notice.js.map +1 -1
  101. package/lib/module/components/proof-request/v1/select-credential.js.map +1 -1
  102. package/lib/module/components/proof-request/v1/share-credential.js +2 -2
  103. package/lib/module/components/proof-request/v1/share-credential.js.map +1 -1
  104. package/lib/module/components/proof-request/v2/select-credential-v2.js.map +1 -1
  105. package/lib/module/components/proof-request/v2/share-credential-v2-group.js +2 -2
  106. package/lib/module/components/proof-request/v2/share-credential-v2-group.js.map +1 -1
  107. package/lib/module/components/proof-request/v2/share-credential-v2.js +2 -2
  108. package/lib/module/components/proof-request/v2/share-credential-v2.js.map +1 -1
  109. package/lib/module/ui-components/accessibility/accessibilityHistoryWrappers.js.map +1 -1
  110. package/lib/module/ui-components/accessibility/locale/fi.json +1 -1
  111. package/lib/module/ui-components/entity/entity-cluster.js.map +1 -1
  112. package/lib/module/ui-components/header/foldable-header.js.map +1 -1
  113. package/lib/module/ui-components/history/history-section-header.js +1 -1
  114. package/lib/module/ui-components/history/history-section-header.js.map +1 -1
  115. package/lib/module/ui-components/history/history-section-list-item.js +1 -1
  116. package/lib/module/ui-components/history/history-section-list-item.js.map +1 -1
  117. package/lib/module/ui-components/icons/entity.js.map +1 -1
  118. package/lib/module/ui-components/screens/nerd-mode-screen.js.map +1 -1
  119. package/lib/module/ui-components/screens/section-list-screen.js.map +1 -1
  120. package/lib/module/ui-components/settings/button-setting.js +3 -1
  121. package/lib/module/ui-components/settings/button-setting.js.map +1 -1
  122. package/lib/module/ui-components/settings/setting-item.js +4 -2
  123. package/lib/module/ui-components/settings/setting-item.js.map +1 -1
  124. package/lib/module/ui-components/settings/switch-setting.js +4 -2
  125. package/lib/module/ui-components/settings/switch-setting.js.map +1 -1
  126. package/lib/module/utils/date.js.map +1 -1
  127. package/lib/module/utils/history.js +0 -38
  128. package/lib/module/utils/history.js.map +1 -1
  129. package/lib/module/utils/hooks/connectivity/connectivity.test.js.map +1 -1
  130. package/lib/module/utils/hooks/core/backup.js +4 -4
  131. package/lib/module/utils/hooks/core/backup.js.map +1 -1
  132. package/lib/module/utils/hooks/core/cache.js +11 -11
  133. package/lib/module/utils/hooks/core/cache.js.map +1 -1
  134. package/lib/module/utils/hooks/core/core-context.js +5 -5
  135. package/lib/module/utils/hooks/core/core-context.js.map +1 -1
  136. package/lib/module/utils/hooks/core/credential-schemas.js.map +1 -1
  137. package/lib/module/utils/hooks/core/credentials.js +4 -4
  138. package/lib/module/utils/hooks/core/credentials.js.map +1 -1
  139. package/lib/module/utils/hooks/core/dids.js +2 -2
  140. package/lib/module/utils/hooks/core/dids.js.map +1 -1
  141. package/lib/module/utils/hooks/core/history.js +1 -1
  142. package/lib/module/utils/hooks/core/history.js.map +1 -1
  143. package/lib/module/utils/hooks/core/identifiers.js +4 -4
  144. package/lib/module/utils/hooks/core/identifiers.js.map +1 -1
  145. package/lib/module/utils/hooks/core/proof-schemas.js.map +1 -1
  146. package/lib/module/utils/hooks/core/proofs.js +10 -10
  147. package/lib/module/utils/hooks/core/proofs.js.map +1 -1
  148. package/lib/module/utils/hooks/core/trust-entity.js +6 -6
  149. package/lib/module/utils/hooks/core/trust-entity.js.map +1 -1
  150. package/lib/module/utils/hooks/core/wallet-unit.js +2 -2
  151. package/lib/module/utils/hooks/core/wallet-unit.js.map +1 -1
  152. package/lib/module/utils/hooks/navigation/open-settings.js.map +1 -1
  153. package/lib/module/utils/hooks/revocation/credential-status.js +2 -2
  154. package/lib/module/utils/hooks/revocation/credential-status.js.map +1 -1
  155. package/lib/module/utils/parsers/credential-images.js +12 -11
  156. package/lib/module/utils/parsers/credential-images.js.map +1 -1
  157. package/lib/module/utils/parsers/credential-sharing-v2.js +14 -33
  158. package/lib/module/utils/parsers/credential-sharing-v2.js.map +1 -1
  159. package/lib/module/utils/parsers/credential-sharing.js +4 -12
  160. package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
  161. package/lib/module/utils/parsers/credential.js +32 -33
  162. package/lib/module/utils/parsers/credential.js.map +1 -1
  163. package/lib/module/utils/parsers/query.js.map +1 -1
  164. package/lib/module/utils/url.js.map +1 -1
  165. package/lib/typescript/components/backup/preview-credentials.d.ts +2 -2
  166. package/lib/typescript/components/credential/credential.d.ts +2 -2
  167. package/lib/typescript/components/entity/EntityButtons.d.ts +2 -2
  168. package/lib/typescript/components/entity/entity-attributes.d.ts +2 -2
  169. package/lib/typescript/components/entity/entity-details-with-buttons.d.ts +3 -3
  170. package/lib/typescript/components/entity/entity-details.d.ts +5 -5
  171. package/lib/typescript/components/history/history-details-screen.d.ts +2 -2
  172. package/lib/typescript/components/history/history-list-item-icon.d.ts +3 -3
  173. package/lib/typescript/components/history/history-list-item.d.ts +5 -5
  174. package/lib/typescript/components/history/history-list-screen.d.ts +4 -4
  175. package/lib/typescript/components/history/history-list.d.ts +5 -5
  176. package/lib/typescript/components/proof-request/v1/select-credential.d.ts +2 -2
  177. package/lib/typescript/components/proof-request/v1/share-credential.d.ts +6 -6
  178. package/lib/typescript/components/proof-request/v2/select-credential-v2.d.ts +3 -3
  179. package/lib/typescript/components/proof-request/v2/share-credential-v2-group.d.ts +4 -4
  180. package/lib/typescript/components/proof-request/v2/share-credential-v2.d.ts +5 -5
  181. package/lib/typescript/ui-components/screens/nerd-mode-screen.d.ts +2 -2
  182. package/lib/typescript/ui-components/settings/setting-item.d.ts +1 -0
  183. package/lib/typescript/utils/history.d.ts +3 -5
  184. package/lib/typescript/utils/hooks/core/backup.d.ts +3 -3
  185. package/lib/typescript/utils/hooks/core/cache.d.ts +2 -2
  186. package/lib/typescript/utils/hooks/core/core-context.d.ts +1 -1
  187. package/lib/typescript/utils/hooks/core/credential-schemas.d.ts +6 -6
  188. package/lib/typescript/utils/hooks/core/credentials.d.ts +8 -8
  189. package/lib/typescript/utils/hooks/core/dids.d.ts +2 -2
  190. package/lib/typescript/utils/hooks/core/history.d.ts +2 -2
  191. package/lib/typescript/utils/hooks/core/identifiers.d.ts +3 -3
  192. package/lib/typescript/utils/hooks/core/proof-schemas.d.ts +7 -7
  193. package/lib/typescript/utils/hooks/core/proofs.d.ts +9 -9
  194. package/lib/typescript/utils/hooks/core/trust-entity.d.ts +6 -6
  195. package/lib/typescript/utils/hooks/core/wallet-unit.d.ts +5 -5
  196. package/lib/typescript/utils/parsers/credential-images.d.ts +2 -2
  197. package/lib/typescript/utils/parsers/credential-sharing-v2.d.ts +7 -7
  198. package/lib/typescript/utils/parsers/credential-sharing.d.ts +8 -9
  199. package/lib/typescript/utils/parsers/credential.d.ts +15 -35
  200. package/lib/typescript/utils/parsers/query.d.ts +8 -8
  201. package/package.json +6 -4
  202. package/src/components/backup/preview-credentials.tsx +2 -2
  203. package/src/components/credential/credential.tsx +2 -2
  204. package/src/components/entity/EntityButtons.tsx +2 -2
  205. package/src/components/entity/entity-attributes.tsx +4 -4
  206. package/src/components/entity/entity-details-with-buttons.tsx +11 -6
  207. package/src/components/entity/entity-details.tsx +17 -16
  208. package/src/components/history/history-details-screen.tsx +13 -16
  209. package/src/components/history/history-list-item-icon.tsx +19 -11
  210. package/src/components/history/history-list-item.tsx +9 -5
  211. package/src/components/history/history-list-screen.tsx +4 -4
  212. package/src/components/history/history-list-section-header.tsx +1 -1
  213. package/src/components/history/history-list.tsx +6 -6
  214. package/src/components/proof-request/share-credential-card-notice.tsx +1 -1
  215. package/src/components/proof-request/v1/select-credential.tsx +2 -2
  216. package/src/components/proof-request/v1/share-credential.tsx +13 -11
  217. package/src/components/proof-request/v2/select-credential-v2.tsx +6 -3
  218. package/src/components/proof-request/v2/share-credential-v2-group.tsx +12 -12
  219. package/src/components/proof-request/v2/share-credential-v2.tsx +11 -11
  220. package/src/ui-components/accessibility/accessibilityHistoryWrappers.tsx +4 -1
  221. package/src/ui-components/accessibility/locale/fi.json +1 -1
  222. package/src/ui-components/buttons/ghost-button.stories.tsx +0 -1
  223. package/src/ui-components/control/checkbox.stories.tsx +1 -1
  224. package/src/ui-components/control/switch.stories.tsx +1 -1
  225. package/src/ui-components/credential/card/credential-header.stories.tsx +0 -1
  226. package/src/ui-components/entity/entity-cluster.tsx +7 -6
  227. package/src/ui-components/header/foldable-header.tsx +8 -11
  228. package/src/ui-components/history/history-section-header.tsx +1 -1
  229. package/src/ui-components/history/history-section-list-item.tsx +1 -1
  230. package/src/ui-components/icons/entity.tsx +2 -2
  231. package/src/ui-components/pin/pin-code-screen.stories.tsx +1 -1
  232. package/src/ui-components/screens/image-preview-screen.stories.tsx +1 -1
  233. package/src/ui-components/screens/nerd-mode-screen.tsx +2 -2
  234. package/src/ui-components/screens/qr-code-scanner-screen.stories.tsx +1 -1
  235. package/src/ui-components/screens/section-list-screen.tsx +10 -1
  236. package/src/ui-components/searchbar/search-bar.stories.tsx +0 -1
  237. package/src/ui-components/settings/button-setting.tsx +2 -1
  238. package/src/ui-components/settings/setting-item.tsx +9 -2
  239. package/src/ui-components/settings/switch-setting.tsx +9 -2
  240. package/src/ui-components/text/typography.stories.tsx +2 -2
  241. package/src/utils/date.ts +2 -2
  242. package/src/utils/history.ts +4 -45
  243. package/src/utils/hooks/connectivity/connectivity.test.ts +2 -2
  244. package/src/utils/hooks/core/backup.ts +4 -4
  245. package/src/utils/hooks/core/cache.ts +13 -13
  246. package/src/utils/hooks/core/core-context.tsx +6 -6
  247. package/src/utils/hooks/core/credential-schemas.ts +7 -4
  248. package/src/utils/hooks/core/credentials.ts +21 -13
  249. package/src/utils/hooks/core/dids.ts +3 -3
  250. package/src/utils/hooks/core/history.ts +3 -3
  251. package/src/utils/hooks/core/identifiers.ts +9 -5
  252. package/src/utils/hooks/core/proof-schemas.ts +21 -16
  253. package/src/utils/hooks/core/proofs.ts +31 -27
  254. package/src/utils/hooks/core/trust-entity.ts +19 -12
  255. package/src/utils/hooks/core/wallet-unit.ts +21 -11
  256. package/src/utils/hooks/navigation/open-settings.ts +1 -1
  257. package/src/utils/hooks/revocation/credential-status.ts +2 -2
  258. package/src/utils/parsers/credential-images.tsx +19 -13
  259. package/src/utils/parsers/credential-sharing-v2.tsx +32 -48
  260. package/src/utils/parsers/credential-sharing.tsx +26 -36
  261. package/src/utils/parsers/credential.ts +64 -61
  262. package/src/utils/parsers/query.ts +16 -14
  263. package/src/utils/url.ts +1 -1
@@ -1,4 +1,4 @@
1
- import { CredentialStateEnum } from '@procivis/react-native-one-core';
1
+ import { CredentialStateBindingEnum } from '@procivis/react-native-one-core';
2
2
  import { useIsFocused } from '@react-navigation/native';
3
3
  import { useCallback, useRef } from 'react';
4
4
  import { reportException } from '../../reporting';
@@ -21,7 +21,7 @@ export const useCredentialStatusCheck = (credentialIds, forceRefresh = false) =>
21
21
  data: credentials
22
22
  } = useCredentials({
23
23
  ids: credentialIds,
24
- states: [CredentialStateEnum.ACCEPTED, CredentialStateEnum.SUSPENDED]
24
+ states: [CredentialStateBindingEnum.ACCEPTED, CredentialStateBindingEnum.SUSPENDED]
25
25
  });
26
26
  const checkCredentialsStatus = useCallback(async () => {
27
27
  if (!credentials || !credentials.length || checkDone.current || !isFocused) {
@@ -1 +1 @@
1
- {"version":3,"names":["CredentialStateEnum","useIsFocused","useCallback","useRef","reportException","useCredentialRevocationCheck","useCredentials","useCredentialStatusCheck","credentialIds","forceRefresh","isFocused","checkDone","mutateAsync","check","data","credentials","ids","states","ACCEPTED","SUSPENDED","checkCredentialsStatus","length","current","results","map","id","catch","e","updatedCredentialIds","filter","credentialId","status","newStatus","success","_credentials$find","find","state"],"sources":["credential-status.ts"],"sourcesContent":["import { CredentialStateEnum } from '@procivis/react-native-one-core';\nimport { useIsFocused } from '@react-navigation/native';\nimport { useCallback, useRef } from 'react';\n\nimport { reportException } from '../../reporting';\nimport { useCredentialRevocationCheck, useCredentials } from '../core/credentials';\n\n/**\n * Runs revocation check on background for all potential updates\n *\n * Navigates to the result page if some credential states were updated\n * @param {string[]} credentialIds if specified only those credentials get checked, otherwise all potentially eligible credentials\n * @param {boolean} forceRefresh revocation check forces cache refresh\n */\nexport const useCredentialStatusCheck = (credentialIds?: string[], forceRefresh = false) => {\n const isFocused = useIsFocused();\n const checkDone = useRef(false);\n const { mutateAsync: check } = useCredentialRevocationCheck(forceRefresh);\n const { data: credentials } = useCredentials({\n ids: credentialIds,\n states: [CredentialStateEnum.ACCEPTED, CredentialStateEnum.SUSPENDED],\n });\n\n const checkCredentialsStatus = useCallback(async () => {\n if (!credentials || !credentials.length || checkDone.current || !isFocused) {\n return [];\n }\n\n const results = await check(credentials.map(({ id }) => id)).catch((e) => {\n reportException(e, 'Revocation check failed');\n return [];\n });\n\n const updatedCredentialIds = results\n .filter(\n ({ credentialId, status: newStatus, success }) =>\n success && credentials.find(({ id }) => id === credentialId)?.state !== newStatus,\n )\n .map(({ credentialId }) => credentialId);\n\n return updatedCredentialIds;\n }, [check, credentials, isFocused]);\n\n return checkCredentialsStatus;\n};\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,iCAAiC;AACrE,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAE3C,SAASC,eAAe,QAAQ,iBAAiB;AACjD,SAASC,4BAA4B,EAAEC,cAAc,QAAQ,qBAAqB;;AAElF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAGA,CAACC,aAAwB,EAAEC,YAAY,GAAG,KAAK,KAAK;EAC1F,MAAMC,SAAS,GAAGT,YAAY,CAAC,CAAC;EAChC,MAAMU,SAAS,GAAGR,MAAM,CAAC,KAAK,CAAC;EAC/B,MAAM;IAAES,WAAW,EAAEC;EAAM,CAAC,GAAGR,4BAA4B,CAACI,YAAY,CAAC;EACzE,MAAM;IAAEK,IAAI,EAAEC;EAAY,CAAC,GAAGT,cAAc,CAAC;IAC3CU,GAAG,EAAER,aAAa;IAClBS,MAAM,EAAE,CAACjB,mBAAmB,CAACkB,QAAQ,EAAElB,mBAAmB,CAACmB,SAAS;EACtE,CAAC,CAAC;EAEF,MAAMC,sBAAsB,GAAGlB,WAAW,CAAC,YAAY;IACrD,IAAI,CAACa,WAAW,IAAI,CAACA,WAAW,CAACM,MAAM,IAAIV,SAAS,CAACW,OAAO,IAAI,CAACZ,SAAS,EAAE;MAC1E,OAAO,EAAE;IACX;IAEA,MAAMa,OAAO,GAAG,MAAMV,KAAK,CAACE,WAAW,CAACS,GAAG,CAAC,CAAC;MAAEC;IAAG,CAAC,KAAKA,EAAE,CAAC,CAAC,CAACC,KAAK,CAAEC,CAAC,IAAK;MACxEvB,eAAe,CAACuB,CAAC,EAAE,yBAAyB,CAAC;MAC7C,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,MAAMC,oBAAoB,GAAGL,OAAO,CACjCM,MAAM,CACL,CAAC;MAAEC,YAAY;MAAEC,MAAM,EAAEC,SAAS;MAAEC;IAAQ,CAAC;MAAA,IAAAC,iBAAA;MAAA,OAC3CD,OAAO,IAAI,EAAAC,iBAAA,GAAAnB,WAAW,CAACoB,IAAI,CAAC,CAAC;QAAEV;MAAG,CAAC,KAAKA,EAAE,KAAKK,YAAY,CAAC,cAAAI,iBAAA,uBAAjDA,iBAAA,CAAmDE,KAAK,MAAKJ,SAAS;IAAA,CACrF,CAAC,CACAR,GAAG,CAAC,CAAC;MAAEM;IAAa,CAAC,KAAKA,YAAY,CAAC;IAE1C,OAAOF,oBAAoB;EAC7B,CAAC,EAAE,CAACf,KAAK,EAAEE,WAAW,EAAEL,SAAS,CAAC,CAAC;EAEnC,OAAOU,sBAAsB;AAC/B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["CredentialStateBindingEnum","useIsFocused","useCallback","useRef","reportException","useCredentialRevocationCheck","useCredentials","useCredentialStatusCheck","credentialIds","forceRefresh","isFocused","checkDone","mutateAsync","check","data","credentials","ids","states","ACCEPTED","SUSPENDED","checkCredentialsStatus","length","current","results","map","id","catch","e","updatedCredentialIds","filter","credentialId","status","newStatus","success","_credentials$find","find","state"],"sources":["credential-status.ts"],"sourcesContent":["import { CredentialStateBindingEnum } from '@procivis/react-native-one-core';\nimport { useIsFocused } from '@react-navigation/native';\nimport { useCallback, useRef } from 'react';\n\nimport { reportException } from '../../reporting';\nimport { useCredentialRevocationCheck, useCredentials } from '../core/credentials';\n\n/**\n * Runs revocation check on background for all potential updates\n *\n * Navigates to the result page if some credential states were updated\n * @param {string[]} credentialIds if specified only those credentials get checked, otherwise all potentially eligible credentials\n * @param {boolean} forceRefresh revocation check forces cache refresh\n */\nexport const useCredentialStatusCheck = (credentialIds?: string[], forceRefresh = false) => {\n const isFocused = useIsFocused();\n const checkDone = useRef(false);\n const { mutateAsync: check } = useCredentialRevocationCheck(forceRefresh);\n const { data: credentials } = useCredentials({\n ids: credentialIds,\n states: [CredentialStateBindingEnum.ACCEPTED, CredentialStateBindingEnum.SUSPENDED],\n });\n\n const checkCredentialsStatus = useCallback(async () => {\n if (!credentials || !credentials.length || checkDone.current || !isFocused) {\n return [];\n }\n\n const results = await check(credentials.map(({ id }) => id)).catch((e) => {\n reportException(e, 'Revocation check failed');\n return [];\n });\n\n const updatedCredentialIds = results\n .filter(\n ({ credentialId, status: newStatus, success }) =>\n success && credentials.find(({ id }) => id === credentialId)?.state !== newStatus,\n )\n .map(({ credentialId }) => credentialId);\n\n return updatedCredentialIds;\n }, [check, credentials, isFocused]);\n\n return checkCredentialsStatus;\n};\n"],"mappings":"AAAA,SAASA,0BAA0B,QAAQ,iCAAiC;AAC5E,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAE3C,SAASC,eAAe,QAAQ,iBAAiB;AACjD,SAASC,4BAA4B,EAAEC,cAAc,QAAQ,qBAAqB;;AAElF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAGA,CAACC,aAAwB,EAAEC,YAAY,GAAG,KAAK,KAAK;EAC1F,MAAMC,SAAS,GAAGT,YAAY,CAAC,CAAC;EAChC,MAAMU,SAAS,GAAGR,MAAM,CAAC,KAAK,CAAC;EAC/B,MAAM;IAAES,WAAW,EAAEC;EAAM,CAAC,GAAGR,4BAA4B,CAACI,YAAY,CAAC;EACzE,MAAM;IAAEK,IAAI,EAAEC;EAAY,CAAC,GAAGT,cAAc,CAAC;IAC3CU,GAAG,EAAER,aAAa;IAClBS,MAAM,EAAE,CAACjB,0BAA0B,CAACkB,QAAQ,EAAElB,0BAA0B,CAACmB,SAAS;EACpF,CAAC,CAAC;EAEF,MAAMC,sBAAsB,GAAGlB,WAAW,CAAC,YAAY;IACrD,IAAI,CAACa,WAAW,IAAI,CAACA,WAAW,CAACM,MAAM,IAAIV,SAAS,CAACW,OAAO,IAAI,CAACZ,SAAS,EAAE;MAC1E,OAAO,EAAE;IACX;IAEA,MAAMa,OAAO,GAAG,MAAMV,KAAK,CAACE,WAAW,CAACS,GAAG,CAAC,CAAC;MAAEC;IAAG,CAAC,KAAKA,EAAE,CAAC,CAAC,CAACC,KAAK,CAAEC,CAAC,IAAK;MACxEvB,eAAe,CAACuB,CAAC,EAAE,yBAAyB,CAAC;MAC7C,OAAO,EAAE;IACX,CAAC,CAAC;IAEF,MAAMC,oBAAoB,GAAGL,OAAO,CACjCM,MAAM,CACL,CAAC;MAAEC,YAAY;MAAEC,MAAM,EAAEC,SAAS;MAAEC;IAAQ,CAAC;MAAA,IAAAC,iBAAA;MAAA,OAC3CD,OAAO,IAAI,EAAAC,iBAAA,GAAAnB,WAAW,CAACoB,IAAI,CAAC,CAAC;QAAEV;MAAG,CAAC,KAAKA,EAAE,KAAKK,YAAY,CAAC,cAAAI,iBAAA,uBAAjDA,iBAAA,CAAmDE,KAAK,MAAKJ,SAAS;IAAA,CACrF,CAAC,CACAR,GAAG,CAAC,CAAC;MAAEM;IAAa,CAAC,KAAKA,YAAY,CAAC;IAE1C,OAAOF,oBAAoB;EAC7B,CAAC,EAAE,CAACf,KAAK,EAAEE,WAAW,EAAEL,SAAS,CAAC,CAAC;EAEnC,OAAOU,sBAAsB;AAC/B,CAAC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { CredentialSchemaCodeType } from '@procivis/react-native-one-core';
1
+ import { CredentialSchemaCodeTypeBindingDto } from '@procivis/react-native-one-core';
2
2
  import React from 'react';
3
3
  import { StyleSheet } from 'react-native';
4
4
  import { Barcode, CarouselImageType, Mrz, QrCode } from '../../ui-components/credential';
@@ -29,7 +29,7 @@ export const getCarouselImagesFromClaims = (claims, layoutProperties, testID) =>
29
29
  element: /*#__PURE__*/React.createElement(ImageOrComponent, {
30
30
  source: {
31
31
  imageSource: {
32
- uri: pictureClaim.value
32
+ uri: pictureClaim.value.value
33
33
  }
34
34
  },
35
35
  style: styles.container,
@@ -41,32 +41,33 @@ export const getCarouselImagesFromClaims = (claims, layoutProperties, testID) =>
41
41
  }
42
42
  if (code) {
43
43
  const claim = findClaimByPath(code.attribute, claims);
44
- if (claim && typeof claim.value === 'number') {
45
- claim.value = String(claim.value);
44
+ let claimValue = '';
45
+ if (claim && (claim.value.type_ === 'FLOAT' || claim.value.type_ === 'INTEGER')) {
46
+ claimValue = String(claim.value.value);
46
47
  }
47
- if (!claim || typeof claim.value !== 'string') {
48
+ if (!claim || typeof claimValue !== 'string') {
48
49
  return result;
49
50
  }
50
- if (code.type === CredentialSchemaCodeType.QR_CODE) {
51
+ if (code.type === CredentialSchemaCodeTypeBindingDto.QR_CODE) {
51
52
  result.push({
52
53
  element: /*#__PURE__*/React.createElement(QrCode, {
53
- content: claim.value,
54
+ content: claimValue,
54
55
  testID: concatTestID(testID, CarouselImageType.QrCode)
55
56
  }),
56
57
  type: CarouselImageType.QrCode
57
58
  });
58
- } else if (code.type === CredentialSchemaCodeType.BARCODE && isASCII(claim.value)) {
59
+ } else if (code.type === CredentialSchemaCodeTypeBindingDto.BARCODE && isASCII(claimValue)) {
59
60
  result.push({
60
61
  element: /*#__PURE__*/React.createElement(Barcode, {
61
- content: claim.value,
62
+ content: claimValue,
62
63
  testID: concatTestID(testID, CarouselImageType.Barcode)
63
64
  }),
64
65
  type: CarouselImageType.Barcode
65
66
  });
66
- } else if (code.type === CredentialSchemaCodeType.MRZ) {
67
+ } else if (code.type === CredentialSchemaCodeTypeBindingDto.MRZ) {
67
68
  result.push({
68
69
  element: /*#__PURE__*/React.createElement(Mrz, {
69
- content: claim.value,
70
+ content: claimValue,
70
71
  testID: concatTestID(testID, CarouselImageType.MRZ)
71
72
  }),
72
73
  type: CarouselImageType.MRZ
@@ -1 +1 @@
1
- {"version":3,"names":["CredentialSchemaCodeType","React","StyleSheet","Barcode","CarouselImageType","Mrz","QrCode","ImageOrComponent","isASCII","concatTestID","findClaimByPath","styles","create","container","height","justifyContent","width","getCarouselImagesFromClaims","claims","layoutProperties","testID","result","code","pictureAttribute","pictureClaim","push","element","createElement","source","imageSource","uri","value","style","Photo","type","claim","attribute","String","QR_CODE","content","BARCODE","MRZ"],"sources":["credential-images.tsx"],"sourcesContent":["import { Claim, CredentialSchemaCodeType, CredentialSchemaLayoutProperties } from '@procivis/react-native-one-core';\nimport React from 'react';\nimport { StyleSheet } from 'react-native';\n\nimport { Barcode, CarouselImage, CarouselImageType, Mrz, QrCode } from '../../ui-components/credential';\nimport { ImageOrComponent } from '../../ui-components/image';\nimport { isASCII } from '../string';\nimport { concatTestID } from '../testID';\nimport { findClaimByPath } from './credential';\n\nconst styles = StyleSheet.create({\n container: {\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n});\n\nexport const getCarouselImagesFromClaims = (\n claims: Claim[],\n layoutProperties?: CredentialSchemaLayoutProperties,\n testID?: string,\n): CarouselImage[] => {\n const result: CarouselImage[] = [];\n\n if (!layoutProperties) {\n return result;\n }\n\n const { code, pictureAttribute } = layoutProperties;\n\n if (pictureAttribute) {\n const pictureClaim = findClaimByPath(pictureAttribute, claims);\n if (pictureClaim) {\n result.push({\n element: (\n <ImageOrComponent\n source={{ imageSource: { uri: pictureClaim.value as string } }}\n style={styles.container}\n testID={concatTestID(testID, CarouselImageType.Photo)}\n />\n ),\n type: CarouselImageType.Photo,\n });\n }\n }\n\n if (code) {\n const claim = findClaimByPath(code.attribute, claims);\n\n if (claim && typeof claim.value === 'number') {\n claim.value = String(claim.value);\n }\n\n if (!claim || typeof claim.value !== 'string') {\n return result;\n }\n\n if (code.type === CredentialSchemaCodeType.QR_CODE) {\n result.push({\n element: <QrCode content={claim.value} testID={concatTestID(testID, CarouselImageType.QrCode)} />,\n type: CarouselImageType.QrCode,\n });\n } else if (code.type === CredentialSchemaCodeType.BARCODE && isASCII(claim.value)) {\n result.push({\n element: <Barcode content={claim.value} testID={concatTestID(testID, CarouselImageType.Barcode)} />,\n type: CarouselImageType.Barcode,\n });\n } else if (code.type === CredentialSchemaCodeType.MRZ) {\n result.push({\n element: <Mrz content={claim.value} testID={concatTestID(testID, CarouselImageType.MRZ)} />,\n type: CarouselImageType.MRZ,\n });\n }\n }\n\n return result;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["CredentialSchemaCodeTypeBindingDto","React","StyleSheet","Barcode","CarouselImageType","Mrz","QrCode","ImageOrComponent","isASCII","concatTestID","findClaimByPath","styles","create","container","height","justifyContent","width","getCarouselImagesFromClaims","claims","layoutProperties","testID","result","code","pictureAttribute","pictureClaim","push","element","createElement","source","imageSource","uri","value","style","Photo","type","claim","attribute","claimValue","type_","String","QR_CODE","content","BARCODE","MRZ"],"sources":["credential-images.tsx"],"sourcesContent":["import {\n ClaimBindingDto,\n CredentialSchemaCodeTypeBindingDto,\n CredentialSchemaLayoutPropertiesBindingDto,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\nimport { StyleSheet } from 'react-native';\n\nimport { Barcode, CarouselImage, CarouselImageType, Mrz, QrCode } from '../../ui-components/credential';\nimport { ImageOrComponent } from '../../ui-components/image';\nimport { isASCII } from '../string';\nimport { concatTestID } from '../testID';\nimport { findClaimByPath } from './credential';\n\nconst styles = StyleSheet.create({\n container: {\n height: '100%',\n justifyContent: 'center',\n width: '100%',\n },\n});\n\nexport const getCarouselImagesFromClaims = (\n claims: ClaimBindingDto[],\n layoutProperties?: CredentialSchemaLayoutPropertiesBindingDto,\n testID?: string,\n): CarouselImage[] => {\n const result: CarouselImage[] = [];\n\n if (!layoutProperties) {\n return result;\n }\n\n const { code, pictureAttribute } = layoutProperties;\n\n if (pictureAttribute) {\n const pictureClaim = findClaimByPath(pictureAttribute, claims);\n if (pictureClaim) {\n result.push({\n element: (\n <ImageOrComponent\n source={{ imageSource: { uri: pictureClaim.value.value as string } }}\n style={styles.container}\n testID={concatTestID(testID, CarouselImageType.Photo)}\n />\n ),\n type: CarouselImageType.Photo,\n });\n }\n }\n\n if (code) {\n const claim = findClaimByPath(code.attribute, claims);\n\n let claimValue = '';\n\n if (claim && (claim.value.type_ === 'FLOAT' || claim.value.type_ === 'INTEGER')) {\n claimValue = String(claim.value.value);\n }\n\n if (!claim || typeof claimValue !== 'string') {\n return result;\n }\n\n if (code.type === CredentialSchemaCodeTypeBindingDto.QR_CODE) {\n result.push({\n element: <QrCode content={claimValue} testID={concatTestID(testID, CarouselImageType.QrCode)} />,\n type: CarouselImageType.QrCode,\n });\n } else if (code.type === CredentialSchemaCodeTypeBindingDto.BARCODE && isASCII(claimValue)) {\n result.push({\n element: <Barcode content={claimValue} testID={concatTestID(testID, CarouselImageType.Barcode)} />,\n type: CarouselImageType.Barcode,\n });\n } else if (code.type === CredentialSchemaCodeTypeBindingDto.MRZ) {\n result.push({\n element: <Mrz content={claimValue} testID={concatTestID(testID, CarouselImageType.MRZ)} />,\n type: CarouselImageType.MRZ,\n });\n }\n }\n\n return result;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,48 +1,29 @@
1
- import { DataTypeEnum } from '@procivis/react-native-one-core';
2
1
  import React from 'react';
3
2
  import { CredentialNoticeWarningIcon, CredentialWarningIcon, Selector, SelectorStatus } from '../../ui-components';
4
3
  import { concatTestID } from '../testID';
5
4
  import { detailsCardAttributeFromClaim, getCredentialCardPropsFromCredential, supportsSelectiveDisclosure } from '.';
6
5
  import { validityCheckedCardFromCredential } from './credential-sharing';
7
6
  const v2ClaimValueToClaimValue = value => {
8
- if (!Array.isArray(value)) {
7
+ if (value.type_ !== 'NESTED') {
9
8
  return value;
10
9
  }
11
- return value.map(c => v2PresentationClaimToClaim(c));
10
+ return {
11
+ type_: 'NESTED',
12
+ value: value.value.map(c => v2PresentationClaimToClaim(c))
13
+ };
12
14
  };
13
15
  const v2PresentationClaimToClaim = claim => {
14
- if (Array.isArray(claim.value)) {
15
- if (claim.schema.array) {
16
- return {
17
- array: claim.schema.array,
18
- dataType: claim.schema.datatype,
19
- id: claim.path,
20
- key: claim.path,
21
- value: v2ClaimValueToClaimValue(claim.value)
22
- };
23
- } else {
24
- return {
25
- array: claim.schema.array,
26
- dataType: DataTypeEnum.Object,
27
- id: claim.path,
28
- key: claim.path,
29
- value: v2ClaimValueToClaimValue(claim.value)
30
- };
31
- }
32
- }
33
16
  return {
34
- array: false,
35
- dataType: claim.schema.datatype,
36
- id: claim.path,
37
- key: claim.path,
38
- value: claim.value
17
+ schema: claim.schema,
18
+ path: claim.path,
19
+ value: v2ClaimValueToClaimValue(claim.value)
39
20
  };
40
21
  };
41
22
  const getAttributeSelectorStatus = (claim, selected, force) => {
42
23
  if (claim.required && selected) {
43
24
  return SelectorStatus.Required;
44
25
  }
45
- if (force && claim.value) {
26
+ if (force) {
46
27
  return SelectorStatus.Required;
47
28
  }
48
29
  if (claim.userSelection) {
@@ -74,19 +55,19 @@ export const shareCredentialCardAttributeFromV2Claim = (claim, selection, parent
74
55
  selected,
75
56
  testID
76
57
  };
77
- if (Array.isArray(claim.value)) {
58
+ if (claim.value.type_ === 'NESTED') {
78
59
  if (claim.schema.array) {
79
60
  return {
80
61
  ...credentialAttribute,
81
62
  attributes: undefined,
82
63
  image: undefined,
83
64
  value: undefined,
84
- values: claim.value.map(v => shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true, false))
65
+ values: claim.value.value.map(v => shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true, false))
85
66
  };
86
67
  } else if (claim.schema.datatype === 'OBJECT') {
87
68
  return {
88
69
  ...credentialAttribute,
89
- attributes: claim.value.map(v => shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true)),
70
+ attributes: claim.value.value.map(v => shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true)),
90
71
  image: undefined,
91
72
  value: undefined,
92
73
  valueErrorColor: undefined,
@@ -166,10 +147,10 @@ export const selectCredentialCardFromV2Credential = (credential, selected, multi
166
147
  };
167
148
  };
168
149
  export const getV2CredentialClaimAllSubpaths = claim => {
169
- if (!Array.isArray(claim.value)) {
150
+ if (claim.value.type_ !== 'NESTED') {
170
151
  return [claim.path];
171
152
  }
172
- return [claim.path, ...claim.value.flatMap(getV2CredentialClaimAllSubpaths)];
153
+ return [claim.path, ...claim.value.value.flatMap(getV2CredentialClaimAllSubpaths)];
173
154
  };
174
155
  export const getV2CredentialAvailablePaths = credential => {
175
156
  return credential.claims.flatMap(getV2CredentialClaimAllSubpaths);
@@ -1 +1 @@
1
- {"version":3,"names":["DataTypeEnum","React","CredentialNoticeWarningIcon","CredentialWarningIcon","Selector","SelectorStatus","concatTestID","detailsCardAttributeFromClaim","getCredentialCardPropsFromCredential","supportsSelectiveDisclosure","validityCheckedCardFromCredential","v2ClaimValueToClaimValue","value","Array","isArray","map","c","v2PresentationClaimToClaim","claim","schema","array","dataType","datatype","id","path","key","Object","getAttributeSelectorStatus","selected","force","required","Required","userSelection","SelectedCheckmark","Empty","shareCredentialCardAttributeFromV2Claim","selection","parentShared","parentUserSelected","config","testID","nested","listValue","attributeShared","Boolean","some","startsWith","userSelected","includes","status","undefined","attribute","disabledStatus","Disabled","Rejected","disabled","credentialAttribute","rightAccessory","createElement","attributes","image","values","v","valueErrorColor","missingCredentialCardFromFailureHint","failureHint","notice","labels","_failureHint$credenti","_failureHint$credenti2","cardImage","color","header","credentialDetailErrorColor","credentialDetailPrimary","missingCredential","credentialDetailTestID","credentialName","credentialSchema","name","statusIcon","shareCredentialCardFromV2PresentationCredential","credential","expanded","multipleCredentialsAvailable","selectedFields","_credential$issuer","_credential$claims$ma","selectiveDisclosureSupported","issuer","noticeIcon","text","selectiveDisclosureNotice","cardTestId","card","claims","selectCredentialCardFromV2Credential","multiple","_credential$issuer2","_credential$claims$ma2","selectedStatus","SelectedRadio","cardProps","accessory","getV2CredentialClaimAllSubpaths","flatMap","getV2CredentialAvailablePaths"],"sources":["credential-sharing-v2.tsx"],"sourcesContent":["import {\n Claim,\n Config,\n DataTypeEnum,\n FailureHint,\n PresentationDefinitionV2ClaimValue,\n PresentationDefinitionV2CredentialClaim,\n PresentationDefinitionV2CredentialDetail,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardNotice,\n CredentialCardProps,\n CredentialNoticeWarningIcon,\n CredentialWarningIcon,\n Selector,\n SelectorStatus,\n} from '../../ui-components';\nimport { concatTestID } from '../testID';\nimport {\n CredentialDetailsCardPropsWithoutWidth,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n supportsSelectiveDisclosure,\n} from '.';\nimport { ShareCredentialCardLabels, validityCheckedCardFromCredential } from './credential-sharing';\n\nconst v2ClaimValueToClaimValue = (value: PresentationDefinitionV2ClaimValue): string | number | boolean | Claim[] => {\n if (!Array.isArray(value)) {\n return value;\n }\n return value.map((c) => v2PresentationClaimToClaim(c));\n};\n\nconst v2PresentationClaimToClaim = (claim: PresentationDefinitionV2CredentialClaim): Claim => {\n if (Array.isArray(claim.value)) {\n if (claim.schema.array) {\n return {\n array: claim.schema.array,\n dataType: claim.schema.datatype,\n id: claim.path,\n key: claim.path,\n value: v2ClaimValueToClaimValue(claim.value) as Claim[],\n };\n } else {\n return {\n array: claim.schema.array,\n dataType: DataTypeEnum.Object,\n id: claim.path,\n key: claim.path,\n value: v2ClaimValueToClaimValue(claim.value) as Claim[],\n };\n }\n }\n return {\n array: false,\n dataType: claim.schema.datatype,\n id: claim.path,\n key: claim.path,\n value: claim.value,\n };\n};\n\nconst getAttributeSelectorStatus = (\n claim: PresentationDefinitionV2CredentialClaim,\n selected: boolean,\n force: boolean,\n): SelectorStatus | undefined => {\n if (claim.required && selected) {\n return SelectorStatus.Required;\n }\n if (force && claim.value) {\n return SelectorStatus.Required;\n }\n if (claim.userSelection) {\n if (selected) {\n return SelectorStatus.SelectedCheckmark;\n } else {\n return SelectorStatus.Empty;\n }\n }\n};\n\nexport const shareCredentialCardAttributeFromV2Claim = (\n claim: PresentationDefinitionV2CredentialClaim,\n selection: string[] | undefined,\n parentShared: boolean,\n parentUserSelected: boolean,\n config: Config,\n testID: string,\n nested?: boolean,\n listValue?: boolean,\n): CredentialAttribute => {\n const attributeShared =\n Boolean(selection?.some((path) => path.startsWith(claim.path))) || (parentShared && claim.required);\n const userSelected = parentUserSelected || Boolean(selection?.includes(claim.path));\n const selected = !claim.required && attributeShared;\n const status = selection\n ? getAttributeSelectorStatus(claim, attributeShared, parentUserSelected || (attributeShared && !userSelected))\n : undefined;\n const attribute = detailsCardAttributeFromClaim(v2PresentationClaimToClaim(claim), config, testID);\n const disabledStatus = [SelectorStatus.Disabled, SelectorStatus.Rejected, SelectorStatus.Required];\n const disabled = attribute.disabled || !status || disabledStatus.includes(status);\n const credentialAttribute: CredentialAttribute = {\n ...attribute,\n disabled,\n id: claim.path,\n listValue,\n nested,\n path: claim.path,\n rightAccessory: status && <Selector status={status} />,\n selected,\n testID,\n };\n if (Array.isArray(claim.value)) {\n if (claim.schema.array) {\n return {\n ...credentialAttribute,\n attributes: undefined,\n image: undefined,\n value: undefined,\n values: claim.value.map((v) =>\n shareCredentialCardAttributeFromV2Claim(\n v,\n selection,\n attributeShared,\n userSelected,\n config,\n testID,\n true,\n false,\n ),\n ),\n };\n } else if (claim.schema.datatype === 'OBJECT') {\n return {\n ...credentialAttribute,\n attributes: claim.value.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true),\n ),\n image: undefined,\n value: undefined,\n valueErrorColor: undefined,\n values: undefined,\n };\n }\n }\n return credentialAttribute;\n};\n\nexport const missingCredentialCardFromFailureHint = (\n failureHint: FailureHint['failureHint'] | undefined,\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 header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: failureHint?.credentialSchema?.name ?? '',\n statusIcon: CredentialWarningIcon,\n },\n testID,\n ...notice,\n };\n};\n\nexport const shareCredentialCardFromV2PresentationCredential = (\n credential: PresentationDefinitionV2CredentialDetail | undefined,\n failureHint: FailureHint['failureHint'] | undefined,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\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 noticeIcon: CredentialNoticeWarningIcon,\n text: labels.selectiveDisclosureNotice,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n {\n ...credential,\n claims: [],\n },\n false,\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromFailureHint(failureHint, notice, cardTestId, labels);\n\n return {\n attributes:\n credential?.claims.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, selectedFields ?? [], true, false, config, testID),\n ) ?? [],\n card,\n };\n};\n\nexport const selectCredentialCardFromV2Credential = (\n credential: PresentationDefinitionV2CredentialDetail,\n selected: boolean,\n multiple: boolean,\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 selectedStatus = multiple ? SelectorStatus.SelectedCheckmark : SelectorStatus.SelectedRadio;\n const rightAccessory = <Selector status={selected ? selectedStatus : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n noticeIcon: CredentialNoticeWarningIcon,\n text: labels.selectiveDisclosureNotice,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n {\n ...credential,\n claims: credential.claims.map(v2PresentationClaimToClaim),\n },\n credential.claims.map(v2PresentationClaimToClaim),\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n return {\n attributes:\n credential?.claims.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, undefined, false, false, config, testID),\n ) ?? [],\n card,\n };\n};\n\nexport const getV2CredentialClaimAllSubpaths = (claim: PresentationDefinitionV2CredentialClaim): string[] => {\n if (!Array.isArray(claim.value)) {\n return [claim.path];\n }\n return [claim.path, ...claim.value.flatMap(getV2CredentialClaimAllSubpaths)];\n};\n\nexport const getV2CredentialAvailablePaths = (credential: PresentationDefinitionV2CredentialDetail): string[] => {\n return credential.claims.flatMap(getV2CredentialClaimAllSubpaths);\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","CredentialNoticeWarningIcon","CredentialWarningIcon","Selector","SelectorStatus","concatTestID","detailsCardAttributeFromClaim","getCredentialCardPropsFromCredential","supportsSelectiveDisclosure","validityCheckedCardFromCredential","v2ClaimValueToClaimValue","value","type_","map","c","v2PresentationClaimToClaim","claim","schema","path","getAttributeSelectorStatus","selected","force","required","Required","userSelection","SelectedCheckmark","Empty","shareCredentialCardAttributeFromV2Claim","selection","parentShared","parentUserSelected","config","testID","nested","listValue","attributeShared","Boolean","some","startsWith","userSelected","includes","status","undefined","attribute","disabledStatus","Disabled","Rejected","disabled","credentialAttribute","id","rightAccessory","createElement","array","attributes","image","values","v","datatype","valueErrorColor","missingCredentialCardFromFailureHint","failureHint","notice","labels","_failureHint$credenti","_failureHint$credenti2","cardImage","color","header","credentialDetailErrorColor","credentialDetailPrimary","missingCredential","credentialDetailTestID","credentialName","credentialSchema","name","statusIcon","shareCredentialCardFromV2PresentationCredential","credential","expanded","multipleCredentialsAvailable","selectedFields","_credential$issuer","_credential$claims$ma","selectiveDisclosureSupported","issuer","noticeIcon","text","selectiveDisclosureNotice","cardTestId","card","claims","selectCredentialCardFromV2Credential","multiple","_credential$issuer2","_credential$claims$ma2","selectedStatus","SelectedRadio","cardProps","accessory","getV2CredentialClaimAllSubpaths","flatMap","getV2CredentialAvailablePaths"],"sources":["credential-sharing-v2.tsx"],"sourcesContent":["import {\n ClaimBindingDto,\n ClaimValueBindingDto,\n Config,\n CredentialQueryFailureHintResponseBindingDto,\n PresentationDefinitionV2ClaimBindingDto,\n PresentationDefinitionV2ClaimValueBindingDto,\n PresentationDefinitionV2CredentialDetailBindingDto,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardNotice,\n CredentialCardProps,\n CredentialNoticeWarningIcon,\n CredentialWarningIcon,\n Selector,\n SelectorStatus,\n} from '../../ui-components';\nimport { concatTestID } from '../testID';\nimport {\n CredentialDetailsCardPropsWithoutWidth,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n supportsSelectiveDisclosure,\n} from '.';\nimport { ShareCredentialCardLabels, validityCheckedCardFromCredential } from './credential-sharing';\n\nconst v2ClaimValueToClaimValue = (value: PresentationDefinitionV2ClaimValueBindingDto): ClaimValueBindingDto => {\n if (value.type_ !== 'NESTED') {\n return value;\n }\n return {\n type_: 'NESTED',\n value: value.value.map((c) => v2PresentationClaimToClaim(c)),\n };\n};\n\nconst v2PresentationClaimToClaim = (claim: PresentationDefinitionV2ClaimBindingDto): ClaimBindingDto => {\n return {\n schema: claim.schema,\n path: claim.path,\n value: v2ClaimValueToClaimValue(claim.value),\n };\n};\n\nconst getAttributeSelectorStatus = (\n claim: PresentationDefinitionV2ClaimBindingDto,\n selected: boolean,\n force: boolean,\n): SelectorStatus | undefined => {\n if (claim.required && selected) {\n return SelectorStatus.Required;\n }\n if (force) {\n return SelectorStatus.Required;\n }\n if (claim.userSelection) {\n if (selected) {\n return SelectorStatus.SelectedCheckmark;\n } else {\n return SelectorStatus.Empty;\n }\n }\n};\n\nexport const shareCredentialCardAttributeFromV2Claim = (\n claim: PresentationDefinitionV2ClaimBindingDto,\n selection: string[] | undefined,\n parentShared: boolean,\n parentUserSelected: boolean,\n config: Config,\n testID: string,\n nested?: boolean,\n listValue?: boolean,\n): CredentialAttribute => {\n const attributeShared =\n Boolean(selection?.some((path) => path.startsWith(claim.path))) || (parentShared && claim.required);\n const userSelected = parentUserSelected || Boolean(selection?.includes(claim.path));\n const selected = !claim.required && attributeShared;\n const status = selection\n ? getAttributeSelectorStatus(claim, attributeShared, parentUserSelected || (attributeShared && !userSelected))\n : undefined;\n const attribute = detailsCardAttributeFromClaim(v2PresentationClaimToClaim(claim), config, testID);\n const disabledStatus = [SelectorStatus.Disabled, SelectorStatus.Rejected, SelectorStatus.Required];\n const disabled = attribute.disabled || !status || disabledStatus.includes(status);\n const credentialAttribute: CredentialAttribute = {\n ...attribute,\n disabled,\n id: claim.path,\n listValue,\n nested,\n path: claim.path,\n rightAccessory: status && <Selector status={status} />,\n selected,\n testID,\n };\n if (claim.value.type_ === 'NESTED') {\n if (claim.schema.array) {\n return {\n ...credentialAttribute,\n attributes: undefined,\n image: undefined,\n value: undefined,\n values: claim.value.value.map((v) =>\n shareCredentialCardAttributeFromV2Claim(\n v,\n selection,\n attributeShared,\n userSelected,\n config,\n testID,\n true,\n false,\n ),\n ),\n };\n } else if (claim.schema.datatype === 'OBJECT') {\n return {\n ...credentialAttribute,\n attributes: claim.value.value.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true),\n ),\n image: undefined,\n value: undefined,\n valueErrorColor: undefined,\n values: undefined,\n };\n }\n }\n return credentialAttribute;\n};\n\nexport const missingCredentialCardFromFailureHint = (\n failureHint: CredentialQueryFailureHintResponseBindingDto | undefined,\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 header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: failureHint?.credentialSchema?.name ?? '',\n statusIcon: CredentialWarningIcon,\n },\n testID,\n ...notice,\n };\n};\n\nexport const shareCredentialCardFromV2PresentationCredential = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto | undefined,\n failureHint: CredentialQueryFailureHintResponseBindingDto | undefined,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\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 noticeIcon: CredentialNoticeWarningIcon,\n text: labels.selectiveDisclosureNotice,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n {\n ...credential,\n claims: [],\n },\n false,\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromFailureHint(failureHint, notice, cardTestId, labels);\n\n return {\n attributes:\n credential?.claims.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, selectedFields ?? [], true, false, config, testID),\n ) ?? [],\n card,\n };\n};\n\nexport const selectCredentialCardFromV2Credential = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto,\n selected: boolean,\n multiple: boolean,\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 selectedStatus = multiple ? SelectorStatus.SelectedCheckmark : SelectorStatus.SelectedRadio;\n const rightAccessory = <Selector status={selected ? selectedStatus : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n noticeIcon: CredentialNoticeWarningIcon,\n text: labels.selectiveDisclosureNotice,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n {\n ...credential,\n claims: credential.claims.map(v2PresentationClaimToClaim),\n },\n credential.claims.map(v2PresentationClaimToClaim),\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n return {\n attributes:\n credential?.claims.map((v) =>\n shareCredentialCardAttributeFromV2Claim(v, undefined, false, false, config, testID),\n ) ?? [],\n card,\n };\n};\n\nexport const getV2CredentialClaimAllSubpaths = (claim: PresentationDefinitionV2ClaimBindingDto): string[] => {\n if (claim.value.type_ !== 'NESTED') {\n return [claim.path];\n }\n return [claim.path, ...claim.value.value.flatMap(getV2CredentialClaimAllSubpaths)];\n};\n\nexport const getV2CredentialAvailablePaths = (\n credential: PresentationDefinitionV2CredentialDetailBindingDto,\n): string[] => {\n return credential.claims.flatMap(getV2CredentialClaimAllSubpaths);\n};\n"],"mappings":"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","ignoreList":[]}
@@ -61,20 +61,12 @@ const getAttributeSelectorStatus = (field, validityState, credential, claim, sel
61
61
  };
62
62
  // Returns a spread list of all claims with their full JSON path as key, including all intermediate objects
63
63
  const spreadClaims = claims => {
64
- const claimsWithPath = claims.map(c => {
65
- var _c$path;
66
- return {
67
- ...c,
68
- path: (_c$path = c.path) !== null && _c$path !== void 0 ? _c$path : c.key
69
- };
70
- });
71
- return claimsWithPath.reduce((acc, claim) => {
64
+ return claims.reduce((acc, claim) => {
72
65
  const result = [claim];
73
- if (Array.isArray(claim.value)) {
74
- const nestedClaimsWithPath = claim.value.map((c, i) => ({
66
+ if (claim.value.type_ === 'NESTED') {
67
+ const nestedClaimsWithPath = claim.value.value.map(c => ({
75
68
  ...c,
76
- path: claim.array ? `${c.key}/${i}` : c.key,
77
- isArrayElement: claim.array
69
+ isArrayElement: claim.schema.array && claim.path.split('/').pop() !== claim.schema.key
78
70
  }));
79
71
  result.push(...spreadClaims(nestedClaimsWithPath));
80
72
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","Selector","SelectorStatus","CredentialNoticeWarningIcon","CredentialWarningIcon","RequiredAttributeIcon","concatTestID","detailsCardAttributeFromClaim","getCredentialCardPropsFromCredential","getValidityState","nestAttributes","supportsSelectiveDisclosure","ValidityState","validityCheckedCardFromCredential","credential","invalidLVVC","expanded","multipleCredentialsAvailable","config","notice","testID","labels","credentialHeaderDetail","credentialDetailErrorColor","credentialDetailPrimary","revoked","credentialDetailTestID","multipleCredentials","statusIcon","card","claims","header","missingCredentialCardFromRequest","request","_request$name","cardImage","undefined","color","missingCredential","credentialName","name","id","getAttributeSelectorStatus","field","validityState","claim","selected","Valid","Rejected","required","Required","Disabled","SelectedCheckmark","Empty","spreadClaims","claimsWithPath","map","c","_c$path","path","key","reduce","acc","result","Array","isArray","value","nestedClaimsWithPath","i","array","isArrayElement","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","isApplicable","applicableCredentials","includes","fields","fieldsWithNoKeyMapping","filter","keyMap","fullyNestedFields","getFullyNestedFields","find","status","credentialId","allKeys","every","k","startsWith","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","listValue","split","pop","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","isObject","attributes","length","values","rightAccessory","_attribute$attributes","nested","nestedAttribute","shareCredentialCardFromCredential","_credential$issuer","_credential$issuer2","issuer","text","selectiveDisclosureNotice","noticeIcon","cardTestId","displayedAttributes","index","selectCredentialCardAttributeFromClaim","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?: FlatClaim;\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\ntype ClaimWithOptionalPath = Claim & {\n path?: string;\n};\n\ntype FlatClaim = Claim & {\n path: string;\n isArrayElement?: boolean;\n};\n\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: ClaimWithOptionalPath[]): FlatClaim[] => {\n const claimsWithPath: FlatClaim[] = claims.map((c) => ({\n ...c,\n path: c.path ?? c.key,\n }));\n return claimsWithPath.reduce((acc, claim) => {\n const result = [claim];\n if (Array.isArray(claim.value)) {\n const nestedClaimsWithPath: FlatClaim[] = claim.value.map((c, i) => ({\n ...c,\n path: claim.array ? `${c.key}/${i}` : c.key,\n isArrayElement: claim.array,\n }));\n result.push(...spreadClaims(nestedClaimsWithPath));\n }\n return [...acc, ...result];\n }, [] as FlatClaim[]);\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 const isApplicable = credential ? request.applicableCredentials.includes(credential.id) : false;\n\n let fields = request.fields;\n if (credential) {\n const fieldsWithNoKeyMapping = request.fields\n .filter((field) => !(credential.id in field.keyMap))\n .filter((field) => !isApplicable || !field.required);\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(({ path }) => {\n return path === 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?: FlatClaim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n if (claim) {\n return {\n ...detailsCardAttributeFromClaim(claim, config, testID),\n id,\n path: claim.path,\n listValue: claim.isArrayElement,\n };\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(credential ? { ...credential, issuer: credential.issuer?.id } : undefined);\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?: FlatClaim,\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[] = getFullyNestedFields(request.fields, credential.id).map((field) => {\n const claim = spreadClaims(credential.claims).find(({ path }) => {\n return path === 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","Selector","SelectorStatus","CredentialNoticeWarningIcon","CredentialWarningIcon","RequiredAttributeIcon","concatTestID","detailsCardAttributeFromClaim","getCredentialCardPropsFromCredential","getValidityState","nestAttributes","supportsSelectiveDisclosure","ValidityState","validityCheckedCardFromCredential","credential","invalidLVVC","expanded","multipleCredentialsAvailable","config","notice","testID","labels","credentialHeaderDetail","credentialDetailErrorColor","credentialDetailPrimary","revoked","credentialDetailTestID","multipleCredentials","statusIcon","card","claims","header","missingCredentialCardFromRequest","request","_request$name","cardImage","undefined","color","missingCredential","credentialName","name","id","getAttributeSelectorStatus","field","validityState","claim","selected","Valid","Rejected","required","Required","Disabled","SelectedCheckmark","Empty","spreadClaims","reduce","acc","result","value","type_","nestedClaimsWithPath","map","c","isArrayElement","schema","array","path","split","pop","key","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","isApplicable","applicableCredentials","includes","fields","fieldsWithNoKeyMapping","filter","keyMap","fullyNestedFields","getFullyNestedFields","find","status","credentialId","allKeys","every","k","startsWith","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","listValue","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","isObject","attributes","length","isArray","values","rightAccessory","_attribute$attributes","nested","nestedAttribute","shareCredentialCardFromCredential","_credential$issuer","_credential$issuer2","issuer","text","selectiveDisclosureNotice","noticeIcon","cardTestId","displayedAttributes","index","selectCredentialCardAttributeFromClaim","selectCredentialCardFromCredential","_credential$issuer3","SelectedRadio","cardProps"],"sources":["credential-sharing.tsx"],"sourcesContent":["import {\n ClaimBindingDto,\n Config,\n CredentialDetailBindingDto,\n PresentationDefinitionFieldBindingDto,\n PresentationDefinitionRequestedCredentialBindingDto,\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: CredentialDetailBindingDto,\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: PresentationDefinitionRequestedCredentialBindingDto,\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?: FlatClaim;\n field?: PresentationDefinitionFieldBindingDto;\n id: string;\n selected?: boolean;\n status: SelectorStatus;\n}\n\nconst getAttributeSelectorStatus = (\n field: PresentationDefinitionFieldBindingDto,\n validityState: ValidityState,\n credential?: CredentialDetailBindingDto,\n claim?: ClaimBindingDto,\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\ntype FlatClaim = ClaimBindingDto & {\n isArrayElement?: boolean;\n};\n\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: ClaimBindingDto[]): FlatClaim[] => {\n return claims.reduce((acc, claim) => {\n const result = [claim];\n if (claim.value.type_ === 'NESTED') {\n const nestedClaimsWithPath: FlatClaim[] = claim.value.value.map((c) => ({\n ...c,\n isArrayElement: claim.schema.array && claim.path.split('/').pop() !== claim.schema.key,\n }));\n result.push(...spreadClaims(nestedClaimsWithPath));\n }\n return [...acc, ...result];\n }, [] as FlatClaim[]);\n};\n\nconst getDisplayedAttributes = (\n request: PresentationDefinitionRequestedCredentialBindingDto,\n validityState: ValidityState,\n credential?: CredentialDetailBindingDto,\n selectiveDisclosureSupported?: boolean,\n selectedFields?: string[],\n): DisplayedAttribute[] => {\n const claims = credential ? spreadClaims(credential.claims) : undefined;\n const isApplicable = credential ? request.applicableCredentials.includes(credential.id) : false;\n\n let fields = request.fields;\n if (credential) {\n const fieldsWithNoKeyMapping = request.fields\n .filter((field) => !(credential.id in field.keyMap))\n .filter((field) => !isApplicable || !field.required);\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(({ path }) => {\n return path === 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: PresentationDefinitionRequestedCredentialBindingDto['fields'],\n credentialId: CredentialDetailBindingDto['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?: FlatClaim,\n field?: PresentationDefinitionFieldBindingDto,\n): CredentialAttribute => {\n if (claim) {\n return {\n ...detailsCardAttributeFromClaim(claim, config, testID),\n id,\n path: claim.path,\n listValue: claim.isArrayElement,\n };\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: CredentialDetailBindingDto | undefined,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n request: PresentationDefinitionRequestedCredentialBindingDto,\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(credential ? { ...credential, issuer: credential.issuer?.id } : undefined);\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?: FlatClaim,\n field?: PresentationDefinitionFieldBindingDto,\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: CredentialDetailBindingDto,\n selected: boolean,\n request: PresentationDefinitionRequestedCredentialBindingDto,\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[] = getFullyNestedFields(request.fields, credential.id).map((field) => {\n const claim = spreadClaims(credential.claims).find(({ path }) => {\n return path === 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,4 +1,4 @@
1
- import { CredentialStateEnum, DataTypeEnum, FormatFeatureEnum } from '@procivis/react-native-one-core';
1
+ import { CredentialStateBindingEnum, DataTypeEnum, FormatFeatureEnum } from '@procivis/react-native-one-core';
2
2
  import { CredentialErrorIcon, CredentialNoticeWarningIcon, CredentialWarningIcon } from '../../ui-components/icons';
3
3
  import { formatDateLocalized, formatDateTimeLocalized } from '../date';
4
4
  import { concatTestID } from '../testID';
@@ -10,10 +10,10 @@ export let ValidityState = /*#__PURE__*/function (ValidityState) {
10
10
  return ValidityState;
11
11
  }({});
12
12
  export const getValidityState = credential => {
13
- if ((credential === null || credential === void 0 ? void 0 : credential.state) === CredentialStateEnum.REVOKED) {
13
+ if ((credential === null || credential === void 0 ? void 0 : credential.state) === CredentialStateBindingEnum.REVOKED) {
14
14
  return ValidityState.Revoked;
15
15
  }
16
- if ((credential === null || credential === void 0 ? void 0 : credential.state) === CredentialStateEnum.SUSPENDED) {
16
+ if ((credential === null || credential === void 0 ? void 0 : credential.state) === CredentialStateBindingEnum.SUSPENDED) {
17
17
  return ValidityState.Suspended;
18
18
  }
19
19
  return ValidityState.Valid;
@@ -23,26 +23,28 @@ export const supportsSelectiveDisclosure = (credential, config) => {
23
23
  const formatConfig = credential && (config === null || config === void 0 ? void 0 : config.format[credential.schema.format]);
24
24
  return formatConfig ? Boolean((_formatConfig$capabil = formatConfig.capabilities) === null || _formatConfig$capabil === void 0 || (_formatConfig$capabil = _formatConfig$capabil.features) === null || _formatConfig$capabil === void 0 ? void 0 : _formatConfig$capabil.includes(FormatFeatureEnum.SelectiveDisclosure)) : undefined;
25
25
  };
26
- const findClaimByPathParts = (path, claims) => {
27
- if (!(claims !== null && claims !== void 0 && claims.length)) {
26
+ export const findClaimByPath = (path, claims) => {
27
+ if (!path) {
28
28
  return undefined;
29
29
  }
30
- const [first, second, ...rest] = path;
31
- const claim = claims.find(c => c.key === first);
32
- if (claim === undefined || second === undefined || claim.dataType !== DataTypeEnum.Object) {
33
- return claim;
30
+ const exactClaim = claims.find(claim => claim.path === path);
31
+ if (exactClaim) {
32
+ return exactClaim;
34
33
  }
35
- return findClaimByPathParts([`${first}/${second}`, ...rest], claim.value);
34
+ const parentClaim = claims.find(claim => path.startsWith(`${claim.path}/`));
35
+ if (parentClaim && parentClaim.value.type_ === 'NESTED') {
36
+ return findClaimByPath(path, parentClaim.value.value);
37
+ }
38
+ return undefined;
36
39
  };
37
- export const findClaimByPath = (path, claims) => path ? findClaimByPathParts(path.split('/'), claims) : undefined;
38
40
  const formatCredentialDetail = (claim, config, testID) => {
39
41
  var _attributeValue$value;
40
42
  const attributeValue = detailsCardAttributeValueFromClaim(claim, config, testID);
41
43
  return (_attributeValue$value = attributeValue.value) !== null && _attributeValue$value !== void 0 ? _attributeValue$value : '';
42
44
  };
43
45
  export const hasMsoValidityIssues = credential => {
44
- const mdocMsoValidity = 'mdocMsoValidity' in credential ? credential.mdocMsoValidity : undefined;
45
- const mdocMsoValidityIssue = Boolean((mdocMsoValidity === null || mdocMsoValidity === void 0 ? void 0 : mdocMsoValidity.nextUpdate) && new Date(mdocMsoValidity.nextUpdate) < new Date());
46
+ var _credential$mdocMsoVa;
47
+ const mdocMsoValidityIssue = Boolean(((_credential$mdocMsoVa = credential.mdocMsoValidity) === null || _credential$mdocMsoVa === void 0 ? void 0 : _credential$mdocMsoVa.nextUpdate) && new Date(credential.mdocMsoValidity.nextUpdate) < new Date());
46
48
  return mdocMsoValidityIssue;
47
49
  };
48
50
  const credentialDetailFromCredential = (credential, claims = [], config, testID, labels) => {
@@ -51,13 +53,13 @@ const credentialDetailFromCredential = (credential, claims = [], config, testID,
51
53
  layoutProperties
52
54
  } = credential.schema;
53
55
  switch (credential.state) {
54
- case CredentialStateEnum.SUSPENDED:
56
+ case CredentialStateBindingEnum.SUSPENDED:
55
57
  return {
56
58
  credentialDetailPrimary: credential.suspendEndDate ? labels.suspendedUntil(formatDateTimeLocalized(new Date(credential.suspendEndDate))) : labels.suspended,
57
59
  credentialDetailTestID: concatTestID(testID, 'suspended'),
58
60
  statusIcon: CredentialWarningIcon
59
61
  };
60
- case CredentialStateEnum.REVOKED:
62
+ case CredentialStateBindingEnum.REVOKED:
61
63
  return {
62
64
  credentialDetailPrimary: labels.revoked,
63
65
  credentialDetailErrorColor: true,
@@ -145,47 +147,44 @@ export const getCredentialCardPropsFromCredential = (credential, claims = [], co
145
147
  export const detailsCardAttributeFromClaim = (claim, config, testID) => {
146
148
  const value = detailsCardAttributeValueFromClaim(claim, config, testID);
147
149
  return {
148
- id: claim.id,
149
- name: claim.key.split('/').pop(),
150
- path: claim.key,
150
+ id: claim.path,
151
+ name: claim.path.split('/').pop(),
152
+ path: claim.path,
151
153
  ...value
152
154
  };
153
155
  };
154
156
  const detailsCardAttributeValueFromClaim = (claim, config, testID) => {
155
- const typeConfig = config === null || config === void 0 ? void 0 : config.datatype[claim.dataType];
156
- if (claim.array) {
157
+ const typeConfig = config === null || config === void 0 ? void 0 : config.datatype[claim.schema.datatype];
158
+ if (claim.schema.array) {
157
159
  return {
158
- values: (claim.value || []).map((arrayValue, index) => {
159
- return detailsCardAttributeFromClaim({
160
- ...arrayValue,
161
- id: `${arrayValue.id}/${index}`
162
- }, config, concatTestID(testID, index.toString()));
160
+ values: (claim.value.value || []).map((arrayValue, index) => {
161
+ return detailsCardAttributeFromClaim(arrayValue, config, concatTestID(testID, index.toString()));
163
162
  })
164
163
  };
165
164
  } else {
166
165
  switch (typeConfig === null || typeConfig === void 0 ? void 0 : typeConfig.type) {
167
166
  case DataTypeEnum.Object:
168
167
  {
169
- if (!Array.isArray(claim.value)) {
168
+ if (claim.value.type_ !== 'NESTED') {
170
169
  return {
171
170
  attributes: []
172
171
  };
173
172
  }
174
173
  return {
175
- attributes: claim.value.map((nestedClaim, index) => detailsCardAttributeFromClaim(nestedClaim, config, concatTestID(testID, index.toString())))
174
+ attributes: claim.value.value.map((nestedClaim, index) => detailsCardAttributeFromClaim(nestedClaim, config, concatTestID(testID, index.toString())))
176
175
  };
177
176
  }
178
177
  case DataTypeEnum.Date:
179
178
  {
180
179
  var _formatDateLocalized;
181
- if (!claim.value) {
180
+ if (!claim.value.value) {
182
181
  // Don't try to parse empty values (which will return "Invalid Date")
183
182
  return {
184
183
  testID: testID,
185
- value: String(claim.value)
184
+ value: String(claim.value.value)
186
185
  };
187
186
  }
188
- const date = claim.value;
187
+ const date = claim.value.value;
189
188
  return {
190
189
  testID: testID,
191
190
  value: (_formatDateLocalized = formatDateLocalized(new Date(date))) !== null && _formatDateLocalized !== void 0 ? _formatDateLocalized : date
@@ -198,21 +197,21 @@ const detailsCardAttributeValueFromClaim = (claim, config, testID) => {
198
197
  if (((_typeConfig$params = typeConfig.params) === null || _typeConfig$params === void 0 ? void 0 : _typeConfig$params.showAs) === 'IMAGE') {
199
198
  return {
200
199
  image: {
201
- uri: claim.value
200
+ uri: claim.value.value
202
201
  },
203
202
  testID: testID
204
203
  };
205
204
  } else {
206
205
  return {
207
206
  testID: testID,
208
- value: claim.value
207
+ value: claim.value.value
209
208
  };
210
209
  }
211
210
  }
212
211
  default:
213
212
  return {
214
213
  testID: testID,
215
- value: String(claim.value)
214
+ value: String(claim.value.value)
216
215
  };
217
216
  }
218
217
  }