@nmshd/consumption 2.0.0-beta.6 → 2.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/buildInformation.js +4 -4
  2. package/dist/consumption/ConsumptionController.js +2 -2
  3. package/dist/consumption/ConsumptionController.js.map +1 -1
  4. package/dist/modules/index.d.ts +2 -2
  5. package/dist/modules/index.js +2 -2
  6. package/dist/modules/index.js.map +1 -1
  7. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.d.ts +7 -0
  8. package/dist/modules/requests/itemProcessors/{createAttribute/AcceptCreateAttributeRequestItemParameters.js → createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js} +7 -7
  9. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js.map +1 -0
  10. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.d.ts +11 -0
  11. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js +44 -0
  12. package/dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js.map +1 -0
  13. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js +2 -1
  14. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js.map +1 -1
  15. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.d.ts +6 -8
  16. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js +34 -72
  17. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js.map +1 -1
  18. package/lib-web/nmshd.consumption.js +75 -128
  19. package/lib-web/nmshd.consumption.js.map +1 -1
  20. package/lib-web/nmshd.consumption.min.js +1 -1
  21. package/lib-web/nmshd.consumption.min.js.map +1 -1
  22. package/package.json +2 -2
  23. package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.d.ts +0 -7
  24. package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js.map +0 -1
  25. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts +0 -12
  26. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js +0 -60
  27. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js.map +0 -1
@@ -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: "2.0.0-beta.6",
21
- build: "56",
22
- date: "2022-08-03T08:10:05+00:00",
23
- commit: "5b68e1cbedaab1e529c76a8afebca1ffccba5cf4",
20
+ version: "2.0.0-beta.7",
21
+ build: "57",
22
+ date: "2022-08-05T14:52:40+00:00",
23
+ commit: "c807245adfc9a9d69e8907f9f604770d2b6f7c6b",
24
24
  dependencies: {"@js-soft/docdb-querytranslator":"^1.1.0","ts-simple-nameof":"^1.3.1"},
25
25
  libraries: {
26
26
  transport: transport_1.buildInformation,
@@ -120,10 +120,10 @@ class ConsumptionController {
120
120
  }
121
121
  getDefaultProcessors() {
122
122
  return new Map([
123
- [content_1.CreateAttributeRequestItem, modules_1.CreateAttributeRequestItemProcessor],
123
+ [content_1.ShareAttributeRequestItem, modules_1.ShareAttributeRequestItemProcessor],
124
+ [content_1.CreateRelationshipAttributeRequestItem, modules_1.CreateRelationshipAttributeRequestItemProcessor],
124
125
  [content_1.ReadAttributeRequestItem, modules_1.ReadAttributeRequestItemProcessor],
125
126
  [content_1.ProposeAttributeRequestItem, modules_1.ProposeAttributeRequestItemProcessor],
126
- [content_1.ShareAttributeRequestItem, modules_1.ShareAttributeRequestItemProcessor],
127
127
  [content_1.ConsentRequestItem, modules_1.GenericRequestItemProcessor]
128
128
  ]);
129
129
  }
@@ -1335,8 +1335,8 @@ __exportStar(__webpack_require__(/*! ./requests/incoming/IncomingRequestsControl
1335
1335
  __exportStar(__webpack_require__(/*! ./requests/incoming/received/ReceivedIncomingRequestParameters */ "./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js"), exports);
1336
1336
  __exportStar(__webpack_require__(/*! ./requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters */ "./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js"), exports);
1337
1337
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/AbstractRequestItemProcessor */ "./dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js"), exports);
1338
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js"), exports);
1339
- __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js"), exports);
1338
+ __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js"), exports);
1339
+ __exportStar(__webpack_require__(/*! ./requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js"), exports);
1340
1340
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js"), exports);
1341
1341
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/IRequestItemProcessor */ "./dist/modules/requests/itemProcessors/IRequestItemProcessor.js"), exports);
1342
1342
  __exportStar(__webpack_require__(/*! ./requests/itemProcessors/ProcessorConstructor */ "./dist/modules/requests/itemProcessors/ProcessorConstructor.js"), exports);
@@ -2379,10 +2379,10 @@ exports.ErrorValidationResult = ErrorValidationResult;
2379
2379
 
2380
2380
  /***/ }),
2381
2381
 
2382
- /***/ "./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js":
2383
- /*!************************************************************************************************************!*\
2384
- !*** ./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js ***!
2385
- \************************************************************************************************************/
2382
+ /***/ "./dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js":
2383
+ /*!************************************************************************************************************************************!*\
2384
+ !*** ./dist/modules/requests/itemProcessors/createRelationshipAttribute/AcceptCreateRelationshipAttributeRequestItemParameters.js ***!
2385
+ \************************************************************************************************************************************/
2386
2386
  /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2387
2387
 
2388
2388
  "use strict";
@@ -2394,88 +2394,72 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
2394
2394
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2395
2395
  };
2396
2396
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2397
- exports.AcceptCreateAttributeRequestItemParameters = void 0;
2397
+ exports.AcceptCreateRelationshipAttributeRequestItemParameters = void 0;
2398
2398
  const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
2399
- let AcceptCreateAttributeRequestItemParameters = class AcceptCreateAttributeRequestItemParameters extends ts_serval_1.Serializable {
2399
+ let AcceptCreateRelationshipAttributeRequestItemParameters = class AcceptCreateRelationshipAttributeRequestItemParameters extends ts_serval_1.Serializable {
2400
2400
  static from(value) {
2401
2401
  return this.fromAny(value);
2402
2402
  }
2403
2403
  };
2404
- AcceptCreateAttributeRequestItemParameters = __decorate([
2405
- (0, ts_serval_1.type)("AcceptCreateAttributeRequestItemParameters")
2406
- ], AcceptCreateAttributeRequestItemParameters);
2407
- exports.AcceptCreateAttributeRequestItemParameters = AcceptCreateAttributeRequestItemParameters;
2408
- //# sourceMappingURL=AcceptCreateAttributeRequestItemParameters.js.map
2404
+ AcceptCreateRelationshipAttributeRequestItemParameters = __decorate([
2405
+ (0, ts_serval_1.type)("AcceptCreateRelationshipAttributeRequestItemParameters")
2406
+ ], AcceptCreateRelationshipAttributeRequestItemParameters);
2407
+ exports.AcceptCreateRelationshipAttributeRequestItemParameters = AcceptCreateRelationshipAttributeRequestItemParameters;
2408
+ //# sourceMappingURL=AcceptCreateRelationshipAttributeRequestItemParameters.js.map
2409
2409
 
2410
2410
  /***/ }),
2411
2411
 
2412
- /***/ "./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js":
2413
- /*!*****************************************************************************************************!*\
2414
- !*** ./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js ***!
2415
- \*****************************************************************************************************/
2412
+ /***/ "./dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js":
2413
+ /*!*****************************************************************************************************************************!*\
2414
+ !*** ./dist/modules/requests/itemProcessors/createRelationshipAttribute/CreateRelationshipAttributeRequestItemProcessor.js ***!
2415
+ \*****************************************************************************************************************************/
2416
2416
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
2417
2417
 
2418
2418
  "use strict";
2419
2419
 
2420
2420
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2421
- exports.CreateAttributeRequestItemProcessor = void 0;
2421
+ exports.CreateRelationshipAttributeRequestItemProcessor = void 0;
2422
2422
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
2423
2423
  const consumption_1 = __webpack_require__(/*! ../../../../consumption */ "./dist/consumption/index.js");
2424
2424
  const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js");
2425
2425
  const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
2426
- class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2426
+ class CreateRelationshipAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2427
2427
  canCreateOutgoingRequestItem(requestItem, _request, _recipient) {
2428
2428
  if (requestItem.attribute.owner.toString() !== "" &&
2429
2429
  !requestItem.attribute.owner.equals(this.currentIdentityAddress)) {
2430
2430
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given `attribute` can only be an empty string. This is because you can only send Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2431
2431
  }
2432
- if (requestItem.attribute instanceof content_1.IdentityAttribute) {
2433
- return this.canCreateRequestItemWithIdentityAttribute(requestItem);
2434
- }
2435
- return ValidationResult_1.ValidationResult.success();
2436
- }
2437
- canCreateRequestItemWithIdentityAttribute(requestItem) {
2438
- if (!requestItem.sourceAttributeId) {
2439
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("'sourceAttributeId' cannot be undefined when sending an Identity Attribute."));
2440
- }
2441
2432
  return ValidationResult_1.ValidationResult.success();
2442
2433
  }
2443
2434
  async accept(requestItem, _params, requestInfo) {
2435
+ requestItem.attribute.owner ??= requestInfo.peer;
2444
2436
  const peerLocalAttribute = await this.consumptionController.attributes.createPeerLocalAttribute({
2445
2437
  content: requestItem.attribute,
2446
2438
  peer: requestInfo.peer,
2447
2439
  requestReference: requestInfo.id
2448
2440
  });
2449
- return content_1.CreateAttributeAcceptResponseItem.from({
2450
- attributeId: peerLocalAttribute.id,
2451
- result: content_1.ResponseItemResult.Accepted
2441
+ return content_1.CreateRelationshipAttributeAcceptResponseItem.from({
2442
+ result: content_1.ResponseItemResult.Accepted,
2443
+ attributeId: peerLocalAttribute.id
2452
2444
  });
2453
2445
  }
2454
2446
  async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
2455
- if (!(responseItem instanceof content_1.CreateAttributeAcceptResponseItem)) {
2447
+ if (!(responseItem instanceof content_1.CreateRelationshipAttributeAcceptResponseItem)) {
2456
2448
  return;
2457
2449
  }
2458
- if (requestItem.sourceAttributeId) {
2459
- const sourceAttribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.sourceAttributeId);
2460
- await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2461
- attributeId: responseItem.attributeId,
2462
- sourceAttributeId: sourceAttribute.id,
2463
- peer: requestInfo.peer,
2464
- requestReference: requestInfo.id
2465
- });
2466
- }
2467
- else {
2468
- await this.consumptionController.attributes.createPeerLocalAttribute({
2469
- id: responseItem.attributeId,
2470
- content: requestItem.attribute,
2471
- peer: requestInfo.peer,
2472
- requestReference: requestInfo.id
2473
- });
2450
+ if (requestItem.attribute.owner.toString() === "") {
2451
+ requestItem.attribute.owner = this.currentIdentityAddress;
2474
2452
  }
2453
+ await this.consumptionController.attributes.createPeerLocalAttribute({
2454
+ id: responseItem.attributeId,
2455
+ content: requestItem.attribute,
2456
+ peer: requestInfo.peer,
2457
+ requestReference: requestInfo.id
2458
+ });
2475
2459
  }
2476
2460
  }
2477
- exports.CreateAttributeRequestItemProcessor = CreateAttributeRequestItemProcessor;
2478
- //# sourceMappingURL=CreateAttributeRequestItemProcessor.js.map
2461
+ exports.CreateRelationshipAttributeRequestItemProcessor = CreateRelationshipAttributeRequestItemProcessor;
2462
+ //# sourceMappingURL=CreateRelationshipAttributeRequestItemProcessor.js.map
2479
2463
 
2480
2464
  /***/ }),
2481
2465
 
@@ -2756,7 +2740,8 @@ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.Ge
2756
2740
  if (!foundAttribute) {
2757
2741
  return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, requestInfo.id.toString()));
2758
2742
  }
2759
- if (!this.accountController.identity.isMe(foundAttribute.content.owner)) {
2743
+ const ownerIsCurrentIdentity = this.accountController.identity.isMe(foundAttribute.content.owner);
2744
+ if (!ownerIsCurrentIdentity) {
2760
2745
  return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The given Attribute belongs to someone else. You can only share own Attributes."));
2761
2746
  }
2762
2747
  }
@@ -2859,91 +2844,53 @@ exports.AcceptShareAttributeRequestItemParameters = AcceptShareAttributeRequestI
2859
2844
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2860
2845
  exports.ShareAttributeRequestItemProcessor = void 0;
2861
2846
  const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
2862
- const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
2863
2847
  const consumption_1 = __webpack_require__(/*! ../../../../consumption */ "./dist/consumption/index.js");
2864
2848
  const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js");
2865
2849
  const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
2866
2850
  class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
2867
- async canCreateOutgoingRequestItem(requestItem, _request, recipient) {
2868
- const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
2869
- if (!attribute) {
2870
- return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(content_1.Attribute, requestItem.attributeId.toString()));
2871
- }
2872
- const attributeOwnerValidationResult = this.validateAttributeOwner(attribute.content, this.currentIdentityAddress, recipient);
2873
- if (attributeOwnerValidationResult.isError()) {
2874
- return attributeOwnerValidationResult;
2875
- }
2876
- return ValidationResult_1.ValidationResult.success();
2877
- }
2878
- async checkPrerequisitesOfIncomingRequestItem(requestItem, requestInfo) {
2879
- const relationshipToShareWith = await this.accountController.relationships.getRelationshipToIdentity(requestItem.shareWith);
2880
- if (!relationshipToShareWith) {
2881
- return false; // Should the containing Request move to Error state?
2882
- }
2883
- const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
2884
- if (!attribute) {
2885
- return false; // Should the containing Request move to Error state?
2886
- }
2887
- if (this.validateAttributeOwner(attribute.content, requestInfo.peer, this.currentIdentityAddress).isError()) {
2888
- return false;
2851
+ canCreateOutgoingRequestItem(requestItem, _request, _recipient) {
2852
+ if (requestItem.attribute instanceof content_1.IdentityAttribute) {
2853
+ return this.canCreateWithIdentityAttribute(requestItem);
2889
2854
  }
2890
- return true;
2855
+ return this.canCreateWithRelationshipAttribute(requestItem.attribute);
2891
2856
  }
2892
- validateAttributeOwner(attribute, sender, recipient) {
2893
- const attributeOwner = attribute.owner;
2894
- if (attribute instanceof content_1.IdentityAttribute) {
2895
- if (!attributeOwner.equals(recipient)) {
2896
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Can only request sharing of identity attributes owned by the recipient."));
2897
- }
2898
- }
2899
- if (attribute instanceof content_1.RelationshipAttribute) {
2900
- if (!attributeOwner.equals(recipient) && !attributeOwner.equals(sender)) {
2901
- return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot request sharing of relationship attributes not owned by recipient or sender."));
2902
- }
2857
+ canCreateWithIdentityAttribute(requestItem) {
2858
+ const ownerIsEmpty = requestItem.attribute.owner.toString() === "";
2859
+ const ownerIsCurrentIdentity = requestItem.attribute.owner.equals(this.currentIdentityAddress);
2860
+ if (!ownerIsEmpty && !ownerIsCurrentIdentity) {
2861
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The owner of the given `attribute` can only be an empty string. This is because you can only send Attributes where the recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
2903
2862
  }
2904
2863
  return ValidationResult_1.ValidationResult.success();
2905
2864
  }
2906
- canAccept(_requestItem, _params, _requestInfo) {
2865
+ canCreateWithRelationshipAttribute(attribute) {
2866
+ if (attribute.confidentiality === content_1.RelationshipAttributeConfidentiality.Private) {
2867
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The confidentiality of the given `attribute` is private. Therefore you are not allowed to share it."));
2868
+ }
2907
2869
  return ValidationResult_1.ValidationResult.success();
2908
2870
  }
2909
- async accept(requestItem, _params, _requestInfo) {
2910
- const attribute = (await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId));
2911
- if (!(await this.isAttributeAlreadyShared(attribute, requestItem.shareWith))) {
2912
- await this.shareAttribute(attribute, requestItem.shareWith);
2871
+ async accept(requestItem, _params, requestInfo) {
2872
+ if (requestItem.attribute.owner.toString() === "") {
2873
+ requestItem.attribute.owner = requestInfo.peer;
2913
2874
  }
2914
- return content_1.AcceptResponseItem.from({ result: content_1.ResponseItemResult.Accepted });
2915
- }
2916
- async isAttributeAlreadyShared(attribute, shareWith) {
2917
- if (attribute.content instanceof content_1.IdentityAttribute) {
2918
- return ((await this.consumptionController.attributes.getLocalAttributes({
2919
- "shareInfo.sourceAttribute": attribute.shareInfo.sourceAttribute.toString(),
2920
- "shareInfo.peer": shareWith.toString()
2921
- })).length > 0);
2922
- }
2923
- return ((await this.consumptionController.attributes.getLocalAttributes({
2924
- "shareInfo.sourceAttribute": attribute.id.toString(),
2925
- "shareInfo.peer": shareWith.toString()
2926
- })).length > 0);
2927
- }
2928
- async shareAttribute(attribute, shareWith) {
2929
- const createAttributeRequestItem = content_1.CreateAttributeRequestItem.from({
2930
- attribute: attribute.content,
2931
- mustBeAccepted: true,
2932
- sourceAttributeId: attribute.id
2933
- });
2934
- const createAttributeRequest = await this.consumptionController.outgoingRequests.create({
2935
- peer: shareWith,
2936
- content: content_1.Request.from({
2937
- items: [createAttributeRequestItem]
2938
- })
2875
+ const localAttribute = await this.consumptionController.attributes.createPeerLocalAttribute({
2876
+ content: requestItem.attribute,
2877
+ peer: requestInfo.peer,
2878
+ requestReference: requestInfo.id
2939
2879
  });
2940
- const message = await this.accountController.messages.sendMessage({
2941
- recipients: [shareWith],
2942
- content: createAttributeRequest.content
2880
+ return content_1.ShareAttributeAcceptResponseItem.from({
2881
+ attributeId: localAttribute.id,
2882
+ result: content_1.ResponseItemResult.Accepted
2943
2883
  });
2944
- await this.consumptionController.outgoingRequests.sent({
2945
- requestId: createAttributeRequest.id,
2946
- requestSourceObject: message
2884
+ }
2885
+ async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
2886
+ if (!(responseItem instanceof content_1.ShareAttributeAcceptResponseItem)) {
2887
+ return;
2888
+ }
2889
+ await this.consumptionController.attributes.createSharedLocalAttributeCopy({
2890
+ attributeId: responseItem.attributeId,
2891
+ sourceAttributeId: requestItem.sourceAttributeId,
2892
+ peer: requestInfo.peer,
2893
+ requestReference: requestInfo.id
2947
2894
  });
2948
2895
  }
2949
2896
  }