17
17
package eu.europa.ec.commonfeature.ui.document_details.transformer
18
18
19
19
import eu.europa.ec.businesslogic.util.formatInstant
20
+ import eu.europa.ec.commonfeature.extensions.toExpandableListItems
20
21
import eu.europa.ec.commonfeature.model.DocumentDetailsUi
21
22
import eu.europa.ec.commonfeature.model.DocumentUiIssuanceState
22
23
import eu.europa.ec.commonfeature.ui.document_details.domain.DocumentDetailsDomain
23
- import eu.europa.ec.commonfeature.ui.document_details.domain.DocumentItem
24
24
import eu.europa.ec.commonfeature.util.documentHasExpired
25
- import eu.europa.ec.commonfeature.util.generateUniqueFieldId
26
- import eu.europa.ec.commonfeature.util.keyIsPortrait
27
- import eu.europa.ec.commonfeature.util.keyIsSignature
28
- import eu.europa.ec.commonfeature.util.parseKeyValueUi
29
- import eu.europa.ec.corelogic.extension.getLocalizedClaimName
25
+ import eu.europa.ec.commonfeature.util.transformPathsToDomainClaims
26
+ import eu.europa.ec.corelogic.extension.toClaimPaths
30
27
import eu.europa.ec.corelogic.model.toDocumentIdentifier
31
28
import eu.europa.ec.eudi.wallet.document.IssuedDocument
32
29
import eu.europa.ec.resourceslogic.provider.ResourceProvider
33
- import eu.europa.ec.uilogic.component.ListItemData
34
- import eu.europa.ec.uilogic.component.ListItemLeadingContentData
35
- import eu.europa.ec.uilogic.component.ListItemMainContentData
36
30
37
31
object DocumentDetailsTransformer {
38
32
39
33
fun transformToDocumentDetailsDomain (
40
34
document : IssuedDocument ,
41
35
resourceProvider : ResourceProvider
42
36
): Result <DocumentDetailsDomain > = runCatching {
43
- val userLocale = resourceProvider.getLocale()
44
-
45
- val detailsDocumentItems = document.data.claims
46
- .map { claim ->
47
- val displayKey: String = claim.metadata?.display.getLocalizedClaimName(
48
- userLocale = userLocale,
49
- fallback = claim.identifier
50
- )
51
-
52
- transformToDocumentDetailsDocumentItem(
53
- displayKey = displayKey,
54
- key = claim.identifier,
55
- item = claim.value ? : " " ,
56
- resourceProvider = resourceProvider,
57
- documentId = document.id
58
- )
59
- }
37
+ val claimsPaths = document.data.claims.flatMap { claim ->
38
+ claim.toClaimPaths()
39
+ }
40
+
41
+ val domainClaims = transformPathsToDomainClaims(
42
+ paths = claimsPaths,
43
+ claims = document.data.claims,
44
+ metadata = document.metadata,
45
+ resourceProvider = resourceProvider,
46
+ )
60
47
61
48
val docHasExpired = documentHasExpired(document.validUntil)
62
49
@@ -66,87 +53,22 @@ object DocumentDetailsTransformer {
66
53
documentIdentifier = document.toDocumentIdentifier(),
67
54
documentExpirationDateFormatted = document.validUntil.formatInstant(),
68
55
documentHasExpired = docHasExpired,
69
- detailsItems = detailsDocumentItems
56
+ documentClaims = domainClaims
70
57
)
71
58
}
72
59
73
60
fun DocumentDetailsDomain.transformToDocumentDetailsUi (): DocumentDetailsUi {
74
- val documentDetailsListItemData = this .detailsItems.toListItemData()
61
+ val documentDetailsUi = this .documentClaims.map { domainClaim ->
62
+ domainClaim.toExpandableListItems(docId = this .docId)
63
+ }
75
64
return DocumentDetailsUi (
76
65
documentId = this .docId,
77
66
documentName = this .docName,
78
67
documentIdentifier = this .documentIdentifier,
79
68
documentExpirationDateFormatted = this .documentExpirationDateFormatted,
80
69
documentHasExpired = this .documentHasExpired,
81
- documentDetails = documentDetailsListItemData,
82
70
documentIssuanceState = DocumentUiIssuanceState .Issued ,
71
+ documentClaims = documentDetailsUi,
83
72
)
84
73
}
85
-
86
- fun List<DocumentItem>.toListItemData (): List <ListItemData > {
87
- return this
88
- .sortedBy { it.readableName.lowercase() }
89
- .map {
90
-
91
- val mainContent = when {
92
- keyIsPortrait(key = it.elementIdentifier) -> {
93
- ListItemMainContentData .Text (text = " " )
94
- }
95
-
96
- keyIsSignature(key = it.elementIdentifier) -> {
97
- ListItemMainContentData .Image (base64Image = it.value)
98
- }
99
-
100
- else -> {
101
- ListItemMainContentData .Text (text = it.value)
102
- }
103
- }
104
-
105
- val itemId = generateUniqueFieldId(
106
- elementIdentifier = it.elementIdentifier,
107
- documentId = it.docId
108
- )
109
-
110
- val leadingContent = if (keyIsPortrait(key = it.elementIdentifier)) {
111
- ListItemLeadingContentData .UserImage (userBase64Image = it.value)
112
- } else {
113
- null
114
- }
115
-
116
- ListItemData (
117
- itemId = itemId,
118
- mainContentData = mainContent,
119
- overlineText = it.readableName,
120
- leadingContentData = leadingContent
121
- )
122
- }
123
- }
124
- }
125
-
126
- fun transformToDocumentDetailsDocumentItem (
127
- key : String ,
128
- displayKey : String ,
129
- item : Any ,
130
- resourceProvider : ResourceProvider ,
131
- documentId : String
132
- ): DocumentItem {
133
-
134
- val values = StringBuilder ()
135
- val localizedKey = displayKey.ifEmpty { key }
136
-
137
- parseKeyValueUi(
138
- item = item,
139
- groupIdentifier = localizedKey,
140
- groupIdentifierKey = key,
141
- resourceProvider = resourceProvider,
142
- allItems = values
143
- )
144
- val groupedValues = values.toString()
145
-
146
- return DocumentItem (
147
- elementIdentifier = key,
148
- value = groupedValues,
149
- readableName = localizedKey,
150
- docId = documentId
151
- )
152
74
}
0 commit comments