@procivis/one-react-native-components 0.3.71 → 0.3.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/credential/credential.js +8 -2
- package/lib/commonjs/components/credential/credential.js.map +1 -1
- package/lib/commonjs/components/proof-request/index.js +23 -12
- package/lib/commonjs/components/proof-request/index.js.map +1 -1
- package/lib/commonjs/components/proof-request/select-share-credential-card-notice.js +37 -0
- package/lib/commonjs/components/proof-request/select-share-credential-card-notice.js.map +1 -0
- package/lib/commonjs/components/proof-request/share-credential-card-notice.js +36 -0
- package/lib/commonjs/components/proof-request/share-credential-card-notice.js.map +1 -0
- package/lib/commonjs/components/proof-request/{group.js → v1/group.js} +1 -1
- package/lib/commonjs/components/proof-request/v1/group.js.map +1 -0
- package/lib/commonjs/components/proof-request/v1/index.js +39 -0
- package/lib/commonjs/components/proof-request/v1/index.js.map +1 -0
- package/lib/commonjs/components/proof-request/{select-credential.js → v1/select-credential.js} +12 -6
- package/lib/commonjs/components/proof-request/v1/select-credential.js.map +1 -0
- package/lib/commonjs/components/proof-request/{share-credential.js → v1/share-credential.js} +33 -62
- package/lib/commonjs/components/proof-request/v1/share-credential.js.map +1 -0
- package/lib/commonjs/components/proof-request/v2/index.js +39 -0
- package/lib/commonjs/components/proof-request/v2/index.js.map +1 -0
- package/lib/commonjs/components/proof-request/v2/select-credential-v2.js +55 -0
- package/lib/commonjs/components/proof-request/v2/select-credential-v2.js.map +1 -0
- package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js +164 -0
- package/lib/commonjs/components/proof-request/v2/share-credential-v2-group.js.map +1 -0
- package/lib/commonjs/components/proof-request/v2/share-credential-v2.js +135 -0
- package/lib/commonjs/components/proof-request/v2/share-credential-v2.js.map +1 -0
- package/lib/commonjs/ui-components/buttons/share-button.js +1 -1
- package/lib/commonjs/ui-components/buttons/share-button.js.map +1 -1
- package/lib/commonjs/ui-components/camera/qr-code-scanner.js +5 -1
- package/lib/commonjs/ui-components/camera/qr-code-scanner.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js +16 -42
- package/lib/commonjs/ui-components/credential/card/credential-details-list-item.js.map +1 -1
- package/lib/commonjs/ui-components/credential/credential-attribute-item.js +3 -1
- package/lib/commonjs/ui-components/credential/credential-attribute-item.js.map +1 -1
- package/lib/commonjs/ui-components/credential/group/credential-group-header.js +72 -0
- package/lib/commonjs/ui-components/credential/group/credential-group-header.js.map +1 -0
- package/lib/commonjs/ui-components/credential/group/index.js +14 -0
- package/lib/commonjs/ui-components/credential/group/index.js.map +1 -0
- package/lib/commonjs/ui-components/credential/index.js +12 -0
- package/lib/commonjs/ui-components/credential/index.js.map +1 -1
- package/lib/commonjs/ui-components/header/foldable-header.js +29 -17
- package/lib/commonjs/ui-components/header/foldable-header.js.map +1 -1
- package/lib/commonjs/ui-components/index.js +11 -0
- package/lib/commonjs/ui-components/index.js.map +1 -1
- package/lib/commonjs/ui-components/loader/loading-result.js +1 -1
- package/lib/commonjs/ui-components/loader/loading-result.js.map +1 -1
- package/lib/commonjs/ui-components/pin/pin-lock-animation.js +477 -475
- package/lib/commonjs/ui-components/pin/pin-lock-animation.js.map +1 -1
- package/lib/commonjs/ui-components/proof-request/index.js +13 -0
- package/lib/commonjs/ui-components/proof-request/index.js.map +1 -0
- package/lib/commonjs/ui-components/proof-request/proof-request-set.js +47 -0
- package/lib/commonjs/ui-components/proof-request/proof-request-set.js.map +1 -0
- package/lib/commonjs/ui-components/screens/section-list-screen.js +17 -3
- package/lib/commonjs/ui-components/screens/section-list-screen.js.map +1 -1
- package/lib/commonjs/utils/array.js.map +1 -1
- package/lib/commonjs/utils/hooks/app-state.js +33 -0
- package/lib/commonjs/utils/hooks/app-state.js.map +1 -0
- package/lib/commonjs/utils/hooks/core/backup.js +1 -1
- package/lib/commonjs/utils/hooks/core/backup.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/credentials.js +10 -3
- package/lib/commonjs/utils/hooks/core/credentials.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/identifiers.js +1 -1
- package/lib/commonjs/utils/hooks/core/identifiers.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/index.js +11 -0
- package/lib/commonjs/utils/hooks/core/index.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/proofs.js +39 -10
- package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/wallet-unit.js +85 -0
- package/lib/commonjs/utils/hooks/core/wallet-unit.js.map +1 -0
- package/lib/commonjs/utils/hooks/index.js +11 -0
- package/lib/commonjs/utils/hooks/index.js.map +1 -1
- package/lib/commonjs/utils/hooks/revocation/credential-status.js +1 -1
- package/lib/commonjs/utils/hooks/revocation/credential-status.js.map +1 -1
- package/lib/commonjs/utils/index.js +16 -4
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js +190 -0
- package/lib/commonjs/utils/parsers/credential-sharing-v2.js.map +1 -0
- package/lib/commonjs/utils/parsers/credential-sharing.js +31 -18
- package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential.js +111 -63
- package/lib/commonjs/utils/parsers/credential.js.map +1 -1
- package/lib/commonjs/utils/parsers/index.js +11 -0
- package/lib/commonjs/utils/parsers/index.js.map +1 -1
- package/lib/commonjs/utils/parsers/query.js +4 -4
- package/lib/commonjs/utils/parsers/query.js.map +1 -1
- package/lib/commonjs/utils/wallet-unit.js +30 -0
- package/lib/commonjs/utils/wallet-unit.js.map +1 -0
- package/lib/module/components/credential/credential.js +8 -2
- package/lib/module/components/credential/credential.js.map +1 -1
- package/lib/module/components/proof-request/index.js +4 -3
- package/lib/module/components/proof-request/index.js.map +1 -1
- package/lib/module/components/proof-request/select-share-credential-card-notice.js +29 -0
- package/lib/module/components/proof-request/select-share-credential-card-notice.js.map +1 -0
- package/lib/module/components/proof-request/share-credential-card-notice.js +28 -0
- package/lib/module/components/proof-request/share-credential-card-notice.js.map +1 -0
- package/lib/module/components/proof-request/{group.js → v1/group.js} +1 -1
- package/lib/module/components/proof-request/v1/group.js.map +1 -0
- package/lib/module/components/proof-request/v1/index.js +4 -0
- package/lib/module/components/proof-request/v1/index.js.map +1 -0
- package/lib/module/components/proof-request/{select-credential.js → v1/select-credential.js} +12 -6
- package/lib/module/components/proof-request/v1/select-credential.js.map +1 -0
- package/lib/module/components/proof-request/v1/share-credential.js +118 -0
- package/lib/module/components/proof-request/v1/share-credential.js.map +1 -0
- package/lib/module/components/proof-request/v2/index.js +4 -0
- package/lib/module/components/proof-request/v2/index.js.map +1 -0
- package/lib/module/components/proof-request/v2/select-credential-v2.js +46 -0
- package/lib/module/components/proof-request/v2/select-credential-v2.js.map +1 -0
- package/lib/module/components/proof-request/v2/share-credential-v2-group.js +154 -0
- package/lib/module/components/proof-request/v2/share-credential-v2-group.js.map +1 -0
- package/lib/module/components/proof-request/v2/share-credential-v2.js +126 -0
- package/lib/module/components/proof-request/v2/share-credential-v2.js.map +1 -0
- package/lib/module/ui-components/buttons/share-button.js +1 -1
- package/lib/module/ui-components/buttons/share-button.js.map +1 -1
- package/lib/module/ui-components/camera/qr-code-scanner.js +5 -1
- package/lib/module/ui-components/camera/qr-code-scanner.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-details-list-item.js +19 -45
- package/lib/module/ui-components/credential/card/credential-details-list-item.js.map +1 -1
- package/lib/module/ui-components/credential/credential-attribute-item.js +3 -1
- package/lib/module/ui-components/credential/credential-attribute-item.js.map +1 -1
- package/lib/module/ui-components/credential/group/credential-group-header.js +64 -0
- package/lib/module/ui-components/credential/group/credential-group-header.js.map +1 -0
- package/lib/module/ui-components/credential/group/index.js +3 -0
- package/lib/module/ui-components/credential/group/index.js.map +1 -0
- package/lib/module/ui-components/credential/index.js +1 -0
- package/lib/module/ui-components/credential/index.js.map +1 -1
- package/lib/module/ui-components/header/foldable-header.js +29 -17
- package/lib/module/ui-components/header/foldable-header.js.map +1 -1
- package/lib/module/ui-components/index.js +1 -0
- package/lib/module/ui-components/index.js.map +1 -1
- package/lib/module/ui-components/loader/loading-result.js +1 -1
- package/lib/module/ui-components/loader/loading-result.js.map +1 -1
- package/lib/module/ui-components/pin/pin-lock-animation.js +477 -475
- package/lib/module/ui-components/pin/pin-lock-animation.js.map +1 -1
- package/lib/module/ui-components/proof-request/index.js +3 -0
- package/lib/module/ui-components/proof-request/index.js.map +1 -0
- package/lib/module/ui-components/proof-request/proof-request-set.js +39 -0
- package/lib/module/ui-components/proof-request/proof-request-set.js.map +1 -0
- package/lib/module/ui-components/screens/section-list-screen.js +15 -3
- package/lib/module/ui-components/screens/section-list-screen.js.map +1 -1
- package/lib/module/utils/array.js.map +1 -1
- package/lib/module/utils/hooks/app-state.js +27 -0
- package/lib/module/utils/hooks/app-state.js.map +1 -0
- package/lib/module/utils/hooks/core/backup.js +1 -1
- package/lib/module/utils/hooks/core/backup.js.map +1 -1
- package/lib/module/utils/hooks/core/credentials.js +11 -4
- package/lib/module/utils/hooks/core/credentials.js.map +1 -1
- package/lib/module/utils/hooks/core/identifiers.js +5 -5
- package/lib/module/utils/hooks/core/identifiers.js.map +1 -1
- package/lib/module/utils/hooks/core/index.js +1 -0
- package/lib/module/utils/hooks/core/index.js.map +1 -1
- package/lib/module/utils/hooks/core/proofs.js +40 -11
- package/lib/module/utils/hooks/core/proofs.js.map +1 -1
- package/lib/module/utils/hooks/core/wallet-unit.js +75 -0
- package/lib/module/utils/hooks/core/wallet-unit.js.map +1 -0
- package/lib/module/utils/hooks/index.js +1 -0
- package/lib/module/utils/hooks/index.js.map +1 -1
- package/lib/module/utils/hooks/revocation/credential-status.js +1 -1
- package/lib/module/utils/hooks/revocation/credential-status.js.map +1 -1
- package/lib/module/utils/index.js +2 -1
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing-v2.js +177 -0
- package/lib/module/utils/parsers/credential-sharing-v2.js.map +1 -0
- package/lib/module/utils/parsers/credential-sharing.js +31 -18
- package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/module/utils/parsers/credential.js +112 -64
- package/lib/module/utils/parsers/credential.js.map +1 -1
- package/lib/module/utils/parsers/index.js +1 -0
- package/lib/module/utils/parsers/index.js.map +1 -1
- package/lib/module/utils/parsers/query.js +4 -4
- package/lib/module/utils/parsers/query.js.map +1 -1
- package/lib/module/utils/wallet-unit.js +22 -0
- package/lib/module/utils/wallet-unit.js.map +1 -0
- package/lib/typescript/components/proof-request/index.d.ts +4 -3
- package/lib/typescript/components/proof-request/select-share-credential-card-notice.d.ts +7 -0
- package/lib/typescript/components/proof-request/share-credential-card-notice.d.ts +6 -0
- package/lib/typescript/components/proof-request/v1/index.d.ts +3 -0
- package/lib/typescript/components/proof-request/{select-credential.d.ts → v1/select-credential.d.ts} +1 -1
- package/lib/typescript/components/proof-request/{share-credential.d.ts → v1/share-credential.d.ts} +1 -1
- package/lib/typescript/components/proof-request/v2/index.d.ts +3 -0
- package/lib/typescript/components/proof-request/v2/select-credential-v2.d.ts +14 -0
- package/lib/typescript/components/proof-request/v2/share-credential-v2-group.d.ts +24 -0
- package/lib/typescript/components/proof-request/v2/share-credential-v2.d.ts +23 -0
- package/lib/typescript/ui-components/credential/group/credential-group-header.d.ts +10 -0
- package/lib/typescript/ui-components/credential/group/index.d.ts +3 -0
- package/lib/typescript/ui-components/credential/index.d.ts +1 -0
- package/lib/typescript/ui-components/header/foldable-header.d.ts +1 -0
- package/lib/typescript/ui-components/index.d.ts +1 -0
- package/lib/typescript/ui-components/loader/loading-result.d.ts +1 -1
- package/lib/typescript/ui-components/pin/pin-lock-animation.d.ts +311 -311
- package/lib/typescript/ui-components/proof-request/index.d.ts +3 -0
- package/lib/typescript/ui-components/proof-request/proof-request-set.d.ts +7 -0
- package/lib/typescript/ui-components/screens/section-list-screen.d.ts +4 -2
- package/lib/typescript/utils/array.d.ts +1 -0
- package/lib/typescript/utils/hooks/app-state.d.ts +5 -0
- package/lib/typescript/utils/hooks/core/backup.d.ts +1 -1
- package/lib/typescript/utils/hooks/core/credentials.d.ts +1 -1
- package/lib/typescript/utils/hooks/core/identifiers.d.ts +1 -1
- package/lib/typescript/utils/hooks/core/index.d.ts +1 -0
- package/lib/typescript/utils/hooks/core/proofs.d.ts +6 -7
- package/lib/typescript/utils/hooks/core/wallet-unit.d.ts +9 -0
- package/lib/typescript/utils/hooks/index.d.ts +1 -0
- package/lib/typescript/utils/index.d.ts +2 -1
- package/lib/typescript/utils/parsers/credential-sharing-v2.d.ts +11 -0
- package/lib/typescript/utils/parsers/credential-sharing.d.ts +11 -5
- package/lib/typescript/utils/parsers/credential.d.ts +9 -6
- package/lib/typescript/utils/parsers/index.d.ts +1 -0
- package/lib/typescript/utils/parsers/query.d.ts +2 -2
- package/lib/typescript/utils/wallet-unit.d.ts +8 -0
- package/package.json +12 -6
- package/src/components/credential/credential.tsx +5 -1
- package/src/components/proof-request/index.ts +4 -3
- package/src/components/proof-request/select-share-credential-card-notice.tsx +37 -0
- package/src/components/proof-request/share-credential-card-notice.tsx +33 -0
- package/src/components/proof-request/{group.tsx → v1/group.tsx} +1 -1
- package/src/components/proof-request/v1/index.ts +3 -0
- package/src/components/proof-request/{select-credential.tsx → v1/select-credential.tsx} +12 -5
- package/src/components/proof-request/{share-credential.tsx → v1/share-credential.tsx} +35 -52
- package/src/components/proof-request/v2/index.ts +3 -0
- package/src/components/proof-request/v2/select-credential-v2.tsx +59 -0
- package/src/components/proof-request/v2/share-credential-v2-group.tsx +258 -0
- package/src/components/proof-request/v2/share-credential-v2.tsx +211 -0
- package/src/ui-components/buttons/share-button.tsx +1 -1
- package/src/ui-components/camera/qr-code-scanner.tsx +11 -2
- package/src/ui-components/credential/card/credential-details-list-item.tsx +27 -49
- package/src/ui-components/credential/credential-attribute-item.tsx +2 -0
- package/src/ui-components/credential/group/credential-group-header.tsx +70 -0
- package/src/ui-components/credential/group/index.ts +4 -0
- package/src/ui-components/credential/index.ts +1 -0
- package/src/ui-components/header/foldable-header.tsx +31 -16
- package/src/ui-components/index.ts +1 -0
- package/src/ui-components/loader/loading-result.tsx +1 -1
- package/src/ui-components/pin/pin-lock-animation.tsx +240 -278
- package/src/ui-components/proof-request/index.ts +4 -0
- package/src/ui-components/proof-request/proof-request-set.tsx +46 -0
- package/src/ui-components/screens/section-list-screen.tsx +18 -4
- package/src/utils/array.ts +4 -0
- package/src/utils/hooks/app-state.ts +29 -0
- package/src/utils/hooks/core/backup.ts +2 -5
- package/src/utils/hooks/core/credentials.ts +11 -4
- package/src/utils/hooks/core/identifiers.ts +15 -14
- package/src/utils/hooks/core/index.ts +2 -1
- package/src/utils/hooks/core/proofs.ts +36 -12
- package/src/utils/hooks/core/wallet-unit.ts +77 -0
- package/src/utils/hooks/index.ts +1 -0
- package/src/utils/hooks/revocation/credential-status.ts +1 -1
- package/src/utils/index.ts +2 -1
- package/src/utils/parsers/credential-sharing-v2.tsx +283 -0
- package/src/utils/parsers/credential-sharing.tsx +40 -16
- package/src/utils/parsers/credential.ts +129 -59
- package/src/utils/parsers/index.ts +1 -0
- package/src/utils/parsers/query.ts +6 -5
- package/src/utils/wallet-unit.ts +30 -0
- package/lib/commonjs/components/proof-request/group.js.map +0 -1
- package/lib/commonjs/components/proof-request/select-credential.js.map +0 -1
- package/lib/commonjs/components/proof-request/share-credential.js.map +0 -1
- package/lib/module/components/proof-request/group.js.map +0 -1
- package/lib/module/components/proof-request/select-credential.js.map +0 -1
- package/lib/module/components/proof-request/share-credential.js +0 -147
- package/lib/module/components/proof-request/share-credential.js.map +0 -1
- /package/lib/typescript/components/proof-request/{group.d.ts → v1/group.d.ts} +0 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.shareCredentialCardFromV2PresentationCredential = exports.shareCredentialCardAttributeFromV2Claim = exports.selectCredentialCardFromV2Credential = exports.missingCredentialCardFromFailureHint = exports.getV2CredentialClaimAllSubpaths = exports.getV2CredentialAvailablePaths = void 0;
|
|
7
|
+
var _reactNativeOneCore = require("@procivis/react-native-one-core");
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _uiComponents = require("../../ui-components");
|
|
10
|
+
var _testID = require("../testID");
|
|
11
|
+
var _ = require(".");
|
|
12
|
+
var _credentialSharing = require("./credential-sharing");
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
const v2ClaimValueToClaimValue = value => {
|
|
15
|
+
if (!Array.isArray(value)) {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
return value.map(c => v2PresentationClaimToClaim(c));
|
|
19
|
+
};
|
|
20
|
+
const v2PresentationClaimToClaim = claim => {
|
|
21
|
+
if (Array.isArray(claim.value)) {
|
|
22
|
+
if (claim.schema.array) {
|
|
23
|
+
return {
|
|
24
|
+
array: claim.schema.array,
|
|
25
|
+
dataType: claim.schema.datatype,
|
|
26
|
+
id: claim.path,
|
|
27
|
+
key: claim.path,
|
|
28
|
+
value: v2ClaimValueToClaimValue(claim.value)
|
|
29
|
+
};
|
|
30
|
+
} else {
|
|
31
|
+
return {
|
|
32
|
+
array: claim.schema.array,
|
|
33
|
+
dataType: _reactNativeOneCore.DataTypeEnum.Object,
|
|
34
|
+
id: claim.path,
|
|
35
|
+
key: claim.path,
|
|
36
|
+
value: v2ClaimValueToClaimValue(claim.value)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
array: false,
|
|
42
|
+
dataType: claim.schema.datatype,
|
|
43
|
+
id: claim.path,
|
|
44
|
+
key: claim.path,
|
|
45
|
+
value: claim.value
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
const getAttributeSelectorStatus = (claim, selected, force) => {
|
|
49
|
+
if (claim.required && selected) {
|
|
50
|
+
return _uiComponents.SelectorStatus.Required;
|
|
51
|
+
}
|
|
52
|
+
if (force && claim.value) {
|
|
53
|
+
return _uiComponents.SelectorStatus.Required;
|
|
54
|
+
}
|
|
55
|
+
if (claim.userSelection) {
|
|
56
|
+
if (selected) {
|
|
57
|
+
return _uiComponents.SelectorStatus.SelectedCheckmark;
|
|
58
|
+
} else {
|
|
59
|
+
return _uiComponents.SelectorStatus.Empty;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const shareCredentialCardAttributeFromV2Claim = (claim, selection, parentShared, parentUserSelected, config, testID, nested, listValue) => {
|
|
64
|
+
const attributeShared = Boolean(selection === null || selection === void 0 ? void 0 : selection.some(path => path.startsWith(claim.path))) || parentShared && claim.required;
|
|
65
|
+
const userSelected = parentUserSelected || Boolean(selection === null || selection === void 0 ? void 0 : selection.includes(claim.path));
|
|
66
|
+
const selected = !claim.required && attributeShared;
|
|
67
|
+
const status = selection ? getAttributeSelectorStatus(claim, attributeShared, parentUserSelected || attributeShared && !userSelected) : undefined;
|
|
68
|
+
const attribute = (0, _.detailsCardAttributeFromClaim)(v2PresentationClaimToClaim(claim), config, testID);
|
|
69
|
+
const disabledStatus = [_uiComponents.SelectorStatus.Disabled, _uiComponents.SelectorStatus.Rejected, _uiComponents.SelectorStatus.Required];
|
|
70
|
+
const disabled = attribute.disabled || !status || disabledStatus.includes(status);
|
|
71
|
+
const credentialAttribute = {
|
|
72
|
+
...attribute,
|
|
73
|
+
disabled,
|
|
74
|
+
id: claim.path,
|
|
75
|
+
listValue,
|
|
76
|
+
nested,
|
|
77
|
+
path: claim.path,
|
|
78
|
+
rightAccessory: status && /*#__PURE__*/_react.default.createElement(_uiComponents.Selector, {
|
|
79
|
+
status: status
|
|
80
|
+
}),
|
|
81
|
+
selected,
|
|
82
|
+
testID
|
|
83
|
+
};
|
|
84
|
+
if (Array.isArray(claim.value)) {
|
|
85
|
+
if (claim.schema.array) {
|
|
86
|
+
return {
|
|
87
|
+
...credentialAttribute,
|
|
88
|
+
attributes: undefined,
|
|
89
|
+
image: undefined,
|
|
90
|
+
value: undefined,
|
|
91
|
+
values: claim.value.map(v => shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true, false))
|
|
92
|
+
};
|
|
93
|
+
} else if (claim.schema.datatype === 'OBJECT') {
|
|
94
|
+
return {
|
|
95
|
+
...credentialAttribute,
|
|
96
|
+
attributes: claim.value.map(v => shareCredentialCardAttributeFromV2Claim(v, selection, attributeShared, userSelected, config, testID, true)),
|
|
97
|
+
image: undefined,
|
|
98
|
+
value: undefined,
|
|
99
|
+
valueErrorColor: undefined,
|
|
100
|
+
values: undefined
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return credentialAttribute;
|
|
105
|
+
};
|
|
106
|
+
exports.shareCredentialCardAttributeFromV2Claim = shareCredentialCardAttributeFromV2Claim;
|
|
107
|
+
const missingCredentialCardFromFailureHint = (failureHint, notice, testID, labels) => {
|
|
108
|
+
var _failureHint$credenti, _failureHint$credenti2;
|
|
109
|
+
return {
|
|
110
|
+
cardImage: undefined,
|
|
111
|
+
color: undefined,
|
|
112
|
+
header: {
|
|
113
|
+
credentialDetailErrorColor: true,
|
|
114
|
+
credentialDetailPrimary: labels.missingCredential,
|
|
115
|
+
credentialDetailTestID: (0, _testID.concatTestID)(testID, 'header.missing'),
|
|
116
|
+
credentialName: (_failureHint$credenti = failureHint === null || failureHint === void 0 || (_failureHint$credenti2 = failureHint.credentialSchema) === null || _failureHint$credenti2 === void 0 ? void 0 : _failureHint$credenti2.name) !== null && _failureHint$credenti !== void 0 ? _failureHint$credenti : '',
|
|
117
|
+
statusIcon: _uiComponents.CredentialWarningIcon
|
|
118
|
+
},
|
|
119
|
+
testID,
|
|
120
|
+
...notice
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
exports.missingCredentialCardFromFailureHint = missingCredentialCardFromFailureHint;
|
|
124
|
+
const shareCredentialCardFromV2PresentationCredential = (credential, failureHint, expanded, multipleCredentialsAvailable, selectedFields, config, wuaState, testID, labels) => {
|
|
125
|
+
var _credential$issuer, _credential$claims$ma;
|
|
126
|
+
const selectiveDisclosureSupported = (0, _.supportsSelectiveDisclosure)(credential ? {
|
|
127
|
+
...credential,
|
|
128
|
+
issuer: (_credential$issuer = credential.issuer) === null || _credential$issuer === void 0 ? void 0 : _credential$issuer.id
|
|
129
|
+
} : undefined, config);
|
|
130
|
+
const notice = selectiveDisclosureSupported === false ? {
|
|
131
|
+
noticeIcon: _uiComponents.CredentialNoticeWarningIcon,
|
|
132
|
+
text: labels.selectiveDisclosureNotice
|
|
133
|
+
} : undefined;
|
|
134
|
+
const cardTestId = (0, _testID.concatTestID)(testID, 'card');
|
|
135
|
+
const card = credential ? (0, _credentialSharing.validityCheckedCardFromCredential)({
|
|
136
|
+
...credential,
|
|
137
|
+
claims: []
|
|
138
|
+
}, false, expanded, multipleCredentialsAvailable, config, wuaState, notice, cardTestId, labels) : missingCredentialCardFromFailureHint(failureHint, notice, cardTestId, labels);
|
|
139
|
+
return {
|
|
140
|
+
attributes: (_credential$claims$ma = credential === null || credential === void 0 ? void 0 : credential.claims.map(v => shareCredentialCardAttributeFromV2Claim(v, selectedFields !== null && selectedFields !== void 0 ? selectedFields : [], true, false, config, testID))) !== null && _credential$claims$ma !== void 0 ? _credential$claims$ma : [],
|
|
141
|
+
card
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
exports.shareCredentialCardFromV2PresentationCredential = shareCredentialCardFromV2PresentationCredential;
|
|
145
|
+
const selectCredentialCardFromV2Credential = (credential, selected, multiple, config, wuaState, testID, labels) => {
|
|
146
|
+
var _credential$issuer2, _credential$claims$ma2;
|
|
147
|
+
const selectiveDisclosureSupported = (0, _.supportsSelectiveDisclosure)(credential ? {
|
|
148
|
+
...credential,
|
|
149
|
+
issuer: (_credential$issuer2 = credential.issuer) === null || _credential$issuer2 === void 0 ? void 0 : _credential$issuer2.id
|
|
150
|
+
} : undefined, config);
|
|
151
|
+
const selectedStatus = multiple ? _uiComponents.SelectorStatus.SelectedCheckmark : _uiComponents.SelectorStatus.SelectedRadio;
|
|
152
|
+
const rightAccessory = /*#__PURE__*/_react.default.createElement(_uiComponents.Selector, {
|
|
153
|
+
status: selected ? selectedStatus : _uiComponents.SelectorStatus.Empty
|
|
154
|
+
});
|
|
155
|
+
const notice = selectiveDisclosureSupported === false ? {
|
|
156
|
+
noticeIcon: _uiComponents.CredentialNoticeWarningIcon,
|
|
157
|
+
text: labels.selectiveDisclosureNotice
|
|
158
|
+
} : undefined;
|
|
159
|
+
const {
|
|
160
|
+
header,
|
|
161
|
+
...cardProps
|
|
162
|
+
} = (0, _.getCredentialCardPropsFromCredential)({
|
|
163
|
+
...credential,
|
|
164
|
+
claims: credential.claims.map(v2PresentationClaimToClaim)
|
|
165
|
+
}, credential.claims.map(v2PresentationClaimToClaim), config, wuaState, notice, testID, labels);
|
|
166
|
+
const card = {
|
|
167
|
+
header: {
|
|
168
|
+
...header,
|
|
169
|
+
accessory: rightAccessory
|
|
170
|
+
},
|
|
171
|
+
...cardProps
|
|
172
|
+
};
|
|
173
|
+
return {
|
|
174
|
+
attributes: (_credential$claims$ma2 = credential === null || credential === void 0 ? void 0 : credential.claims.map(v => shareCredentialCardAttributeFromV2Claim(v, undefined, false, false, config, testID))) !== null && _credential$claims$ma2 !== void 0 ? _credential$claims$ma2 : [],
|
|
175
|
+
card
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
exports.selectCredentialCardFromV2Credential = selectCredentialCardFromV2Credential;
|
|
179
|
+
const getV2CredentialClaimAllSubpaths = claim => {
|
|
180
|
+
if (!Array.isArray(claim.value)) {
|
|
181
|
+
return [claim.path];
|
|
182
|
+
}
|
|
183
|
+
return [claim.path, ...claim.value.flatMap(getV2CredentialClaimAllSubpaths)];
|
|
184
|
+
};
|
|
185
|
+
exports.getV2CredentialClaimAllSubpaths = getV2CredentialClaimAllSubpaths;
|
|
186
|
+
const getV2CredentialAvailablePaths = credential => {
|
|
187
|
+
return credential.claims.flatMap(getV2CredentialClaimAllSubpaths);
|
|
188
|
+
};
|
|
189
|
+
exports.getV2CredentialAvailablePaths = getV2CredentialAvailablePaths;
|
|
190
|
+
//# sourceMappingURL=credential-sharing-v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeOneCore","require","_react","_interopRequireDefault","_uiComponents","_testID","_","_credentialSharing","e","__esModule","default","v2ClaimValueToClaimValue","value","Array","isArray","map","c","v2PresentationClaimToClaim","claim","schema","array","dataType","datatype","id","path","key","DataTypeEnum","Object","getAttributeSelectorStatus","selected","force","required","SelectorStatus","Required","userSelection","SelectedCheckmark","Empty","shareCredentialCardAttributeFromV2Claim","selection","parentShared","parentUserSelected","config","testID","nested","listValue","attributeShared","Boolean","some","startsWith","userSelected","includes","status","undefined","attribute","detailsCardAttributeFromClaim","disabledStatus","Disabled","Rejected","disabled","credentialAttribute","rightAccessory","createElement","Selector","attributes","image","values","v","valueErrorColor","exports","missingCredentialCardFromFailureHint","failureHint","notice","labels","_failureHint$credenti","_failureHint$credenti2","cardImage","color","header","credentialDetailErrorColor","credentialDetailPrimary","missingCredential","credentialDetailTestID","concatTestID","credentialName","credentialSchema","name","statusIcon","CredentialWarningIcon","shareCredentialCardFromV2PresentationCredential","credential","expanded","multipleCredentialsAvailable","selectedFields","wuaState","_credential$issuer","_credential$claims$ma","selectiveDisclosureSupported","supportsSelectiveDisclosure","issuer","noticeIcon","CredentialNoticeWarningIcon","text","selectiveDisclosureNotice","cardTestId","card","validityCheckedCardFromCredential","claims","selectCredentialCardFromV2Credential","multiple","_credential$issuer2","_credential$claims$ma2","selectedStatus","SelectedRadio","cardProps","getCredentialCardPropsFromCredential","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 { WUAState } from '../wallet-unit';\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 wuaState: WUAState | undefined,\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 wuaState,\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 wuaState: WUAState | undefined,\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 wuaState,\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":[]}
|
|
@@ -10,7 +10,7 @@ var _icons = require("../../ui-components/icons");
|
|
|
10
10
|
var _testID = require("../testID");
|
|
11
11
|
var _credential2 = require("./credential");
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
-
const validityCheckedCardFromCredential = (credential, invalidLVVC, expanded, multipleCredentialsAvailable, config, notice, testID, labels) => {
|
|
13
|
+
const validityCheckedCardFromCredential = (credential, invalidLVVC, expanded, multipleCredentialsAvailable, config, wuaState, notice, testID, labels) => {
|
|
14
14
|
let credentialHeaderDetail;
|
|
15
15
|
if (invalidLVVC) {
|
|
16
16
|
credentialHeaderDetail = {
|
|
@@ -25,7 +25,7 @@ const validityCheckedCardFromCredential = (credential, invalidLVVC, expanded, mu
|
|
|
25
25
|
statusIcon: _icons.CredentialWarningIcon
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
const card = (0, _credential2.getCredentialCardPropsFromCredential)(credential, credential.claims, config, notice, testID, labels);
|
|
28
|
+
const card = (0, _credential2.getCredentialCardPropsFromCredential)(credential, credential.claims, config, wuaState, notice, testID, labels);
|
|
29
29
|
return {
|
|
30
30
|
...card,
|
|
31
31
|
header: {
|
|
@@ -68,32 +68,43 @@ const getAttributeSelectorStatus = (field, validityState, credential, claim, sel
|
|
|
68
68
|
}
|
|
69
69
|
return selected ? _credential.SelectorStatus.SelectedCheckmark : _credential.SelectorStatus.Empty;
|
|
70
70
|
};
|
|
71
|
-
|
|
72
71
|
// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects
|
|
73
|
-
const spreadClaims =
|
|
74
|
-
|
|
72
|
+
const spreadClaims = claims => {
|
|
73
|
+
const claimsWithPath = claims.map(c => {
|
|
74
|
+
var _c$path;
|
|
75
|
+
return {
|
|
76
|
+
...c,
|
|
77
|
+
path: (_c$path = c.path) !== null && _c$path !== void 0 ? _c$path : c.key
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
return claimsWithPath.reduce((acc, claim) => {
|
|
75
81
|
const result = [claim];
|
|
76
82
|
if (Array.isArray(claim.value)) {
|
|
77
|
-
const
|
|
78
|
-
|
|
83
|
+
const nestedClaimsWithPath = claim.value.map((c, i) => ({
|
|
84
|
+
...c,
|
|
85
|
+
path: claim.array ? `${c.key}/${i}` : c.key,
|
|
86
|
+
isArrayElement: claim.array
|
|
87
|
+
}));
|
|
88
|
+
result.push(...spreadClaims(nestedClaimsWithPath));
|
|
79
89
|
}
|
|
80
90
|
return [...acc, ...result];
|
|
81
91
|
}, []);
|
|
82
92
|
};
|
|
83
93
|
const getDisplayedAttributes = (request, validityState, credential, selectiveDisclosureSupported, selectedFields) => {
|
|
84
94
|
const claims = credential ? spreadClaims(credential.claims) : undefined;
|
|
95
|
+
const isApplicable = credential ? request.applicableCredentials.includes(credential.id) : false;
|
|
85
96
|
let fields = request.fields;
|
|
86
97
|
if (credential) {
|
|
87
|
-
const fieldsWithNoKeyMapping = request.fields.filter(field => !(credential.id in field.keyMap));
|
|
98
|
+
const fieldsWithNoKeyMapping = request.fields.filter(field => !(credential.id in field.keyMap)).filter(field => !isApplicable || !field.required);
|
|
88
99
|
const fullyNestedFields = getFullyNestedFields(request.fields, credential.id);
|
|
89
100
|
fields = [...fieldsWithNoKeyMapping, ...fullyNestedFields];
|
|
90
101
|
}
|
|
91
102
|
return fields.map(field => {
|
|
92
103
|
const selected = !field.required && (selectedFields === null || selectedFields === void 0 ? void 0 : selectedFields.includes(field.id));
|
|
93
104
|
const claim = credential ? claims === null || claims === void 0 ? void 0 : claims.find(({
|
|
94
|
-
|
|
105
|
+
path
|
|
95
106
|
}) => {
|
|
96
|
-
return
|
|
107
|
+
return path === field.keyMap[credential.id];
|
|
97
108
|
}) : undefined;
|
|
98
109
|
const status = selectiveDisclosureSupported === false ? _credential.SelectorStatus.Required : getAttributeSelectorStatus(field, validityState, credential, claim, selected);
|
|
99
110
|
return {
|
|
@@ -121,7 +132,9 @@ const shareCredentialCardAttributeFromClaim = (id, config, testID, labels, claim
|
|
|
121
132
|
if (claim) {
|
|
122
133
|
return {
|
|
123
134
|
...(0, _credential2.detailsCardAttributeFromClaim)(claim, config, testID),
|
|
124
|
-
id
|
|
135
|
+
id,
|
|
136
|
+
path: claim.path,
|
|
137
|
+
listValue: claim.isArrayElement
|
|
125
138
|
};
|
|
126
139
|
}
|
|
127
140
|
return {
|
|
@@ -166,7 +179,7 @@ const setStatusForNestedObjectOrArrayFields = (attribute, status, disabled) => {
|
|
|
166
179
|
}
|
|
167
180
|
}
|
|
168
181
|
};
|
|
169
|
-
const shareCredentialCardFromCredential = (credential, invalidLVVC, expanded, multipleCredentialsAvailable, request, selectedFields, config, testID, labels) => {
|
|
182
|
+
const shareCredentialCardFromCredential = (credential, invalidLVVC, expanded, multipleCredentialsAvailable, request, selectedFields, config, wuaState, testID, labels) => {
|
|
170
183
|
var _credential$issuer, _credential$issuer2;
|
|
171
184
|
const selectiveDisclosureSupported = (0, _credential2.supportsSelectiveDisclosure)(credential ? {
|
|
172
185
|
...credential,
|
|
@@ -177,7 +190,7 @@ const shareCredentialCardFromCredential = (credential, invalidLVVC, expanded, mu
|
|
|
177
190
|
noticeIcon: _icons.CredentialNoticeWarningIcon
|
|
178
191
|
} : undefined;
|
|
179
192
|
const cardTestId = (0, _testID.concatTestID)(testID, 'card');
|
|
180
|
-
const card = credential ? validityCheckedCardFromCredential(credential, invalidLVVC, expanded, multipleCredentialsAvailable, config, notice, cardTestId, labels) : missingCredentialCardFromRequest(request, notice, cardTestId, labels);
|
|
193
|
+
const card = credential ? validityCheckedCardFromCredential(credential, invalidLVVC, expanded, multipleCredentialsAvailable, config, wuaState, notice, cardTestId, labels) : missingCredentialCardFromRequest(request, notice, cardTestId, labels);
|
|
181
194
|
const validityState = (0, _credential2.getValidityState)(credential ? {
|
|
182
195
|
...credential,
|
|
183
196
|
issuer: (_credential$issuer2 = credential.issuer) === null || _credential$issuer2 === void 0 ? void 0 : _credential$issuer2.id
|
|
@@ -215,7 +228,7 @@ const selectCredentialCardAttributeFromClaim = (id, config, testID, labels, clai
|
|
|
215
228
|
};
|
|
216
229
|
};
|
|
217
230
|
exports.selectCredentialCardAttributeFromClaim = selectCredentialCardAttributeFromClaim;
|
|
218
|
-
const selectCredentialCardFromCredential = (credential, selected, request, config, testID, labels) => {
|
|
231
|
+
const selectCredentialCardFromCredential = (credential, selected, request, config, wuaState, testID, labels) => {
|
|
219
232
|
var _credential$issuer3;
|
|
220
233
|
const selectiveDisclosureSupported = (0, _credential2.supportsSelectiveDisclosure)(credential ? {
|
|
221
234
|
...credential,
|
|
@@ -231,7 +244,7 @@ const selectCredentialCardFromCredential = (credential, selected, request, confi
|
|
|
231
244
|
const {
|
|
232
245
|
header,
|
|
233
246
|
...cardProps
|
|
234
|
-
} = (0, _credential2.getCredentialCardPropsFromCredential)(credential, credential.claims, config, notice, testID, labels);
|
|
247
|
+
} = (0, _credential2.getCredentialCardPropsFromCredential)(credential, credential.claims, config, wuaState, notice, testID, labels);
|
|
235
248
|
const card = {
|
|
236
249
|
header: {
|
|
237
250
|
...header,
|
|
@@ -239,11 +252,11 @@ const selectCredentialCardFromCredential = (credential, selected, request, confi
|
|
|
239
252
|
},
|
|
240
253
|
...cardProps
|
|
241
254
|
};
|
|
242
|
-
const attributes = request.fields.map(field => {
|
|
255
|
+
const attributes = getFullyNestedFields(request.fields, credential.id).map(field => {
|
|
243
256
|
const claim = spreadClaims(credential.claims).find(({
|
|
244
|
-
|
|
257
|
+
path
|
|
245
258
|
}) => {
|
|
246
|
-
return
|
|
259
|
+
return path === field.keyMap[credential.id];
|
|
247
260
|
});
|
|
248
261
|
const attribute = selectCredentialCardAttributeFromClaim(field.id, config, testID, labels, claim, field);
|
|
249
262
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_credential","_icons","_testID","_credential2","e","__esModule","default","validityCheckedCardFromCredential","credential","invalidLVVC","expanded","multipleCredentialsAvailable","config","notice","testID","labels","credentialHeaderDetail","credentialDetailErrorColor","credentialDetailPrimary","revoked","credentialDetailTestID","concatTestID","multipleCredentials","statusIcon","CredentialWarningIcon","card","getCredentialCardPropsFromCredential","claims","header","exports","missingCredentialCardFromRequest","request","_request$name","cardImage","undefined","color","missingCredential","credentialName","name","id","getAttributeSelectorStatus","field","validityState","claim","selected","ValidityState","Valid","SelectorStatus","Rejected","required","Required","Disabled","SelectedCheckmark","Empty","spreadClaims","parentClaimPath","reduce","acc","result","Array","isArray","value","claimPath","key","push","getDisplayedAttributes","selectiveDisclosureSupported","selectedFields","fields","fieldsWithNoKeyMapping","filter","keyMap","fullyNestedFields","getFullyNestedFields","map","includes","find","status","credentialId","allKeys","every","k","startsWith","shareCredentialCardAttributeFromClaim","_field$name$split$pop","_field$name","_field$name2","detailsCardAttributeFromClaim","split","pop","path","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","Selector","isObject","attributes","length","values","rightAccessory","_attribute$attributes","nested","nestedAttribute","shareCredentialCardFromCredential","_credential$issuer","_credential$issuer2","supportsSelectiveDisclosure","issuer","text","selectiveDisclosureNotice","noticeIcon","CredentialNoticeWarningIcon","cardTestId","getValidityState","displayedAttributes","index","nestAttributes","selectCredentialCardAttributeFromClaim","RequiredAttributeIcon","selectCredentialCardFromCredential","_credential$issuer3","SelectedRadio","cardProps"],"sources":["credential-sharing.tsx"],"sourcesContent":["import {\n Claim,\n Config,\n CredentialDetail,\n PresentationDefinitionField,\n PresentationDefinitionRequestedCredential,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardProps,\n CredentialHeaderProps,\n Selector,\n SelectorStatus,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialNoticeWarningIcon, CredentialWarningIcon, RequiredAttributeIcon } from '../../ui-components/icons';\nimport { concatTestID } from '../testID';\nimport {\n CardLabels,\n CredentialDetailsCardPropsWithoutWidth,\n detailsCardAttributeFromClaim,\n getCredentialCardPropsFromCredential,\n getValidityState,\n nestAttributes,\n supportsSelectiveDisclosure,\n ValidityState,\n} from './credential';\n\nexport const validityCheckedCardFromCredential = (\n credential: CredentialDetail,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n config: Config,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'testID' | 'width'> => {\n let credentialHeaderDetail:\n | Pick<\n CredentialHeaderProps,\n | 'credentialDetailPrimary'\n | 'credentialDetailSecondary'\n | 'credentialDetailErrorColor'\n | 'credentialDetailTestID'\n | 'statusIcon'\n >\n | undefined;\n if (invalidLVVC) {\n credentialHeaderDetail = {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.revoked,\n credentialDetailTestID: concatTestID(testID, 'header.invalid'),\n };\n } else if (!expanded && multipleCredentialsAvailable) {\n credentialHeaderDetail = {\n credentialDetailPrimary: labels.multipleCredentials,\n credentialDetailTestID: concatTestID(testID, 'header.multiple'),\n statusIcon: CredentialWarningIcon,\n };\n }\n\n const card = getCredentialCardPropsFromCredential(credential, credential.claims, config, notice, testID, labels);\n return {\n ...card,\n header: {\n ...card.header,\n ...credentialHeaderDetail,\n },\n };\n};\n\nexport const missingCredentialCardFromRequest = (\n request: PresentationDefinitionRequestedCredential,\n notice: CredentialCardNotice | undefined,\n testID: string,\n labels: ShareCredentialCardLabels,\n): Omit<CredentialCardProps, 'onHeaderPress' | 'style' | 'width'> => {\n return {\n cardImage: undefined,\n color: undefined,\n testID,\n header: {\n credentialDetailErrorColor: true,\n credentialDetailPrimary: labels.missingCredential,\n credentialDetailTestID: concatTestID(testID, 'header.missing'),\n credentialName: request.name ?? request.id,\n statusIcon: CredentialWarningIcon,\n },\n ...notice,\n };\n};\n\ninterface DisplayedAttribute {\n claim?: Claim;\n field?: PresentationDefinitionField;\n id: string;\n selected?: boolean;\n status: SelectorStatus;\n}\n\nconst getAttributeSelectorStatus = (\n field: PresentationDefinitionField,\n validityState: ValidityState,\n credential?: CredentialDetail,\n claim?: Claim,\n selected?: boolean,\n): SelectorStatus => {\n if (!credential || validityState !== ValidityState.Valid) {\n return SelectorStatus.Rejected;\n }\n if (field.required) {\n if (claim) {\n return SelectorStatus.Required;\n } else {\n return SelectorStatus.Rejected;\n }\n }\n if (!claim) {\n return SelectorStatus.Disabled;\n }\n return selected ? SelectorStatus.SelectedCheckmark : SelectorStatus.Empty;\n};\n\n// Returns a spread list of all claims with their full JSON path as key, including all intermediate objects\nconst spreadClaims = (claims: Claim[], parentClaimPath = ''): Claim[] => {\n return claims.reduce((acc, claim) => {\n const result = [claim];\n if (Array.isArray(claim.value)) {\n const claimPath = parentClaimPath ? `${parentClaimPath}/${claim.key}` : claim.key;\n result.push(...spreadClaims(claim.value, claimPath));\n }\n return [...acc, ...result];\n }, [] as Claim[]);\n};\n\nconst getDisplayedAttributes = (\n request: PresentationDefinitionRequestedCredential,\n validityState: ValidityState,\n credential?: CredentialDetail,\n selectiveDisclosureSupported?: boolean,\n selectedFields?: string[],\n): DisplayedAttribute[] => {\n const claims = credential ? spreadClaims(credential.claims) : undefined;\n\n let fields = request.fields;\n if (credential) {\n const fieldsWithNoKeyMapping = request.fields.filter((field) => !(credential.id in field.keyMap));\n const fullyNestedFields = getFullyNestedFields(request.fields, credential.id);\n\n fields = [...fieldsWithNoKeyMapping, ...fullyNestedFields];\n }\n\n return fields.map((field) => {\n const selected = !field.required && selectedFields?.includes(field.id);\n const claim = credential\n ? claims?.find(({ key }) => {\n return key === field.keyMap[credential.id];\n })\n : undefined;\n const status =\n selectiveDisclosureSupported === false\n ? SelectorStatus.Required\n : getAttributeSelectorStatus(field, validityState, credential, claim, selected);\n return { claim, field, id: field.id, selected, status };\n });\n};\n\nconst getFullyNestedFields = (\n fields: PresentationDefinitionRequestedCredential['fields'],\n credentialId: CredentialDetail['id'],\n) => {\n const allKeys = fields.filter((field) => credentialId in field.keyMap).map((field) => field.keyMap[credentialId]);\n\n return fields\n .map((field) => ({ field, key: field.keyMap[credentialId] }))\n .filter(({ key }) => key && allKeys.every((k) => !k.startsWith(`${key}/`)))\n .map(({ field }) => field);\n};\n\nexport const shareCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: Claim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n if (claim) {\n return { ...detailsCardAttributeFromClaim(claim, config, testID), id };\n }\n return {\n id,\n name: field?.name?.split('/').pop() ?? id,\n path: field?.name ?? id,\n value: labels.missingAttribute,\n valueErrorColor: true,\n };\n};\n\n// Will propagate the attribute status (right accessory + selected?) for all nested attributes\n// Note: This function MUTATES the input attribute\nconst setStatusForNestedObjectOrArrayFields = (\n attribute: CredentialAttribute,\n status?: SelectorStatus,\n disabled?: boolean,\n) => {\n const accessory = status && <Selector status={status} />;\n const isObject = attribute.attributes && attribute.attributes.length > 0;\n const isArray = attribute.values && attribute.values.length > 0;\n\n // If the attribute is not an object or array, we update the attribute and return\n if (!isObject && !isArray) {\n attribute.rightAccessory = accessory;\n attribute.disabled = disabled;\n return attribute;\n }\n\n // The object can be optional (tappable radio-checkmark), or required (checkmark)\n if (status === SelectorStatus.SelectedCheckmark || status === SelectorStatus.Empty) {\n // If it's a selectable object, the accessory is rendered next to the object title,\n // The nested attributes have no accessory, and can not be selected\n attribute.rightAccessory = accessory;\n setStatusForNestedObjectOrArrayFields(attribute, undefined, true);\n } else {\n const nested = attribute.attributes ?? attribute.values;\n // If the object is required / rejected, the accessory is rendered next to each nested attribute (except other object titles)\n // all fields are disabled\n for (const nestedAttribute of nested) {\n setStatusForNestedObjectOrArrayFields(nestedAttribute, status, true);\n }\n }\n};\n\nexport type ShareCredentialCardLabels = CardLabels & {\n selectiveDisclosureNotice: string;\n missingAttribute: string;\n missingCredential: string;\n multipleCredentials: string;\n};\n\nexport const shareCredentialCardFromCredential = (\n credential: CredentialDetail | undefined,\n invalidLVVC: boolean,\n expanded: boolean,\n multipleCredentialsAvailable: boolean,\n request: PresentationDefinitionRequestedCredential,\n selectedFields: string[] | undefined,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const cardTestId = concatTestID(testID, 'card');\n const card = credential\n ? validityCheckedCardFromCredential(\n credential,\n invalidLVVC,\n expanded,\n multipleCredentialsAvailable,\n config,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromRequest(request, notice, cardTestId, labels);\n const validityState = getValidityState(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n );\n const displayedAttributes = getDisplayedAttributes(\n request,\n validityState,\n credential,\n selectiveDisclosureSupported,\n selectedFields,\n );\n\n const attributes: CredentialAttribute[] = displayedAttributes.map(({ claim, field, id, selected, status }, index) => {\n const disabled = !credential || !field || field.required || !claim;\n const attribute: CredentialAttribute = {\n ...shareCredentialCardAttributeFromClaim(\n id,\n config,\n concatTestID(testID, 'attribute', `${index}`),\n labels,\n claim,\n field,\n ),\n selected,\n };\n\n setStatusForNestedObjectOrArrayFields(attribute, status, disabled);\n return attribute;\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n\nexport const selectCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: Claim,\n field?: PresentationDefinitionField,\n): CredentialAttribute => {\n const attribute = shareCredentialCardAttributeFromClaim(id, config, testID, labels, claim, field);\n if (!claim) {\n return attribute;\n }\n return {\n ...attribute,\n rightAccessory: RequiredAttributeIcon,\n };\n};\n\nexport const selectCredentialCardFromCredential = (\n credential: CredentialDetail,\n selected: boolean,\n request: PresentationDefinitionRequestedCredential,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n): CredentialDetailsCardPropsWithoutWidth => {\n const selectiveDisclosureSupported = supportsSelectiveDisclosure(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n config,\n );\n const rightAccessory = <Selector status={selected ? SelectorStatus.SelectedRadio : SelectorStatus.Empty} />;\n const notice: CredentialCardNotice | undefined =\n selectiveDisclosureSupported === false\n ? {\n text: labels.selectiveDisclosureNotice,\n noticeIcon: CredentialNoticeWarningIcon,\n }\n : undefined;\n const { header, ...cardProps } = getCredentialCardPropsFromCredential(\n credential,\n credential.claims,\n config,\n notice,\n testID,\n labels,\n );\n const card = {\n header: {\n ...header,\n accessory: rightAccessory,\n },\n ...cardProps,\n };\n const attributes: CredentialAttribute[] = request.fields.map((field) => {\n const claim = spreadClaims(credential.claims).find(({ key }) => {\n return key === field.keyMap[credential.id];\n });\n\n const attribute = selectCredentialCardAttributeFromClaim(field.id, config, testID, labels, claim, field);\n return {\n ...attribute,\n rightAccessory: (\n <Selector status={field.required && !claim ? SelectorStatus.Rejected : SelectorStatus.Required} />\n ),\n };\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_credential","_icons","_testID","_credential2","e","__esModule","default","validityCheckedCardFromCredential","credential","invalidLVVC","expanded","multipleCredentialsAvailable","config","wuaState","notice","testID","labels","credentialHeaderDetail","credentialDetailErrorColor","credentialDetailPrimary","revoked","credentialDetailTestID","concatTestID","multipleCredentials","statusIcon","CredentialWarningIcon","card","getCredentialCardPropsFromCredential","claims","header","exports","missingCredentialCardFromRequest","request","_request$name","cardImage","undefined","color","missingCredential","credentialName","name","id","getAttributeSelectorStatus","field","validityState","claim","selected","ValidityState","Valid","SelectorStatus","Rejected","required","Required","Disabled","SelectedCheckmark","Empty","spreadClaims","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","detailsCardAttributeFromClaim","listValue","split","pop","missingAttribute","valueErrorColor","setStatusForNestedObjectOrArrayFields","attribute","disabled","accessory","createElement","Selector","isObject","attributes","length","values","rightAccessory","_attribute$attributes","nested","nestedAttribute","shareCredentialCardFromCredential","_credential$issuer","_credential$issuer2","supportsSelectiveDisclosure","issuer","text","selectiveDisclosureNotice","noticeIcon","CredentialNoticeWarningIcon","cardTestId","getValidityState","displayedAttributes","index","nestAttributes","selectCredentialCardAttributeFromClaim","RequiredAttributeIcon","selectCredentialCardFromCredential","_credential$issuer3","SelectedRadio","cardProps"],"sources":["credential-sharing.tsx"],"sourcesContent":["import {\n Claim,\n Config,\n CredentialDetail,\n PresentationDefinitionField,\n PresentationDefinitionRequestedCredential,\n} from '@procivis/react-native-one-core';\nimport React from 'react';\n\nimport {\n CredentialAttribute,\n CredentialCardProps,\n CredentialHeaderProps,\n Selector,\n SelectorStatus,\n} from '../../ui-components/credential';\nimport { CredentialCardNotice } from '../../ui-components/credential/card/credential-card';\nimport { CredentialNoticeWarningIcon, CredentialWarningIcon, RequiredAttributeIcon } from '../../ui-components/icons';\nimport { concatTestID } from '../testID';\nimport { WUAState } from '../wallet-unit';\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 wuaState: WUAState | undefined,\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, wuaState, 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.filter((field) => !(credential.id in field.keyMap)).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 { ...detailsCardAttributeFromClaim(claim, config, testID), id, path: claim.path, listValue: claim.isArrayElement };\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 wuaState: WUAState | undefined,\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 wuaState,\n notice,\n cardTestId,\n labels,\n )\n : missingCredentialCardFromRequest(request, notice, cardTestId, labels);\n const validityState = getValidityState(\n credential ? { ...credential, issuer: credential.issuer?.id } : undefined,\n );\n const displayedAttributes = getDisplayedAttributes(\n request,\n validityState,\n credential,\n selectiveDisclosureSupported,\n selectedFields,\n );\n\n const attributes: CredentialAttribute[] = displayedAttributes.map(({ claim, field, id, selected, status }, index) => {\n const disabled = !credential || !field || field.required || !claim;\n const attribute: CredentialAttribute = {\n ...shareCredentialCardAttributeFromClaim(\n id,\n config,\n concatTestID(testID, 'attribute', `${index}`),\n labels,\n claim,\n field,\n ),\n selected,\n };\n\n setStatusForNestedObjectOrArrayFields(attribute, status, disabled);\n return attribute;\n });\n return {\n attributes: nestAttributes(attributes),\n card,\n };\n};\n\nexport const selectCredentialCardAttributeFromClaim = (\n id: string,\n config: Config,\n testID: string,\n labels: ShareCredentialCardLabels,\n claim?: 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 wuaState: WUAState | undefined,\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 wuaState,\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":[]}
|