diff --git a/Sources/XXClient/Models/Contact.swift b/Sources/XXClient/Models/Contact.swift index 7ab589735aa8ca7028b5d3700835bd8cd5e2966c..e61a18f8c6a5826e5619c65571cbbbb4d1fcb817 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") ) } }