From 2d8770ee5785c701751bf244b8ee803491ec605c Mon Sep 17 00:00:00 2001
From: Bruno Muniz <bmnzaf@Brunos-MacBook-Pro.local>
Date: Tue, 14 Jun 2022 23:02:23 -0400
Subject: [PATCH] Fixed package.swift and commented out local models

---
 Package.swift                       | 198 +++++++---------------
 Sources/Models/Attachment.swift     |  98 +++++------
 Sources/Models/Contact.swift        | 246 ++++++++++++++--------------
 Sources/Models/FileTransfer.swift   |  74 ++++-----
 Sources/Models/Group.swift          |  84 +++++-----
 Sources/Models/GroupChatInfo.swift  |  44 ++---
 Sources/Models/GroupMember.swift    |  84 +++++-----
 Sources/Models/GroupMessage.swift   | 112 ++++++-------
 Sources/Models/Message.swift        | 140 ++++++++--------
 Sources/Models/Payload.swift        |  78 ++++-----
 Sources/Models/Reply.swift          |  38 ++---
 Sources/Models/SingleChatInfo.swift |  36 ++--
 12 files changed, 574 insertions(+), 658 deletions(-)

diff --git a/Package.swift b/Package.swift
index 66b1af7d..39491b40 100644
--- a/Package.swift
+++ b/Package.swift
@@ -1,4 +1,4 @@
-// swift-tools-version:5.3
+// swift-tools-version:5.6
 import PackageDescription
 
 let package = Package(
@@ -14,7 +14,6 @@ let package = Package(
         .library(name: "Shared", targets: ["Shared"]),
         .library(name: "Models", targets: ["Models"]),
         .library(name: "XXLogger", targets: ["XXLogger"]),
-        .library(name: "Database", targets: ["Database"]),
         .library(name: "Defaults", targets: ["Defaults"]),
         .library(name: "Bindings", targets: ["Bindings"]),
         .library(name: "Keychain", targets: ["Keychain"]),
@@ -53,95 +52,26 @@ let package = Package(
     ],
     dependencies: [
         .package(
-            name: "Quick",
-            url: "https://github.com/Quick/Quick",
-            from: "3.0.0"
+            url: "https://git.xx.network/elixxir/client-ios-db.git",
+            revision: "e1b3b1a8d1df6d259c99289e8d09e73fbfa9fe63"
         ),
-        .package(
-            name: "DifferenceKit",
-            url: "https://github.com/ra1028/DifferenceKit",
-            from: "1.2.0"
-        ),
-        .package(
-            name: "Nimble",
-            url: "https://github.com/Quick/Nimble",
-            from: "9.0.0"
-        ),
-        .package(
-            name: "FilesProvider",
-            url: "https://github.com/amosavian/FileProvider.git",
-            from: "0.26.0"
-        ),
-        .package(
-            name: "GRDB",
-            url: "https://github.com/groue/GRDB.swift",
-            from: "5.3.0"
-        ),
-        .package(
-            name: "GoogleSignIn",
-            url: "https://github.com/google/GoogleSignIn-iOS",
-            from: "6.1.0"
-        ),
-        .package(
-            name: "GoogleAPIClientForREST",
-            url: "https://github.com/google/google-api-objectivec-client-for-rest",
-            from: "1.6.0"
-        ),
-        .package(
-            name: "SnapKit",
-            url: "https://github.com/SnapKit/SnapKit",
-            from: "5.0.1"
-        ),
-        .package(
-            name: "Firebase",
-            url: "https://github.com/firebase/firebase-ios-sdk.git",
-            .upToNextMajor(from: "8.10.0")
-        ),
-        .package(
-            name: "SwiftProtobuf",
-            url: "https://github.com/apple/swift-protobuf",
-            from: "1.14.0"
-        ),
-        .package(
-            name: "SwiftyDropbox",
-            url: "https://github.com/dropbox/SwiftyDropbox.git",
-            from: "8.2.1"
-        ),
-        .package(
-            name: "KeychainAccess",
-            url: "https://github.com/kishikawakatsumi/KeychainAccess",
-            from: "4.2.1"
-        ),
-        .package(
-            name: "Retry",
-            url: "https://github.com/icanzilb/Retry.git",
-            from: "0.6.3"
-        ),
-        .package(
-            name: "ChatLayout",
-            url: "https://github.com/ekazaev/ChatLayout",
-            from: "1.1.14"
-        ),
-        .package(
-            name: "SwiftyBeaver",
-            url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git",
-            from: "1.9.5"
-        ),
-        .package(
-            name: "swift-composable-architecture",
-            url: "https://github.com/pointfreeco/swift-composable-architecture.git",
-            .upToNextMajor(from: "0.32.0")
-        ),
-        .package(
-            name: "ScrollViewController",
-            url: "https://github.com/darrarski/ScrollViewController",
-            from: "1.2.0"
-        ),
-        .package(
-            name: "combine-schedulers",
-            url: "https://github.com/pointfreeco/combine-schedulers",
-            from: "0.5.0"
-        )
+        .package(url: "https://github.com/Quick/Quick", from: "3.0.0"),
+        .package(url: "https://github.com/Quick/Nimble", from: "9.0.0"),
+        .package(url: "https://github.com/SnapKit/SnapKit", from: "5.0.1"),
+        .package(url: "https://github.com/icanzilb/Retry.git", from: "0.6.3"),
+        .package(url: "https://github.com/ekazaev/ChatLayout", from: "1.1.14"),
+        .package(url: "https://github.com/ra1028/DifferenceKit", from: "1.2.0"),
+        .package(url: "https://github.com/apple/swift-protobuf", from: "1.14.0"),
+        .package(url: "https://github.com/google/GoogleSignIn-iOS", from: "6.1.0"),
+        .package(url: "https://github.com/dropbox/SwiftyDropbox.git", from: "8.2.1"),
+        .package(url: "https://github.com/amosavian/FileProvider.git", from: "0.26.0"),
+        .package(url: "https://github.com/SwiftyBeaver/SwiftyBeaver.git", from: "1.9.5"),
+        .package(url: "https://github.com/darrarski/ScrollViewController", from: "1.2.0"),
+        .package(url: "https://github.com/pointfreeco/combine-schedulers", from: "0.5.0"),
+        .package(url: "https://github.com/kishikawakatsumi/KeychainAccess", from: "4.2.1"),
+        .package(url: "https://github.com/google/google-api-objectivec-client-for-rest", from: "1.6.0"),
+        .package(url: "https://github.com/firebase/firebase-ios-sdk.git", .upToNextMajor(from: "8.10.0")),
+        .package(url: "https://github.com/pointfreeco/swift-composable-architecture.git",.upToNextMajor(from: "0.32.0"))
     ],
     targets: [
         .target(
@@ -197,7 +127,6 @@ let package = Package(
                 name: "PushFeature",
                 dependencies: [
                     "Models",
-                    "Database",
                     "Defaults",
                     "Integration",
                     "DependencyInjection"
@@ -246,7 +175,7 @@ let package = Package(
                     ),
                     .product(
                         name: "SwiftProtobuf",
-                        package: "SwiftProtobuf"
+                        package: "swift-protobuf"
                     )
                 ]
             ),
@@ -277,7 +206,7 @@ let package = Package(
                     "CrashReporting",
                     .product(
                         name: "FirebaseCrashlytics",
-                        package: "Firebase"
+                        package: "firebase-ios-sdk"
                     )
                 ]
             ),
@@ -289,11 +218,11 @@ let package = Package(
                 dependencies: [
                     .product(
                         name: "GoogleSignIn",
-                        package: "GoogleSignIn"
+                        package: "GoogleSignIn-iOS"
                     ),
                     .product(
                         name: "GoogleAPIClientForREST_Drive",
-                        package: "GoogleAPIClientForREST"
+                        package: "google-api-objectivec-client-for-rest"
                     )
                 ],
                 resources: [.process("Resources")]
@@ -306,7 +235,7 @@ let package = Package(
                 dependencies: [
                     .product(
                         name: "FilesProvider",
-                        package: "FilesProvider"
+                        package: "FileProvider"
                     )
                 ]
             ),
@@ -386,40 +315,22 @@ let package = Package(
                 ]
             ),
 
-        // MARK: - Database
-
-            .target(
-                name: "Database",
-                dependencies: [
-                    "Models",
-                    "XXLogger",
-                    .product(
-                        name: "GRDB",
-                        package: "GRDB"
-                    ),
-                    .product(
-                        name: "DifferenceKit",
-                        package: "DifferenceKit"
-                    )
-                ]
-            ),
-
         // MARK: - Shared
 
             .target(
                 name: "Shared",
                 dependencies: [
                     .product(
-                        name: "DifferenceKit",
-                        package: "DifferenceKit"
+                        name: "SnapKit",
+                        package: "SnapKit"
                     ),
                     .product(
                         name: "ChatLayout",
                         package: "ChatLayout"
                     ),
                     .product(
-                        name: "SnapKit",
-                        package: "SnapKit"
+                        name: "DifferenceKit",
+                        package: "DifferenceKit"
                     )
                 ],
                 exclude: ["swiftgen.yml"],
@@ -431,10 +342,10 @@ let package = Package(
             .target(
                 name: "Integration",
                 dependencies: [
-                    "XXLogger",
                     "Shared",
-                    "Database",
                     "Bindings",
+                    "XXLogger",
+                    "Keychain",
                     "ToastFeature",
                     "BackupFeature",
                     "CrashReporting",
@@ -443,6 +354,10 @@ let package = Package(
                     .product(
                         name: "Retry",
                         package: "Retry"
+                    ),
+                    .product(
+                        name: "XXDatabase",
+                        package: "client-ios-db"
                     )
                 ],
                 resources: [.process("Resources")]
@@ -500,13 +415,13 @@ let package = Package(
                     "InputField",
                     "ChatFeature",
                     "Presentation",
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    ),
                     .product(
                         name: "CombineSchedulers",
                         package: "combine-schedulers"
+                    ),
+                    .product(
+                        name: "ScrollViewController",
+                        package: "ScrollViewController"
                     )
                 ]
             ),
@@ -528,14 +443,14 @@ let package = Package(
                     "DrawerFeature",
                     "ChatInputFeature",
                     "DependencyInjection",
-                    .product(
-                        name: "DifferenceKit",
-                        package: "DifferenceKit"
-                    ),
                     .product(
                         name: "ChatLayout",
                         package: "ChatLayout"
                     ),
+                    .product(
+                        name: "DifferenceKit",
+                        package: "DifferenceKit"
+                    ),
                     .product(
                         name: "ScrollViewController",
                         package: "ScrollViewController"
@@ -612,13 +527,13 @@ let package = Package(
                     "Presentation",
                     "DrawerFeature",
                     "DependencyInjection",
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    ),
                     .product(
                         name: "CombineSchedulers",
                         package: "combine-schedulers"
+                    ),
+                    .product(
+                        name: "ScrollViewController",
+                        package: "ScrollViewController"
                     )
                 ]
             ),
@@ -662,13 +577,13 @@ let package = Package(
                     "DrawerFeature",
                     "VersionChecking",
                     "DependencyInjection",
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    ),
                     .product(
                         name: "CombineSchedulers",
                         package: "combine-schedulers"
+                    ),
+                    .product(
+                        name: "ScrollViewController",
+                        package: "ScrollViewController"
                     )
                 ]
             ),
@@ -697,9 +612,10 @@ let package = Package(
                     "Models",
                     "InputField",
                     "Presentation",
-                    "GoogleDriveFeature",
                     "iCloudFeature",
+                    "DrawerFeature",
                     "DropboxFeature",
+                    "GoogleDriveFeature",
                     "DependencyInjection"
                 ]
             ),
@@ -760,13 +676,13 @@ let package = Package(
                     "Presentation",
                     "DrawerFeature",
                     "DependencyInjection",
-                    .product(
-                        name: "ScrollViewController",
-                        package: "ScrollViewController"
-                    ),
                     .product(
                         name: "CombineSchedulers",
                         package: "combine-schedulers"
+                    ),
+                    .product(
+                        name: "ScrollViewController",
+                        package: "ScrollViewController"
                     )
                 ]
             ),
diff --git a/Sources/Models/Attachment.swift b/Sources/Models/Attachment.swift
index 92eb3c09..5e4d0689 100644
--- a/Sources/Models/Attachment.swift
+++ b/Sources/Models/Attachment.swift
@@ -1,49 +1,49 @@
-import Foundation
-
-public struct Attachment: Codable, Equatable, Hashable {
-
-    public enum Extension: Int64, Codable, CaseIterable {
-        case image
-        case audio
-
-        public static func from(_ string: String) -> Extension? {
-            self.allCases.first{ $0.written == string }
-        }
-
-        public var written: String {
-            switch self {
-            case .image:
-                return "jpeg"
-            case .audio:
-                return "m4a"
-            }
-        }
-
-        public var writtenExtended: String {
-            switch self {
-            case .image:
-                return "image"
-            case .audio:
-                return "voice message"
-            }
-        }
-    }
-
-    public let data: Data?
-    public let name: String
-    public var transferId: Data?
-    public let _extension: Extension
-    public var progress: Float = 0.0
-
-    public init(
-        name: String,
-        data: Data? = nil,
-        transferId: Data? = nil,
-        _extension: Extension
-    ) {
-        self.data = data
-        self.name = name
-        self._extension = _extension
-        self.transferId = transferId
-    }
-}
+//import Foundation
+//
+//public struct Attachment: Codable, Equatable, Hashable {
+//
+//    public enum Extension: Int64, Codable, CaseIterable {
+//        case image
+//        case audio
+//
+//        public static func from(_ string: String) -> Extension? {
+//            self.allCases.first{ $0.written == string }
+//        }
+//
+//        public var written: String {
+//            switch self {
+//            case .image:
+//                return "jpeg"
+//            case .audio:
+//                return "m4a"
+//            }
+//        }
+//
+//        public var writtenExtended: String {
+//            switch self {
+//            case .image:
+//                return "image"
+//            case .audio:
+//                return "voice message"
+//            }
+//        }
+//    }
+//
+//    public let data: Data?
+//    public let name: String
+//    public var transferId: Data?
+//    public let _extension: Extension
+//    public var progress: Float = 0.0
+//
+//    public init(
+//        name: String,
+//        data: Data? = nil,
+//        transferId: Data? = nil,
+//        _extension: Extension
+//    ) {
+//        self.data = data
+//        self.name = name
+//        self._extension = _extension
+//        self.transferId = transferId
+//    }
+//}
diff --git a/Sources/Models/Contact.swift b/Sources/Models/Contact.swift
index 1959743e..754bf91d 100644
--- a/Sources/Models/Contact.swift
+++ b/Sources/Models/Contact.swift
@@ -1,123 +1,123 @@
-import UIKit
-import DifferenceKit
-
-public protocol IndexableItem {
-    var indexedOn: NSString { get }
-}
-
-public class IndexedListCollator<Item: IndexableItem> {
-    private final class CollationWrapper: NSObject {
-        let value: Any
-        @objc let indexedOn: NSString
-
-        init(value: Any, indexedOn: NSString) {
-            self.value = value
-            self.indexedOn = indexedOn
-        }
-
-        func unwrappedValue<UnwrappedType>() -> UnwrappedType {
-            return value as! UnwrappedType
-        }
-    }
-
-    public init() {}
-
-    public func sectioned(items: [Item]) -> (sections: [[Item]], collation: UILocalizedIndexedCollation) {
-        let collation = UILocalizedIndexedCollation.current()
-        let selector = #selector(getter: CollationWrapper.indexedOn)
-
-        let wrappedItems = items.map { item in
-            CollationWrapper(value: item, indexedOn: item.indexedOn)
-        }
-
-        let sortedObjects = collation.sortedArray(from: wrappedItems, collationStringSelector: selector) as! [CollationWrapper]
-
-        var sections = collation.sectionIndexTitles.map { _ in [Item]() }
-        sortedObjects.forEach { item in
-            let sectionNumber = collation.section(for: item, collationStringSelector: selector)
-            sections[sectionNumber].append(item.unwrappedValue())
-        }
-
-        return (sections: sections.filter { !$0.isEmpty }, collation: collation)
-    }
-}
-
-public struct Contact: Codable, Hashable, Equatable {
-    public enum Request {
-        case all
-        case failed
-        case friends
-        case received
-        case requested
-        case isRecent
-        case verificationInProgress
-        case withUserId(Data)
-        case withUserIds([Data])
-        case withUsername(String)
-    }
-
-    public enum Status: Int64, Codable {
-        case friend
-        case stranger
-        case verified
-        case verificationFailed
-        case verificationInProgress
-        case requested
-        case requesting
-        case requestFailed
-        case confirming
-        case confirmationFailed
-        case hidden
-    }
-
-    public var id: Int64?
-    public var photo: Data?
-    public let userId: Data
-    public var email: String?
-    public var phone: String?
-    public var status: Status
-    public var marshaled: Data
-    public var createdAt: Date
-    public let username: String
-    public var nickname: String?
-    public var isRecent: Bool
-
-    public init(
-        photo: Data?,
-        userId: Data,
-        email: String?,
-        phone: String?,
-        status: Status,
-        marshaled: Data,
-        username: String,
-        nickname: String?,
-        createdAt: Date,
-        isRecent: Bool
-    ) {
-        self.email = email
-        self.phone = phone
-        self.photo = photo
-        self.status = status
-        self.userId = userId
-        self.username = username
-        self.nickname = nickname
-        self.marshaled = marshaled
-        self.createdAt = createdAt
-        self.isRecent = isRecent
-    }
-
-    public var differenceIdentifier: Data { userId }
-
-    public static var databaseTableName: String { "contacts" }
-}
-
-extension Contact: Differentiable {}
-extension Contact: IndexableItem {
-    public var indexedOn: NSString {
-        guard let nickname = nickname else {
-            return "\(username.first!)" as NSString
-        }
-
-        return "\(nickname.first!)" as NSString
-    }
-}
+//import UIKit
+//import DifferenceKit
+//
+//public protocol IndexableItem {
+//    var indexedOn: NSString { get }
+//}
+//
+//public class IndexedListCollator<Item: IndexableItem> {
+//    private final class CollationWrapper: NSObject {
+//        let value: Any
+//        @objc let indexedOn: NSString
+//
+//        init(value: Any, indexedOn: NSString) {
+//            self.value = value
+//            self.indexedOn = indexedOn
+//        }
+//
+//        func unwrappedValue<UnwrappedType>() -> UnwrappedType {
+//            return value as! UnwrappedType
+//        }
+//    }
+//
+//    public init() {}
+//
+//    public func sectioned(items: [Item]) -> (sections: [[Item]], collation: UILocalizedIndexedCollation) {
+//        let collation = UILocalizedIndexedCollation.current()
+//        let selector = #selector(getter: CollationWrapper.indexedOn)
+//
+//        let wrappedItems = items.map { item in
+//            CollationWrapper(value: item, indexedOn: item.indexedOn)
+//        }
+//
+//        let sortedObjects = collation.sortedArray(from: wrappedItems, collationStringSelector: selector) as! [CollationWrapper]
+//
+//        var sections = collation.sectionIndexTitles.map { _ in [Item]() }
+//        sortedObjects.forEach { item in
+//            let sectionNumber = collation.section(for: item, collationStringSelector: selector)
+//            sections[sectionNumber].append(item.unwrappedValue())
+//        }
+//
+//        return (sections: sections.filter { !$0.isEmpty }, collation: collation)
+//    }
+//}
+//
+//public struct Contact: Codable, Hashable, Equatable {
+//    public enum Request {
+//        case all
+//        case failed
+//        case friends
+//        case received
+//        case requested
+//        case isRecent
+//        case verificationInProgress
+//        case withUserId(Data)
+//        case withUserIds([Data])
+//        case withUsername(String)
+//    }
+//
+//    public enum Status: Int64, Codable {
+//        case friend
+//        case stranger
+//        case verified
+//        case verificationFailed
+//        case verificationInProgress
+//        case requested
+//        case requesting
+//        case requestFailed
+//        case confirming
+//        case confirmationFailed
+//        case hidden
+//    }
+//
+//    public var id: Int64?
+//    public var photo: Data?
+//    public let userId: Data
+//    public var email: String?
+//    public var phone: String?
+//    public var status: Status
+//    public var marshaled: Data
+//    public var createdAt: Date
+//    public let username: String
+//    public var nickname: String?
+//    public var isRecent: Bool
+//
+//    public init(
+//        photo: Data?,
+//        userId: Data,
+//        email: String?,
+//        phone: String?,
+//        status: Status,
+//        marshaled: Data,
+//        username: String,
+//        nickname: String?,
+//        createdAt: Date,
+//        isRecent: Bool
+//    ) {
+//        self.email = email
+//        self.phone = phone
+//        self.photo = photo
+//        self.status = status
+//        self.userId = userId
+//        self.username = username
+//        self.nickname = nickname
+//        self.marshaled = marshaled
+//        self.createdAt = createdAt
+//        self.isRecent = isRecent
+//    }
+//
+//    public var differenceIdentifier: Data { userId }
+//
+//    public static var databaseTableName: String { "contacts" }
+//}
+//
+//extension Contact: Differentiable {}
+//extension Contact: IndexableItem {
+//    public var indexedOn: NSString {
+//        guard let nickname = nickname else {
+//            return "\(username.first!)" as NSString
+//        }
+//
+//        return "\(nickname.first!)" as NSString
+//    }
+//}
diff --git a/Sources/Models/FileTransfer.swift b/Sources/Models/FileTransfer.swift
index 79fac5d1..8eb06ba2 100644
--- a/Sources/Models/FileTransfer.swift
+++ b/Sources/Models/FileTransfer.swift
@@ -1,37 +1,37 @@
-import Foundation
-
-public struct FileTransfer {
-    public enum Request {
-        case withTID(Data)
-        case withContactId(Data)
-    }
-
-    public var tid: Data
-    public var id: Int64?
-    public var contact: Data
-    public var fileName: String
-    public var fileType: String
-    public var isIncoming: Bool
-
-    public static var databaseTableName: String { "transfers" }
-
-    public init(
-        id: Int64? = nil,
-        tid: Data,
-        contact: Data,
-        fileName: String,
-        fileType: String,
-        isIncoming: Bool
-    ) {
-        self.id = id
-        self.tid = tid
-        self.contact = contact
-        self.fileName = fileName
-        self.fileType = fileType
-        self.isIncoming = isIncoming
-    }
-}
-
-extension FileTransfer: Codable {}
-extension FileTransfer: Hashable {}
-extension FileTransfer: Equatable {}
+//import Foundation
+//
+//public struct FileTransfer {
+//    public enum Request {
+//        case withTID(Data)
+//        case withContactId(Data)
+//    }
+//
+//    public var tid: Data
+//    public var id: Int64?
+//    public var contact: Data
+//    public var fileName: String
+//    public var fileType: String
+//    public var isIncoming: Bool
+//
+//    public static var databaseTableName: String { "transfers" }
+//
+//    public init(
+//        id: Int64? = nil,
+//        tid: Data,
+//        contact: Data,
+//        fileName: String,
+//        fileType: String,
+//        isIncoming: Bool
+//    ) {
+//        self.id = id
+//        self.tid = tid
+//        self.contact = contact
+//        self.fileName = fileName
+//        self.fileType = fileType
+//        self.isIncoming = isIncoming
+//    }
+//}
+//
+//extension FileTransfer: Codable {}
+//extension FileTransfer: Hashable {}
+//extension FileTransfer: Equatable {}
diff --git a/Sources/Models/Group.swift b/Sources/Models/Group.swift
index feda834c..20634688 100644
--- a/Sources/Models/Group.swift
+++ b/Sources/Models/Group.swift
@@ -1,42 +1,42 @@
-import Foundation
-import KeychainAccess
-
-public struct Group: Codable, Equatable, Hashable {
-    public enum Status: Int64, Codable {
-        case hidden
-        case pending
-        case deleting
-        case participating
-    }
-
-    public enum Request {
-        case pending
-        case accepted
-        case withGroupId(Data)
-    }
-
-    public var id: Int64?
-    public var name: String
-    public var leader: Data
-    public var groupId: Data
-    public var status: Status
-    public var serialize: Data
-    public var createdAt: Date
-    public static var databaseTableName: String { "groups" }
-
-    public init(
-        leader: Data,
-        name: String,
-        groupId: Data,
-        status: Status,
-        createdAt: Date,
-        serialize: Data
-    ) {
-        self.name = name
-        self.leader = leader
-        self.status = status
-        self.groupId = groupId
-        self.createdAt = createdAt
-        self.serialize = serialize
-    }
-}
+//import Foundation
+//import KeychainAccess
+//
+//public struct Group: Codable, Equatable, Hashable {
+//    public enum Status: Int64, Codable {
+//        case hidden
+//        case pending
+//        case deleting
+//        case participating
+//    }
+//
+//    public enum Request {
+//        case pending
+//        case accepted
+//        case withGroupId(Data)
+//    }
+//
+//    public var id: Int64?
+//    public var name: String
+//    public var leader: Data
+//    public var groupId: Data
+//    public var status: Status
+//    public var serialize: Data
+//    public var createdAt: Date
+//    public static var databaseTableName: String { "groups" }
+//
+//    public init(
+//        leader: Data,
+//        name: String,
+//        groupId: Data,
+//        status: Status,
+//        createdAt: Date,
+//        serialize: Data
+//    ) {
+//        self.name = name
+//        self.leader = leader
+//        self.status = status
+//        self.groupId = groupId
+//        self.createdAt = createdAt
+//        self.serialize = serialize
+//    }
+//}
diff --git a/Sources/Models/GroupChatInfo.swift b/Sources/Models/GroupChatInfo.swift
index 9b39ff6d..e2d56675 100644
--- a/Sources/Models/GroupChatInfo.swift
+++ b/Sources/Models/GroupChatInfo.swift
@@ -1,22 +1,22 @@
-import Foundation
-
-public struct GroupChatInfo: Codable, Equatable, Hashable {
-    public enum Request {
-        case accepted
-        case fromGroup(Data)
-    }
-
-    public var group: Group
-    public var members: [GroupMember]
-    public var lastMessage: GroupMessage?
-
-    public init(
-        group: Group,
-        members: [GroupMember],
-        lastMessage: GroupMessage? = nil
-    ) {
-        self.group = group
-        self.members = members
-        self.lastMessage = lastMessage
-    }
-}
+//import Foundation
+//
+//public struct GroupChatInfo: Codable, Equatable, Hashable {
+//    public enum Request {
+//        case accepted
+//        case fromGroup(Data)
+//    }
+//
+//    public var group: Group
+//    public var members: [GroupMember]
+//    public var lastMessage: GroupMessage?
+//
+//    public init(
+//        group: Group,
+//        members: [GroupMember],
+//        lastMessage: GroupMessage? = nil
+//    ) {
+//        self.group = group
+//        self.members = members
+//        self.lastMessage = lastMessage
+//    }
+//}
diff --git a/Sources/Models/GroupMember.swift b/Sources/Models/GroupMember.swift
index 25c619f3..c0f7123f 100644
--- a/Sources/Models/GroupMember.swift
+++ b/Sources/Models/GroupMember.swift
@@ -1,42 +1,42 @@
-import Foundation
-
-public struct GroupMember {
-    public enum Request {
-        case all
-        case strangers
-        case fromGroup(Data)
-        case withUserId(Data)
-    }
-
-    public enum Status: Int64, Codable {
-        case usernameSet
-        case pendingUsername
-    }
-
-    public var id: Int64?
-    public var userId: Data
-    public var groupId: Data
-    public var status: Status
-    public var username: String
-    public var photo: Data?
-
-    public init(
-        id: Int64? = nil,
-        userId: Data,
-        groupId: Data,
-        status: Status,
-        username: String,
-        photo: Data? = nil
-    ) {
-        self.id = id
-        self.userId = userId
-        self.groupId = groupId
-        self.username = username
-        self.status = status
-        self.photo = photo
-    }
-}
-
-extension GroupMember: Codable {}
-extension GroupMember: Hashable {}
-extension GroupMember: Equatable {}
+//import Foundation
+//
+//public struct GroupMember {
+//    public enum Request {
+//        case all
+//        case strangers
+//        case fromGroup(Data)
+//        case withUserId(Data)
+//    }
+//
+//    public enum Status: Int64, Codable {
+//        case usernameSet
+//        case pendingUsername
+//    }
+//
+//    public var id: Int64?
+//    public var userId: Data
+//    public var groupId: Data
+//    public var status: Status
+//    public var username: String
+//    public var photo: Data?
+//
+//    public init(
+//        id: Int64? = nil,
+//        userId: Data,
+//        groupId: Data,
+//        status: Status,
+//        username: String,
+//        photo: Data? = nil
+//    ) {
+//        self.id = id
+//        self.userId = userId
+//        self.groupId = groupId
+//        self.username = username
+//        self.status = status
+//        self.photo = photo
+//    }
+//}
+//
+//extension GroupMember: Codable {}
+//extension GroupMember: Hashable {}
+//extension GroupMember: Equatable {}
diff --git a/Sources/Models/GroupMessage.swift b/Sources/Models/GroupMessage.swift
index ffdb6df4..771d4ceb 100644
--- a/Sources/Models/GroupMessage.swift
+++ b/Sources/Models/GroupMessage.swift
@@ -1,56 +1,56 @@
-import Foundation
-
-public struct GroupMessage: Codable, Equatable, Hashable {
-    public enum Request {
-        case withUniqueId(Data)
-        case id(Int64)
-        case sending
-        case fromGroup(Data)
-        case unreadsFromGroup(Data)
-    }
-
-    public static var databaseTableName: String { "groupMessages" }
-
-    public enum Status: Int64, Codable {
-        case sent
-        case read
-        case failed
-        case sending
-        case received
-    }
-
-    public var id: Int64?
-    public var uniqueId: Data?
-    public var groupId: Data
-    public var sender: Data
-    public var roundId: Int64?
-    public var payload: Payload
-    public var status: Status
-    public var roundURL: String?
-    public var unread: Bool
-    public var timestamp: Int
-
-    public init(
-        id: Int64? = nil,
-        sender: Data,
-        groupId: Data,
-        payload: Payload,
-        unread: Bool,
-        timestamp: Int = 0,
-        uniqueId: Data?,
-        status: Status,
-        roundId: Int64? = nil,
-        roundURL: String? = nil
-    ) {
-        self.id = id
-        self.sender = sender
-        self.groupId = groupId
-        self.payload = payload
-        self.unread = unread
-        self.timestamp = timestamp
-        self.uniqueId = uniqueId
-        self.status = status
-        self.roundId = roundId
-        self.roundURL = roundURL
-    }
-}
+//import Foundation
+//
+//public struct GroupMessage: Codable, Equatable, Hashable {
+//    public enum Request {
+//        case withUniqueId(Data)
+//        case id(Int64)
+//        case sending
+//        case fromGroup(Data)
+//        case unreadsFromGroup(Data)
+//    }
+//
+//    public static var databaseTableName: String { "groupMessages" }
+//
+//    public enum Status: Int64, Codable {
+//        case sent
+//        case read
+//        case failed
+//        case sending
+//        case received
+//    }
+//
+//    public var id: Int64?
+//    public var uniqueId: Data?
+//    public var groupId: Data
+//    public var sender: Data
+//    public var roundId: Int64?
+//    public var payload: Payload
+//    public var status: Status
+//    public var roundURL: String?
+//    public var unread: Bool
+//    public var timestamp: Int
+//
+//    public init(
+//        id: Int64? = nil,
+//        sender: Data,
+//        groupId: Data,
+//        payload: Payload,
+//        unread: Bool,
+//        timestamp: Int = 0,
+//        uniqueId: Data?,
+//        status: Status,
+//        roundId: Int64? = nil,
+//        roundURL: String? = nil
+//    ) {
+//        self.id = id
+//        self.sender = sender
+//        self.groupId = groupId
+//        self.payload = payload
+//        self.unread = unread
+//        self.timestamp = timestamp
+//        self.uniqueId = uniqueId
+//        self.status = status
+//        self.roundId = roundId
+//        self.roundURL = roundURL
+//    }
+//}
diff --git a/Sources/Models/Message.swift b/Sources/Models/Message.swift
index fec18587..77ae89db 100644
--- a/Sources/Models/Message.swift
+++ b/Sources/Models/Message.swift
@@ -1,70 +1,70 @@
-import Foundation
-import DifferenceKit
-
-public struct Message: Codable, Equatable, Hashable {
-    public enum Request {
-        case sending
-        case withUniqueId(Data)
-        case withId(Int64)
-        case sendingAttachment
-        case withContact(Data)
-        case unreadsFromContactId(Data)
-        case latestOnesFromContactIds([Data])
-    }
-
-    public enum Status: Int64, Codable {
-        case read
-        case sent
-        case sending
-        case sendingAttachment
-        case receivingAttachment
-        case received
-        case failedToSend
-        case timedOut
-    }
-
-    public var id: Int64?
-    public var unread: Bool
-    public let sender: Data
-    public var roundURL: String?
-    public var report: Data?
-    public var status: Status
-    public let receiver: Data
-    public var timestamp: Int
-    public var uniqueId: Data?
-    public var payload: Payload
-    public static var databaseTableName: String { "messages" }
-
-    public init (
-        sender: Data,
-        receiver: Data,
-        payload: Payload,
-        unread: Bool,
-        timestamp: Int,
-        uniqueId: Data?,
-        status: Status,
-        roundURL: String? = nil
-    ) {
-        self.sender = sender
-        self.unread = unread
-        self.status = status
-        self.payload = payload
-        self.receiver = receiver
-        self.uniqueId = uniqueId
-        self.timestamp = timestamp
-        self.roundURL = roundURL
-    }
-}
-
-public extension Message.Status {
-    var canReply: Bool {
-        switch self {
-        case .sent, .received, .read:
-            return true
-        default:
-            return false
-        }
-    }
-}
-
-extension Message: Differentiable {}
+//import Foundation
+//import DifferenceKit
+//
+//public struct Message: Codable, Equatable, Hashable {
+//    public enum Request {
+//        case sending
+//        case withUniqueId(Data)
+//        case withId(Int64)
+//        case sendingAttachment
+//        case withContact(Data)
+//        case unreadsFromContactId(Data)
+//        case latestOnesFromContactIds([Data])
+//    }
+//
+//    public enum Status: Int64, Codable {
+//        case read
+//        case sent
+//        case sending
+//        case sendingAttachment
+//        case receivingAttachment
+//        case received
+//        case failedToSend
+//        case timedOut
+//    }
+//
+//    public var id: Int64?
+//    public var unread: Bool
+//    public let sender: Data
+//    public var roundURL: String?
+//    public var report: Data?
+//    public var status: Status
+//    public let receiver: Data
+//    public var timestamp: Int
+//    public var uniqueId: Data?
+//    public var payload: Payload
+//    public static var databaseTableName: String { "messages" }
+//
+//    public init (
+//        sender: Data,
+//        receiver: Data,
+//        payload: Payload,
+//        unread: Bool,
+//        timestamp: Int,
+//        uniqueId: Data?,
+//        status: Status,
+//        roundURL: String? = nil
+//    ) {
+//        self.sender = sender
+//        self.unread = unread
+//        self.status = status
+//        self.payload = payload
+//        self.receiver = receiver
+//        self.uniqueId = uniqueId
+//        self.timestamp = timestamp
+//        self.roundURL = roundURL
+//    }
+//}
+//
+//public extension Message.Status {
+//    var canReply: Bool {
+//        switch self {
+//        case .sent, .received, .read:
+//            return true
+//        default:
+//            return false
+//        }
+//    }
+//}
+//
+//extension Message: Differentiable {}
diff --git a/Sources/Models/Payload.swift b/Sources/Models/Payload.swift
index 4fda3b78..fac93d27 100644
--- a/Sources/Models/Payload.swift
+++ b/Sources/Models/Payload.swift
@@ -1,39 +1,39 @@
-import Foundation
-
-public struct Payload: Codable, Equatable, Hashable {
-    public var text: String
-    public var reply: Reply?
-    public var attachment: Attachment?
-
-    public init(text: String, reply: Reply?, attachment: Attachment?) {
-        self.text = text
-        self.reply = reply
-        self.attachment = attachment
-    }
-
-    public init(with marshaled: Data) throws {
-        let proto = try CMIXText(serializedData: marshaled)
-
-        var reply: Reply?
-
-        if proto.hasReply {
-            reply = Reply(
-                messageId: proto.reply.messageID,
-                senderId: proto.reply.senderID
-            )
-        }
-
-        self.init(text: proto.text, reply: reply, attachment: nil)
-    }
-
-    public func asData() -> Data {
-        var protoModel = CMIXText()
-        protoModel.text = text
-
-        if let reply = reply {
-            protoModel.reply = reply.asTextReply()
-        }
-
-        return try! protoModel.serializedData()
-    }
-}
+//import Foundation
+//
+//public struct Payload: Codable, Equatable, Hashable {
+//    public var text: String
+//    public var reply: Reply?
+//    public var attachment: Attachment?
+//
+//    public init(text: String, reply: Reply?, attachment: Attachment?) {
+//        self.text = text
+//        self.reply = reply
+//        self.attachment = attachment
+//    }
+//
+//    public init(with marshaled: Data) throws {
+//        let proto = try CMIXText(serializedData: marshaled)
+//
+//        var reply: Reply?
+//
+//        if proto.hasReply {
+//            reply = Reply(
+//                messageId: proto.reply.messageID,
+//                senderId: proto.reply.senderID
+//            )
+//        }
+//
+//        self.init(text: proto.text, reply: reply, attachment: nil)
+//    }
+//
+//    public func asData() -> Data {
+//        var protoModel = CMIXText()
+//        protoModel.text = text
+//
+//        if let reply = reply {
+//            protoModel.reply = reply.asTextReply()
+//        }
+//
+//        return try! protoModel.serializedData()
+//    }
+//}
diff --git a/Sources/Models/Reply.swift b/Sources/Models/Reply.swift
index 22fcf55a..6b71cad6 100644
--- a/Sources/Models/Reply.swift
+++ b/Sources/Models/Reply.swift
@@ -1,19 +1,19 @@
-import Foundation
-
-public struct Reply: Codable, Equatable, Hashable {
-    public let messageId: Data
-    public let senderId: Data
-
-    public init(messageId: Data, senderId: Data) {
-        self.messageId = messageId
-        self.senderId = senderId
-    }
-
-    func asTextReply() -> TextReply {
-        var reply = TextReply()
-        reply.messageID = messageId
-        reply.senderID = senderId
-
-        return reply
-    }
-}
+//import Foundation
+//
+//public struct Reply: Codable, Equatable, Hashable {
+//    public let messageId: Data
+//    public let senderId: Data
+//
+//    public init(messageId: Data, senderId: Data) {
+//        self.messageId = messageId
+//        self.senderId = senderId
+//    }
+//
+//    func asTextReply() -> TextReply {
+//        var reply = TextReply()
+//        reply.messageID = messageId
+//        reply.senderID = senderId
+//
+//        return reply
+//    }
+//}
diff --git a/Sources/Models/SingleChatInfo.swift b/Sources/Models/SingleChatInfo.swift
index 21c7f7d2..79fc4ba0 100644
--- a/Sources/Models/SingleChatInfo.swift
+++ b/Sources/Models/SingleChatInfo.swift
@@ -1,18 +1,18 @@
-import Foundation
-
-public struct SingleChatInfo: Codable, Equatable, Hashable {
-    public enum Request {
-        case all
-    }
-
-    public var contact: Contact
-    public var lastMessage: Message?
-
-    public init(
-        contact: Contact,
-        lastMessage: Message?
-    ) {
-        self.contact = contact
-        self.lastMessage = lastMessage
-    }
-}
+//import Foundation
+//
+//public struct SingleChatInfo: Codable, Equatable, Hashable {
+//    public enum Request {
+//        case all
+//    }
+//
+//    public var contact: Contact
+//    public var lastMessage: Message?
+//
+//    public init(
+//        contact: Contact,
+//        lastMessage: Message?
+//    ) {
+//        self.contact = contact
+//        self.lastMessage = lastMessage
+//    }
+//}
-- 
GitLab