@nmshd/consumption 1.0.9 → 1.0.13

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.
@@ -6,10 +6,10 @@ const content_1 = require("@nmshd/content");
6
6
  const crypto_1 = require("@nmshd/crypto");
7
7
  const transport_1 = require("@nmshd/transport");
8
8
  exports.buildInformation = {
9
- version: "1.0.9",
10
- build: "11",
11
- date: "2021-12-21T13:20:41+00:00",
12
- commit: "8c9ee503dff9ab6d92e5c9316a2e1bc94308a719",
9
+ version: "1.0.13",
10
+ build: "15",
11
+ date: "2022-01-25T16:43:54+00:00",
12
+ commit: "156f0241ed8ffd6909131950abd43936f263fa62",
13
13
  dependencies: {},
14
14
  libraries: {
15
15
  transport: transport_1.buildInformation,
@@ -18,13 +18,21 @@ class RelationshipInfoController extends consumption_1.ConsumptionBaseController
18
18
  return result ? await RelationshipInfo_1.RelationshipInfo.from(result) : undefined;
19
19
  }
20
20
  async getRelationshipInfoByRelationship(relationshipId) {
21
- const result = await this.relationshipInfo.findOne({ relationshipId: relationshipId.toString() });
22
- if (result) {
23
- return await RelationshipInfo_1.RelationshipInfo.from(result);
24
- }
25
21
  const info = await new RelationshipInfoUtil_1.RelationshipInfoUtil(this.parent).createInitialRelationshipInfo(relationshipId);
26
- await this.relationshipInfo.create(info);
27
22
  return info;
23
+ /*
24
+ // So far, do not store the relationshipInfo, as they wouldn't be updated correctly
25
+
26
+ const result = await this.relationshipInfo.findOne({ relationshipId: relationshipId.toString() })
27
+
28
+ if (result) {
29
+ return await RelationshipInfo.from(result)
30
+ }
31
+
32
+ const info = await new RelationshipInfoUtil(this.parent).createInitialRelationshipInfo(relationshipId)
33
+ await this.relationshipInfo.create(info)
34
+ return info
35
+ */
28
36
  }
29
37
  async getRelationshipInfos(query) {
30
38
  const items = await this.relationshipInfo.find(query);
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipInfoController.js","sourceRoot":"","sources":["../../../src/modules/relationships/RelationshipInfoController.ts"],"names":[],"mappings":";;;AACA,mDAA2G;AAE3G,+DAA2D;AAC3D,iEAA6D;AAE7D,MAAa,0BAA2B,SAAQ,uCAAyB;IAGrE,YAAmB,MAA6B;QAC5C,KAAK,CAAC,uCAAyB,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;IACvE,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAElB,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAA;QACzG,OAAO,IAAI,CAAA;IACf,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,EAAU;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9D,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,mCAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnE,CAAC;IAEM,KAAK,CAAC,iCAAiC,CAAC,cAAsB;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QAEjG,IAAI,MAAM,EAAE;YACR,OAAO,MAAM,mCAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAC7C;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,2CAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAA;QACtG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxC,OAAO,IAAI,CAAA;IACf,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,KAAW;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAmB,KAAK,EAAE,mCAAgB,CAAC,CAAA;IAC3E,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,gBAAkC;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAA;QACtG,IAAI,MAAM,EAAE;YACR,MAAM,+BAAiB,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;SAC9G;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACpD,OAAO,gBAAgB,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,gBAAkC;QAClE,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5F,IAAI,CAAC,mBAAmB,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAChD;QACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAA;IAC7E,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,gBAAkC;QAClE,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACxD,CAAC;CACJ;AAzDD,gEAyDC"}
1
+ {"version":3,"file":"RelationshipInfoController.js","sourceRoot":"","sources":["../../../src/modules/relationships/RelationshipInfoController.ts"],"names":[],"mappings":";;;AACA,mDAA2G;AAE3G,+DAA2D;AAC3D,iEAA6D;AAE7D,MAAa,0BAA2B,SAAQ,uCAAyB;IAGrE,YAAmB,MAA6B;QAC5C,KAAK,CAAC,uCAAyB,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;IACvE,CAAC;IAEM,KAAK,CAAC,IAAI;QACb,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAElB,IAAI,CAAC,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAA;QACzG,OAAO,IAAI,CAAA;IACf,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,EAAU;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC9D,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,mCAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnE,CAAC;IAEM,KAAK,CAAC,iCAAiC,CAAC,cAAsB;QACjE,MAAM,IAAI,GAAG,MAAM,IAAI,2CAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAA;QACtG,OAAO,IAAI,CAAA;QACX;;;;;;;;;;;;UAYE;IACN,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,KAAW;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAmB,KAAK,EAAE,mCAAgB,CAAC,CAAA;IAC3E,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,gBAAkC;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAA;QACtG,IAAI,MAAM,EAAE;YACR,MAAM,+BAAiB,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAA;SAC9G;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACpD,OAAO,gBAAgB,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,gBAAkC;QAClE,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAC5F,IAAI,CAAC,mBAAmB,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAChD;QACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAA;IAC7E,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,gBAAkC;QAClE,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACxD,CAAC;CACJ;AA/DD,gEA+DC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RelationshipInfoUtil = void 0;
4
+ const ts_serval_1 = require("@js-soft/ts-serval");
4
5
  const content_1 = require("@nmshd/content");
5
6
  const transport_1 = require("@nmshd/transport");
6
7
  const consumption_1 = require("../../consumption");
@@ -20,13 +21,7 @@ class RelationshipInfoUtil {
20
21
  if (!relationship) {
21
22
  throw transport_1.TransportErrors.general.recordNotFound(transport_1.Relationship, id.toString()).logWith(this._log);
22
23
  }
23
- const template = await this.parent.accountController.relationshipTemplates.getRelationshipTemplate(relationship.cache.template.id);
24
- if (!template) {
25
- throw transport_1.TransportErrors.general
26
- .recordNotFound(transport_1.RelationshipTemplate, relationship.cache.template.id.toString())
27
- .logWith(this._log);
28
- }
29
- await this.parseTemplateBody(relationship, template);
24
+ await this.parseTemplateBody(relationship);
30
25
  await this.parseCreationRequest(relationship);
31
26
  return await this.createRelationshipInfo(relationship);
32
27
  }
@@ -62,14 +57,14 @@ class RelationshipInfoUtil {
62
57
  async createRelationshipInfo(relationship) {
63
58
  const peerAddress = relationship.peer.address;
64
59
  const truncatedAddress = peerAddress.address.substring(3, 9);
65
- let info = await RelationshipInfo_1.RelationshipInfo.from({
60
+ const info = await RelationshipInfo_1.RelationshipInfo.from({
66
61
  attributes: [],
67
62
  id: await consumption_1.ConsumptionIds.relationshipInfo.generate(),
68
63
  isPinned: false,
69
64
  relationshipId: relationship.id,
70
65
  title: truncatedAddress
71
66
  });
72
- info = await this.parent.relationshipInfo.createRelationshipInfo(info);
67
+ // info = await this.parent.relationshipInfo.createRelationshipInfo(info)
73
68
  const items = await this.parent.sharedItems.getSharedItems({
74
69
  sharedBy: relationship.peer.address.toString()
75
70
  });
@@ -89,75 +84,135 @@ class RelationshipInfoUtil {
89
84
  info.attributes = attributes;
90
85
  const title = this.getTitle(relationship, attributeMap);
91
86
  info.title = title;
92
- await this.parent.relationshipInfo.updateRelationshipInfo(info);
87
+ // await this.parent.relationshipInfo.updateRelationshipInfo(info)
93
88
  return info;
94
89
  }
95
- async parseTemplateBody(relationship, template) {
90
+ async parseTemplateBody(relationship) {
91
+ const template = relationship.cache.template;
96
92
  if (!template.cache) {
97
93
  throw transport_1.TransportErrors.general.cacheEmpty(transport_1.RelationshipTemplate, template.id.toString()).logWith(this._log);
98
94
  }
95
+ const body = template.cache.content;
99
96
  const isTemplator = this.parent.accountController.identity.isMe(template.cache.createdBy);
100
- if (template.cache.content instanceof content_1.RelationshipTemplateBody) {
101
- const body = template.cache.content;
97
+ const sharedAt = template.cache.createdAt;
98
+ const sharedBy = isTemplator ? this.parent.accountController.identity.address : relationship.peer.address;
99
+ const sharedWith = isTemplator ? relationship.peer.address : this.parent.accountController.identity.address;
100
+ const sharedItemsWithSameReference = await this.parent.sharedItems.getSharedItems({
101
+ reference: template.id.toString()
102
+ });
103
+ const missingItems = [];
104
+ if (body instanceof content_1.RelationshipTemplateBody) {
102
105
  const attributes = body.sharedAttributes;
103
106
  if (attributes) {
104
- const sharedAt = template.cache.createdAt;
105
- const sharedBy = isTemplator
106
- ? this.parent.accountController.identity.address
107
- : relationship.peer.address;
108
- const sharedWith = isTemplator
109
- ? relationship.peer.address
110
- : this.parent.accountController.identity.address;
111
- for (const attribute of attributes) {
112
- const sharedItem = await SharedItem_1.SharedItem.from({
113
- id: await consumption_1.ConsumptionIds.sharedItem.generate(),
114
- content: attribute,
115
- sharedAt: sharedAt,
116
- sharedBy: sharedBy,
117
- sharedWith: sharedWith,
118
- reference: template.id,
119
- expiresAt: attribute.validTo
107
+ if (sharedItemsWithSameReference.length !== attributes.length) {
108
+ attributes.forEach((attribute) => {
109
+ if (!sharedItemsWithSameReference.find(function (item) {
110
+ const content = item.content;
111
+ return content.name === attribute.name;
112
+ })) {
113
+ missingItems.push(attribute);
114
+ }
120
115
  });
121
- await this.parent.sharedItems.createSharedItem(sharedItem);
122
116
  }
123
117
  }
124
118
  }
119
+ else {
120
+ // Try to parse the old template format (without types)
121
+ let oldTemplateBody = body;
122
+ if (body instanceof ts_serval_1.JSONWrapper || body instanceof ts_serval_1.JSONWrapperAsync) {
123
+ oldTemplateBody = oldTemplateBody.value;
124
+ }
125
+ if ((oldTemplateBody === null || oldTemplateBody === void 0 ? void 0 : oldTemplateBody.attributes) && Array.isArray(oldTemplateBody.attributes)) {
126
+ if (sharedItemsWithSameReference.length !== oldTemplateBody.attributes.length) {
127
+ oldTemplateBody.attributes.forEach((attribute) => {
128
+ if (!sharedItemsWithSameReference.find(function (item) {
129
+ const content = item.content;
130
+ return content.name === attribute.name;
131
+ })) {
132
+ missingItems.push(content_1.Attribute.from({
133
+ name: attribute.name,
134
+ value: attribute.value
135
+ }));
136
+ }
137
+ });
138
+ }
139
+ }
140
+ }
141
+ for (const attribute of missingItems) {
142
+ const sharedItem = await SharedItem_1.SharedItem.from({
143
+ id: await consumption_1.ConsumptionIds.sharedItem.generate(),
144
+ content: attribute,
145
+ sharedAt: sharedAt,
146
+ sharedBy: sharedBy,
147
+ sharedWith: sharedWith,
148
+ reference: template.id,
149
+ expiresAt: attribute.validTo
150
+ });
151
+ await this.parent.sharedItems.createSharedItem(sharedItem);
152
+ }
125
153
  }
126
154
  async parseCreationRequest(relationship) {
127
- const request = relationship.cache.creationChange.request;
128
- if (!request.content) {
129
- const error = new Error("error.consumption.noRequestContent");
130
- this._log.error(error);
131
- throw error;
132
- }
155
+ const change = relationship.cache.creationChange;
156
+ const request = change.request;
157
+ const body = request.content;
133
158
  const isRequestor = this.parent.accountController.identity.isMe(request.createdBy);
134
- if (request.content instanceof content_1.RelationshipCreationChangeRequestBody) {
135
- const body = request.content;
159
+ const sharedAt = request.createdAt;
160
+ const sharedBy = isRequestor ? this.parent.accountController.identity.address : relationship.peer.address;
161
+ const sharedWith = isRequestor ? relationship.peer.address : this.parent.accountController.identity.address;
162
+ const sharedItemsWithSameReference = await this.parent.sharedItems.getSharedItems({
163
+ reference: change.id.toString()
164
+ });
165
+ const missingItems = [];
166
+ if (body instanceof content_1.RelationshipCreationChangeRequestBody) {
136
167
  const attributes = body.sharedAttributes;
137
- if (attributes) {
138
- const sharedAt = request.createdAt;
139
- const sharedBy = isRequestor
140
- ? this.parent.accountController.identity.address
141
- : relationship.peer.address;
142
- const sharedWith = isRequestor
143
- ? relationship.peer.address
144
- : this.parent.accountController.identity.address;
145
- for (const attribute of attributes) {
146
- const sharedItem = await SharedItem_1.SharedItem.from({
147
- id: await consumption_1.ConsumptionIds.sharedItem.generate(),
148
- content: attribute,
149
- sharedAt: sharedAt,
150
- sharedBy: sharedBy,
151
- sharedWith: sharedWith,
152
- reference: relationship.id,
153
- expiresAt: attribute.validTo
168
+ if (attributes && attributes.length > 0) {
169
+ if (sharedItemsWithSameReference.length !== attributes.length) {
170
+ attributes.forEach((attribute) => {
171
+ if (!sharedItemsWithSameReference.find(function (item) {
172
+ const content = item.content;
173
+ return content.name === attribute.name;
174
+ })) {
175
+ missingItems.push(attribute);
176
+ }
154
177
  });
155
- await this.parent.sharedItems.createSharedItem(sharedItem);
156
178
  }
157
179
  }
158
180
  }
159
181
  else {
160
- throw new Error("Request.content.content is no RelationshipCreationChangeRequestBody");
182
+ // Try to parse the old request format (without types)
183
+ let oldRequestBody = body;
184
+ if (body instanceof ts_serval_1.JSONWrapper || body instanceof ts_serval_1.JSONWrapperAsync) {
185
+ oldRequestBody = oldRequestBody.value;
186
+ }
187
+ if (oldRequestBody === null || oldRequestBody === void 0 ? void 0 : oldRequestBody.attributes) {
188
+ const keys = Object.keys(oldRequestBody.attributes);
189
+ if (sharedItemsWithSameReference.length !== keys.length) {
190
+ keys.forEach((key) => {
191
+ const attribute = oldRequestBody.attributes[key];
192
+ if (!sharedItemsWithSameReference.find(function (item) {
193
+ const content = item.content;
194
+ return content.name === attribute.name;
195
+ })) {
196
+ missingItems.push(content_1.Attribute.from({
197
+ name: attribute.name,
198
+ value: attribute.value
199
+ }));
200
+ }
201
+ });
202
+ }
203
+ }
204
+ }
205
+ for (const attribute of missingItems) {
206
+ const sharedItem = await SharedItem_1.SharedItem.from({
207
+ id: await consumption_1.ConsumptionIds.sharedItem.generate(),
208
+ content: attribute,
209
+ sharedAt: sharedAt,
210
+ sharedBy: sharedBy,
211
+ sharedWith: sharedWith,
212
+ reference: change.id,
213
+ expiresAt: attribute.validTo
214
+ });
215
+ await this.parent.sharedItems.createSharedItem(sharedItem);
161
216
  }
162
217
  }
163
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipInfoUtil.js","sourceRoot":"","sources":["../../../src/modules/relationships/RelationshipInfoUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RelationshipInfoUtil.js","sourceRoot":"","sources":["../../../src/modules/relationships/RelationshipInfoUtil.ts"],"names":[],"mappings":";;;AACA,kDAAkE;AAClE,4CAA2G;AAC3G,gDAAsH;AACtH,mDAAkD;AAElD,gEAA4D;AAC5D,yEAAqE;AACrE,+DAA2D;AAE3D,MAAa,oBAAoB;IAM7B,YAAoC,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;QAC7D,IAAI,CAAC,IAAI,GAAG,kCAAsB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAA;IACtE,CAAC;IAND,IAAW,GAAG;QACV,OAAO,IAAI,CAAC,IAAI,CAAA;IACpB,CAAC;IAMM,KAAK,CAAC,6BAA6B,CAAC,EAAU;QACjD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAC1F,IAAI,CAAC,YAAY,EAAE;YACf,MAAM,2BAAe,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAY,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SAC/F;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAA;QAC1C,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAE7C,OAAO,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAA;IAC1D,CAAC;IAEO,QAAQ,CAAC,YAA0B,EAAE,YAAgD;;QACzF,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAEhE,MAAM,SAAS,GAAG,MAAA,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,0CAAE,OAAO,CAAC,KAAK,CAAA;QAC/D,MAAM,SAAS,GAAG,MAAA,YAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,0CAAE,OAAO,CAAC,KAAK,CAAA;QACrE,MAAM,UAAU,GAAG,MAAA,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,0CAAE,OAAO,CAAC,KAAK,CAAA;QACvE,MAAM,MAAM,GAAG,MAAA,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,0CAAE,OAAO,CAAC,KAAK,CAAA;QAC/D,MAAM,OAAO,GAAG,MAAA,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,0CAAE,OAAO,CAAC,KAAK,CAAA;QACpE,MAAM,SAAS,GAAG,MAAA,YAAY,CAAC,GAAG,CAAC,wBAAwB,CAAC,0CAAE,OAAO,CAAC,KAAK,CAAA;QAE3E,IAAI,SAAS,EAAE;YACX,KAAK,GAAG,SAAS,CAAA;SACpB;aAAM,IAAI,SAAS,IAAI,UAAU,EAAE;YAChC,KAAK,GAAG,GAAG,SAAS,IAAI,UAAU,EAAE,CAAA;SACvC;aAAM,IAAI,SAAS,EAAE;YAClB,KAAK,GAAG,SAAS,CAAA;SACpB;aAAM,IAAI,UAAU,IAAI,MAAM,EAAE;YAC7B,KAAK,GAAG,4BAA4B,MAAM,IAAI,UAAU,EAAE,CAAA;SAC7D;aAAM,IAAI,OAAO,EAAE;YAChB,KAAK,GAAG,OAAO,CAAA;SAClB;aAAM,IAAI,SAAS,EAAE;YAClB,KAAK,GAAG,SAAS,CAAA;SACpB;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,YAA0B;QAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAA;QAC7C,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,MAAM,IAAI,GAAG,MAAM,mCAAgB,CAAC,IAAI,CAAC;YACrC,UAAU,EAAE,EAAE;YACd,EAAE,EAAE,MAAM,4BAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YACpD,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,YAAY,CAAC,EAAE;YAC/B,KAAK,EAAE,gBAAgB;SAC1B,CAAC,CAAA;QACF,yEAAyE;QAEzE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;YACvD,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;SACjD,CAAC,CAAA;QACF,MAAM,UAAU,GAAG,EAAE,CAAA;QACrB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAiC,CAAA;QAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI,IAAI,CAAC,OAAO,YAAY,mBAAS,EAAE;gBACnC,MAAM,OAAO,GAAG,MAAM,6CAAqB,CAAC,IAAI,CAAC;oBAC7C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBACvB,UAAU,EAAE,IAAI,CAAC,EAAE;oBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACxB,CAAC,CAAA;gBACF,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACxB,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;aAC1C;SACJ;QAED,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;QACvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,kEAAkE;QAClE,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,YAA0B;QACtD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAM,CAAC,QAAQ,CAAA;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACjB,MAAM,2BAAe,CAAC,OAAO,CAAC,UAAU,CAAC,gCAAoB,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SAC5G;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACzF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAA;QACzC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAA;QACzG,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAA;QAC3G,MAAM,4BAA4B,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;YAC9E,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE;SACpC,CAAC,CAAA;QACF,MAAM,YAAY,GAAgB,EAAE,CAAA;QAEpC,IAAI,IAAI,YAAY,kCAAwB,EAAE;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAA;YACxC,IAAI,UAAU,EAAE;gBACZ,IAAI,4BAA4B,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;oBAC3D,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;wBAC7B,IACI,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,IAAI;4BAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAoB,CAAA;4BACzC,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAA;wBAC1C,CAAC,CAAC,EACJ;4BACE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;yBAC/B;oBACL,CAAC,CAAC,CAAA;iBACL;aACJ;SACJ;aAAM;YACH,uDAAuD;YACvD,IAAI,eAAe,GAAQ,IAAI,CAAA;YAC/B,IAAI,IAAI,YAAY,uBAAW,IAAI,IAAI,YAAY,4BAAgB,EAAE;gBACjE,eAAe,GAAG,eAAe,CAAC,KAAK,CAAA;aAC1C;YACD,IAAI,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,UAAU,KAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;gBAC1E,IAAI,4BAA4B,CAAC,MAAM,KAAK,eAAe,CAAC,UAAU,CAAC,MAAM,EAAE;oBAC3E,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAc,EAAE,EAAE;wBAClD,IACI,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,IAAI;4BAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAoB,CAAA;4BACzC,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAA;wBAC1C,CAAC,CAAC,EACJ;4BACE,YAAY,CAAC,IAAI,CACb,mBAAS,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,SAAS,CAAC,IAAI;gCACpB,KAAK,EAAE,SAAS,CAAC,KAAK;6BACzB,CAAC,CACL,CAAA;yBACJ;oBACL,CAAC,CAAC,CAAA;iBACL;aACJ;SACJ;QAED,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE;YAClC,MAAM,UAAU,GAAG,MAAM,uBAAU,CAAC,IAAI,CAAC;gBACrC,EAAE,EAAE,MAAM,4BAAc,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAC9C,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,QAAQ,CAAC,EAAE;gBACtB,SAAS,EAAE,SAAS,CAAC,OAAO;aAC/B,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;SAC7D;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,YAA0B;QACzD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAM,CAAC,cAAc,CAAA;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAA;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAA;QACzG,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAA;QAC3G,MAAM,4BAA4B,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC;YAC9E,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;SAClC,CAAC,CAAA;QACF,MAAM,YAAY,GAAgB,EAAE,CAAA;QAEpC,IAAI,IAAI,YAAY,+CAAqC,EAAE;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAA;YACxC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,IAAI,4BAA4B,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;oBAC3D,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;wBAC7B,IACI,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,IAAI;4BAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAoB,CAAA;4BACzC,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAA;wBAC1C,CAAC,CAAC,EACJ;4BACE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;yBAC/B;oBACL,CAAC,CAAC,CAAA;iBACL;aACJ;SACJ;aAAM;YACH,sDAAsD;YACtD,IAAI,cAAc,GAAQ,IAAI,CAAA;YAC9B,IAAI,IAAI,YAAY,uBAAW,IAAI,IAAI,YAAY,4BAAgB,EAAE;gBACjE,cAAc,GAAG,cAAc,CAAC,KAAK,CAAA;aACxC;YAED,IAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,UAAU,EAAE;gBAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;gBACnD,IAAI,4BAA4B,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;oBACrD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;wBACzB,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;wBAChD,IACI,CAAC,4BAA4B,CAAC,IAAI,CAAC,UAAU,IAAI;4BAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAoB,CAAA;4BACzC,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAA;wBAC1C,CAAC,CAAC,EACJ;4BACE,YAAY,CAAC,IAAI,CACb,mBAAS,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,SAAS,CAAC,IAAI;gCACpB,KAAK,EAAE,SAAS,CAAC,KAAK;6BACzB,CAAC,CACL,CAAA;yBACJ;oBACL,CAAC,CAAC,CAAA;iBACL;aACJ;SACJ;QAED,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE;YAClC,MAAM,UAAU,GAAG,MAAM,uBAAU,CAAC,IAAI,CAAC;gBACrC,EAAE,EAAE,MAAM,4BAAc,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAC9C,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,MAAM,CAAC,EAAE;gBACpB,SAAS,EAAE,SAAS,CAAC,OAAO;aAC/B,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;SAC7D;IACL,CAAC;CACJ;AAvOD,oDAuOC"}
@@ -17,10 +17,10 @@ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
17
17
  const crypto_1 = __webpack_require__(/*! @nmshd/crypto */ "@nmshd/crypto");
18
18
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
19
19
  exports.buildInformation = {
20
- version: "1.0.9",
21
- build: "11",
22
- date: "2021-12-21T13:20:41+00:00",
23
- commit: "8c9ee503dff9ab6d92e5c9316a2e1bc94308a719",
20
+ version: "1.0.13",
21
+ build: "15",
22
+ date: "2022-01-25T16:43:54+00:00",
23
+ commit: "156f0241ed8ffd6909131950abd43936f263fa62",
24
24
  dependencies: {},
25
25
  libraries: {
26
26
  transport: transport_1.buildInformation,
@@ -700,13 +700,21 @@ class RelationshipInfoController extends consumption_1.ConsumptionBaseController
700
700
  return result ? await RelationshipInfo_1.RelationshipInfo.from(result) : undefined;
701
701
  }
702
702
  async getRelationshipInfoByRelationship(relationshipId) {
703
- const result = await this.relationshipInfo.findOne({ relationshipId: relationshipId.toString() });
704
- if (result) {
705
- return await RelationshipInfo_1.RelationshipInfo.from(result);
706
- }
707
703
  const info = await new RelationshipInfoUtil_1.RelationshipInfoUtil(this.parent).createInitialRelationshipInfo(relationshipId);
708
- await this.relationshipInfo.create(info);
709
704
  return info;
705
+ /*
706
+ // So far, do not store the relationshipInfo, as they wouldn't be updated correctly
707
+
708
+ const result = await this.relationshipInfo.findOne({ relationshipId: relationshipId.toString() })
709
+
710
+ if (result) {
711
+ return await RelationshipInfo.from(result)
712
+ }
713
+
714
+ const info = await new RelationshipInfoUtil(this.parent).createInitialRelationshipInfo(relationshipId)
715
+ await this.relationshipInfo.create(info)
716
+ return info
717
+ */
710
718
  }
711
719
  async getRelationshipInfos(query) {
712
720
  const items = await this.relationshipInfo.find(query);
@@ -745,6 +753,7 @@ exports.RelationshipInfoController = RelationshipInfoController;
745
753
 
746
754
  Object.defineProperty(exports, "__esModule", ({ value: true }));
747
755
  exports.RelationshipInfoUtil = void 0;
756
+ const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
748
757
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
749
758
  const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
750
759
  const consumption_1 = __webpack_require__(/*! ../../consumption */ "./dist/consumption/index.js");
@@ -764,13 +773,7 @@ class RelationshipInfoUtil {
764
773
  if (!relationship) {
765
774
  throw transport_1.TransportErrors.general.recordNotFound(transport_1.Relationship, id.toString()).logWith(this._log);
766
775
  }
767
- const template = await this.parent.accountController.relationshipTemplates.getRelationshipTemplate(relationship.cache.template.id);
768
- if (!template) {
769
- throw transport_1.TransportErrors.general
770
- .recordNotFound(transport_1.RelationshipTemplate, relationship.cache.template.id.toString())
771
- .logWith(this._log);
772
- }
773
- await this.parseTemplateBody(relationship, template);
776
+ await this.parseTemplateBody(relationship);
774
777
  await this.parseCreationRequest(relationship);
775
778
  return await this.createRelationshipInfo(relationship);
776
779
  }
@@ -806,14 +809,14 @@ class RelationshipInfoUtil {
806
809
  async createRelationshipInfo(relationship) {
807
810
  const peerAddress = relationship.peer.address;
808
811
  const truncatedAddress = peerAddress.address.substring(3, 9);
809
- let info = await RelationshipInfo_1.RelationshipInfo.from({
812
+ const info = await RelationshipInfo_1.RelationshipInfo.from({
810
813
  attributes: [],
811
814
  id: await consumption_1.ConsumptionIds.relationshipInfo.generate(),
812
815
  isPinned: false,
813
816
  relationshipId: relationship.id,
814
817
  title: truncatedAddress
815
818
  });
816
- info = await this.parent.relationshipInfo.createRelationshipInfo(info);
819
+ // info = await this.parent.relationshipInfo.createRelationshipInfo(info)
817
820
  const items = await this.parent.sharedItems.getSharedItems({
818
821
  sharedBy: relationship.peer.address.toString()
819
822
  });
@@ -833,75 +836,135 @@ class RelationshipInfoUtil {
833
836
  info.attributes = attributes;
834
837
  const title = this.getTitle(relationship, attributeMap);
835
838
  info.title = title;
836
- await this.parent.relationshipInfo.updateRelationshipInfo(info);
839
+ // await this.parent.relationshipInfo.updateRelationshipInfo(info)
837
840
  return info;
838
841
  }
839
- async parseTemplateBody(relationship, template) {
842
+ async parseTemplateBody(relationship) {
843
+ const template = relationship.cache.template;
840
844
  if (!template.cache) {
841
845
  throw transport_1.TransportErrors.general.cacheEmpty(transport_1.RelationshipTemplate, template.id.toString()).logWith(this._log);
842
846
  }
847
+ const body = template.cache.content;
843
848
  const isTemplator = this.parent.accountController.identity.isMe(template.cache.createdBy);
844
- if (template.cache.content instanceof content_1.RelationshipTemplateBody) {
845
- const body = template.cache.content;
849
+ const sharedAt = template.cache.createdAt;
850
+ const sharedBy = isTemplator ? this.parent.accountController.identity.address : relationship.peer.address;
851
+ const sharedWith = isTemplator ? relationship.peer.address : this.parent.accountController.identity.address;
852
+ const sharedItemsWithSameReference = await this.parent.sharedItems.getSharedItems({
853
+ reference: template.id.toString()
854
+ });
855
+ const missingItems = [];
856
+ if (body instanceof content_1.RelationshipTemplateBody) {
846
857
  const attributes = body.sharedAttributes;
847
858
  if (attributes) {
848
- const sharedAt = template.cache.createdAt;
849
- const sharedBy = isTemplator
850
- ? this.parent.accountController.identity.address
851
- : relationship.peer.address;
852
- const sharedWith = isTemplator
853
- ? relationship.peer.address
854
- : this.parent.accountController.identity.address;
855
- for (const attribute of attributes) {
856
- const sharedItem = await SharedItem_1.SharedItem.from({
857
- id: await consumption_1.ConsumptionIds.sharedItem.generate(),
858
- content: attribute,
859
- sharedAt: sharedAt,
860
- sharedBy: sharedBy,
861
- sharedWith: sharedWith,
862
- reference: template.id,
863
- expiresAt: attribute.validTo
859
+ if (sharedItemsWithSameReference.length !== attributes.length) {
860
+ attributes.forEach((attribute) => {
861
+ if (!sharedItemsWithSameReference.find(function (item) {
862
+ const content = item.content;
863
+ return content.name === attribute.name;
864
+ })) {
865
+ missingItems.push(attribute);
866
+ }
864
867
  });
865
- await this.parent.sharedItems.createSharedItem(sharedItem);
866
868
  }
867
869
  }
868
870
  }
871
+ else {
872
+ // Try to parse the old template format (without types)
873
+ let oldTemplateBody = body;
874
+ if (body instanceof ts_serval_1.JSONWrapper || body instanceof ts_serval_1.JSONWrapperAsync) {
875
+ oldTemplateBody = oldTemplateBody.value;
876
+ }
877
+ if ((oldTemplateBody === null || oldTemplateBody === void 0 ? void 0 : oldTemplateBody.attributes) && Array.isArray(oldTemplateBody.attributes)) {
878
+ if (sharedItemsWithSameReference.length !== oldTemplateBody.attributes.length) {
879
+ oldTemplateBody.attributes.forEach((attribute) => {
880
+ if (!sharedItemsWithSameReference.find(function (item) {
881
+ const content = item.content;
882
+ return content.name === attribute.name;
883
+ })) {
884
+ missingItems.push(content_1.Attribute.from({
885
+ name: attribute.name,
886
+ value: attribute.value
887
+ }));
888
+ }
889
+ });
890
+ }
891
+ }
892
+ }
893
+ for (const attribute of missingItems) {
894
+ const sharedItem = await SharedItem_1.SharedItem.from({
895
+ id: await consumption_1.ConsumptionIds.sharedItem.generate(),
896
+ content: attribute,
897
+ sharedAt: sharedAt,
898
+ sharedBy: sharedBy,
899
+ sharedWith: sharedWith,
900
+ reference: template.id,
901
+ expiresAt: attribute.validTo
902
+ });
903
+ await this.parent.sharedItems.createSharedItem(sharedItem);
904
+ }
869
905
  }
870
906
  async parseCreationRequest(relationship) {
871
- const request = relationship.cache.creationChange.request;
872
- if (!request.content) {
873
- const error = new Error("error.consumption.noRequestContent");
874
- this._log.error(error);
875
- throw error;
876
- }
907
+ const change = relationship.cache.creationChange;
908
+ const request = change.request;
909
+ const body = request.content;
877
910
  const isRequestor = this.parent.accountController.identity.isMe(request.createdBy);
878
- if (request.content instanceof content_1.RelationshipCreationChangeRequestBody) {
879
- const body = request.content;
911
+ const sharedAt = request.createdAt;
912
+ const sharedBy = isRequestor ? this.parent.accountController.identity.address : relationship.peer.address;
913
+ const sharedWith = isRequestor ? relationship.peer.address : this.parent.accountController.identity.address;
914
+ const sharedItemsWithSameReference = await this.parent.sharedItems.getSharedItems({
915
+ reference: change.id.toString()
916
+ });
917
+ const missingItems = [];
918
+ if (body instanceof content_1.RelationshipCreationChangeRequestBody) {
880
919
  const attributes = body.sharedAttributes;
881
- if (attributes) {
882
- const sharedAt = request.createdAt;
883
- const sharedBy = isRequestor
884
- ? this.parent.accountController.identity.address
885
- : relationship.peer.address;
886
- const sharedWith = isRequestor
887
- ? relationship.peer.address
888
- : this.parent.accountController.identity.address;
889
- for (const attribute of attributes) {
890
- const sharedItem = await SharedItem_1.SharedItem.from({
891
- id: await consumption_1.ConsumptionIds.sharedItem.generate(),
892
- content: attribute,
893
- sharedAt: sharedAt,
894
- sharedBy: sharedBy,
895
- sharedWith: sharedWith,
896
- reference: relationship.id,
897
- expiresAt: attribute.validTo
920
+ if (attributes && attributes.length > 0) {
921
+ if (sharedItemsWithSameReference.length !== attributes.length) {
922
+ attributes.forEach((attribute) => {
923
+ if (!sharedItemsWithSameReference.find(function (item) {
924
+ const content = item.content;
925
+ return content.name === attribute.name;
926
+ })) {
927
+ missingItems.push(attribute);
928
+ }
898
929
  });
899
- await this.parent.sharedItems.createSharedItem(sharedItem);
900
930
  }
901
931
  }
902
932
  }
903
933
  else {
904
- throw new Error("Request.content.content is no RelationshipCreationChangeRequestBody");
934
+ // Try to parse the old request format (without types)
935
+ let oldRequestBody = body;
936
+ if (body instanceof ts_serval_1.JSONWrapper || body instanceof ts_serval_1.JSONWrapperAsync) {
937
+ oldRequestBody = oldRequestBody.value;
938
+ }
939
+ if (oldRequestBody === null || oldRequestBody === void 0 ? void 0 : oldRequestBody.attributes) {
940
+ const keys = Object.keys(oldRequestBody.attributes);
941
+ if (sharedItemsWithSameReference.length !== keys.length) {
942
+ keys.forEach((key) => {
943
+ const attribute = oldRequestBody.attributes[key];
944
+ if (!sharedItemsWithSameReference.find(function (item) {
945
+ const content = item.content;
946
+ return content.name === attribute.name;
947
+ })) {
948
+ missingItems.push(content_1.Attribute.from({
949
+ name: attribute.name,
950
+ value: attribute.value
951
+ }));
952
+ }
953
+ });
954
+ }
955
+ }
956
+ }
957
+ for (const attribute of missingItems) {
958
+ const sharedItem = await SharedItem_1.SharedItem.from({
959
+ id: await consumption_1.ConsumptionIds.sharedItem.generate(),
960
+ content: attribute,
961
+ sharedAt: sharedAt,
962
+ sharedBy: sharedBy,
963
+ sharedWith: sharedWith,
964
+ reference: change.id,
965
+ expiresAt: attribute.validTo
966
+ });
967
+ await this.parent.sharedItems.createSharedItem(sharedItem);
905
968
  }
906
969
  }
907
970
  }