From 23463aaa24bf33b9cc5cdb8a5b07d22d3c7c8ab4 Mon Sep 17 00:00:00 2001
From: Dariusz Rybicki <dariusz@elixxir.io>
Date: Fri, 26 Aug 2022 13:46:19 +0100
Subject: [PATCH] Add Contact.setFacts

---
 Sources/XXClient/Models/Contact.swift | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/Sources/XXClient/Models/Contact.swift b/Sources/XXClient/Models/Contact.swift
index 7ab58973..e61a18f8 100644
--- a/Sources/XXClient/Models/Contact.swift
+++ b/Sources/XXClient/Models/Contact.swift
@@ -6,18 +6,25 @@ public struct Contact {
     data: Data,
     getId: @escaping () throws -> Data,
     getPublicKey: @escaping () throws -> Data,
-    getFacts: @escaping () throws -> [Fact]
+    getFacts: @escaping () throws -> [Fact],
+    setFacts: @escaping (Data, [Fact]) throws -> Data
   ) {
     self.data = data
     self.getId = getId
     self.getPublicKey = getPublicKey
     self.getFacts = getFacts
+    self._setFacts = setFacts
   }
 
   public var data: Data
   public var getId: () throws -> Data
   public var getPublicKey: () throws -> Data
   public var getFacts: () throws -> [Fact]
+  public var _setFacts: (Data, [Fact]) throws -> Data
+
+  public mutating func setFacts(_ facts: [Fact]) throws {
+    data = try _setFacts(data, facts)
+  }
 }
 
 extension Contact: Equatable {
@@ -31,13 +38,15 @@ extension Contact {
     _ data: Data,
     getIdFromContact: GetIdFromContact = .live,
     getPublicKeyFromContact: GetPublicKeyFromContact = .live,
-    getFactsFromContact: GetFactsFromContact = .live
+    getFactsFromContact: GetFactsFromContact = .live,
+    setFactsOnContact: SetFactsOnContact = .live
   ) -> Contact {
     Contact(
       data: data,
       getId: { try getIdFromContact(data) },
       getPublicKey: { try getPublicKeyFromContact(data) },
-      getFacts: { try getFactsFromContact(data) }
+      getFacts: { try getFactsFromContact(data) },
+      setFacts: { try setFactsOnContact(contactData: $0, facts: $1) }
     )
   }
 }
@@ -48,7 +57,8 @@ extension Contact {
       data: data,
       getId: XCTUnimplemented("\(Self.self).getId"),
       getPublicKey: XCTUnimplemented("\(Self.self).getPublicKey"),
-      getFacts: XCTUnimplemented("\(Self.self).getFacts")
+      getFacts: XCTUnimplemented("\(Self.self).getFacts"),
+      setFacts: XCTUnimplemented("\(Self.self).updateFacts")
     )
   }
 }
-- 
GitLab