diff --git a/Package.swift b/Package.swift index f654545cea2f13c6c8e6ce89cb9c9a5e942e5ff2..d07ef4c10f5de19de5e1382aa19049f473bf19cd 100644 --- a/Package.swift +++ b/Package.swift @@ -456,6 +456,7 @@ let package = Package( .product(name: "DifferenceKit", package: "DifferenceKit"), .product(name: "ScrollViewController", package: "ScrollViewController"), .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"), + .product(name: "XXMessengerClient", package: "elixxir-dapps-sdk-swift"), ] ), .testTarget( diff --git a/Sources/App/DependencyRegistrator.swift b/Sources/App/DependencyRegistrator.swift index 7cc24828d71c4e61893d51610986662b8366cf07..f1d31d5d61f2b5569afde8542631ed9128d252f0 100644 --- a/Sources/App/DependencyRegistrator.swift +++ b/Sources/App/DependencyRegistrator.swift @@ -284,7 +284,8 @@ extension PasswordStorage { ) return PasswordStorage( save: { password in keychain[data: "password"] = password}, - load: { try keychain[data: "password"] ?? { throw MissingPasswordError() }() } + load: { try keychain[data: "password"] ?? { throw MissingPasswordError() }() }, + remove: { try keychain.remove("password") } ) }() } diff --git a/Sources/Keychain/KeychainHandler.swift b/Sources/Keychain/KeychainHandler.swift index 6ac0d645d6def33360ee5ed0d0ab1e973a0487fc..26df90bdb133dffef5dae41cc126be53fe242606 100644 --- a/Sources/Keychain/KeychainHandler.swift +++ b/Sources/Keychain/KeychainHandler.swift @@ -10,6 +10,7 @@ public enum KeychainSFTP: String { public protocol KeychainHandling { func clear() throws func getPassword() throws -> Data? + func remove(_ key: String) throws func store(password pwd: Data) throws func get(key: KeychainSFTP) throws -> String? @@ -24,6 +25,10 @@ public struct KeychainHandler: KeychainHandling { self.keychain = Keychain(service: "XXM") } + public func remove(_ key: String) throws { + try keychain.remove(key) + } + public func clear() throws { try keychain.removeAll() } diff --git a/Sources/Keychain/MockKeychainHandler.swift b/Sources/Keychain/MockKeychainHandler.swift index 39d4a33ddb1e0e6d8a75d8b5a1ea980d8fb189bf..ea2af5d6467860b5c13d79f01dbdf223862115e1 100644 --- a/Sources/Keychain/MockKeychainHandler.swift +++ b/Sources/Keychain/MockKeychainHandler.swift @@ -4,6 +4,7 @@ public struct MockKeychainHandler: KeychainHandling { public init() {} public func clear() throws {} + public func remove(_ key: String) throws {} public func store(password pwd: Data) throws {} public func getPassword() throws -> Data? { Data() } public func get(key: KeychainSFTP) throws -> String? { nil } diff --git a/Sources/LaunchFeature/LaunchViewModel.swift b/Sources/LaunchFeature/LaunchViewModel.swift index 12b722f466eecc8c5310fc3f943679621ff45a1d..8bf83a2f83dcf3796dcb75aa7fa2747286918906 100644 --- a/Sources/LaunchFeature/LaunchViewModel.swift +++ b/Sources/LaunchFeature/LaunchViewModel.swift @@ -4,6 +4,7 @@ import Models import Combine import Defaults import XXModels +import XXLogger import Keychain import Foundation import Permissions @@ -106,6 +107,10 @@ final class LaunchViewModel { _ = try SetLogLevel.live(.trace) + RegisterLogWriter.live(.init(handle: { + XXLogger.live().debug($0) + })) + guard let certPath = Bundle.module.path(forResource: "cmix.rip", ofType: "crt"), let contactFilePath = Bundle.module.path(forResource: "udContact", ofType: "bin") else { fatalError("Couldn't retrieve alternative UD credentials") @@ -175,6 +180,11 @@ final class LaunchViewModel { roundURL: "https://www.google.com.br", fileTransferId: nil )) + + if var contact = try? self.database.fetchContacts(.init(id: [$0.sender])).first { + contact.isRecent = false + try! self.database.saveContact(contact) + } }) ) @@ -221,7 +231,8 @@ final class LaunchViewModel { } } } catch { - print(">>> Initialization couldn't be completed: \(error.localizedDescription)") + let xxError = CreateUserFriendlyErrorMessage.live(error.localizedDescription) + hudSubject.send(.error(.init(content: xxError))) } } diff --git a/Sources/LaunchFeature/Resources/udContact.bin b/Sources/LaunchFeature/Resources/udContact.bin index eddc5d47220ef6ad9010c5bb0f9d53213bd87736..b2611d4124e7d083ad99cf37eba3810cc6d8926c 100644 --- a/Sources/LaunchFeature/Resources/udContact.bin +++ b/Sources/LaunchFeature/Resources/udContact.bin @@ -1 +1 @@ -<xxc(2)TMJw0XHBSzVPUAo/ZsAuD5DiOF1RH8uxZxUHW2KG9PYDkAZiB9kZo+Dl3a+leHJP1aP7KQtifEOGqQAxsBnOtd2nIe3/jw//LDqs8mZcL8wsMydDoFwycEZQIHg85L17q6u3pRMXcSfvFLBuL6H2HxP+U3Sox9YTgaPNK191opr14t03jfM7gaBcdbk9PE/hwUeotu3eTavqy4lFNIa917wZCDf+n9aGz9jB2q/axf0x+h0h1uVQD6xaAJD5gqyvCmECU/iCaYCbPUh+zFfSEymujIFWscZAJL6ocPn9DCYw80mbKpm0BDQRBm+EVqo4KVMsLqbx0hJJ8Vh5a8c9f+aiBXjlwnZJ2Z8DzxbsVg7VzJc5sn5Dl0ajrkzBdZBWbgOJEgN7nIdmb3gW7poVUR1JtRIctW3wS+7/qHmLZC1SQ+x3O+eEFmb5HrulsvsUkIkFKRPQguwql9HLDA00zqg5tuDzy5yqyP//xZY4SelSTMDO/pkOMP921LaXsRzBWMGCRWa/uzaDhIgnXVs2cyxM1K5jLwQml44QWAxxTGBX/EhYpMbHLAn4+QAAAgA7Nv4tnMt8oC0Ffog/appCEA==xxc> +<xxc(2)7mbKFLE201WzH4SGxAOpHjjehwztIV+KGifi5L/PYPcDkAZiB9kZo+Dl3Vc7dD2SdZCFMOJVgwqGzfYRDkjc8RGEllBqNxq2sRRX09iQVef0kJQUgJCHNCOcvm6Ki0JJwvjLceyFh36iwK8oLbhLgqEZY86UScdACTyBCzBIab3ob5mBthYc3mheV88yq5PGF2DQ+dEvueUm+QhOSfwzppAJA/rpW9Wq9xzYcQzaqc3ztAGYfm2BBAHS7HVmkCbvZ/K07Xrl4EBPGHJYq12tWAN/C3mcbbBYUOQXyEzbSl/mO7sL3ORr0B4FMuqCi8EdlD6RO52pVhY+Cg6roRH1t5Ng1JxPt8Mv1yyjbifPhZ5fLKwxBz8UiFORfk0/jnhwgm25LRHqtNRRUlYXLvhv0HhqyYTUt17WNtCLATSVbqLrFGdy2EGadn8mP+kQNHp93f27d/uHgBNNe7LpuYCJMdWpoG6bOqmHEftxt0/MIQA8fTtTm3jJzv+7/QjZJDvQIv0SNdp8HFogpuwde+GuS4BcY7v5xz+ArGWcRR63ct2z83MqQEn9ODr1/gAAAgA7szRpDDQIdFUQo9mkWg8xBA==xxc> \ No newline at end of file diff --git a/Sources/SettingsFeature/ViewModels/AccountDeleteViewModel.swift b/Sources/SettingsFeature/ViewModels/AccountDeleteViewModel.swift index 94869e07e57ac1b060335dca964c43b722fe5e12..851576795c1ad10bfea9980499591eb2613d5290 100644 --- a/Sources/SettingsFeature/ViewModels/AccountDeleteViewModel.swift +++ b/Sources/SettingsFeature/ViewModels/AccountDeleteViewModel.swift @@ -8,10 +8,12 @@ import Foundation import XXMessengerClient import DependencyInjection import Retry +import XXModels final class AccountDeleteViewModel { @Dependency var messenger: Messenger @Dependency var keychain: KeychainHandling + @Dependency var database: Database @KeyObject(.username, defaultValue: nil) var username: String? @@ -35,10 +37,20 @@ final class AccountDeleteViewModel { guard let self = self else { return } do { + print(">>> try self.cleanUD()") try self.cleanUD() - try self.stopNetwork() + + print(">>> try self.messenger.destroy()") try self.messenger.destroy() + + print(">>> try self.keychain.clear()") try self.keychain.clear() + + print(">>> try database.drop()") + try self.database.drop() + + print(">>> try self.deleteDatabase()") + try self.deleteDatabase() UserDefaults.resetStandardUserDefaults() @@ -69,22 +81,6 @@ final class AccountDeleteViewModel { try messenger.ud.get()!.permanentDeleteAccount(username: fact) } - private func stopNetwork() throws { - let cMix = messenger.cMix.get()! - - print(">>> Stopping network follower...") - try cMix.stopNetworkFollower() - - retry(max: 10, retryStrategy: .delay(seconds: 2)) { - if cMix.networkFollowerStatus() != .stopped { - print(">>> Network still hasn't stopped. Its \(cMix.networkFollowerStatus())") - throw NSError.create("Gave up on stopping the network.") - } - - print(">>> Network has stopped") - } - } - private func deleteDatabase() throws { print(">>> Deleting database...") diff --git a/client-ios.xcworkspace/xcshareddata/swiftpm/Package.resolved b/client-ios.xcworkspace/xcshareddata/swiftpm/Package.resolved index cdfe1cbf5ce0aa3ed708268769239f3b4df26399..50525d0f451211b9644f60f113a59b006a55666c 100644 --- a/client-ios.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/client-ios.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -105,7 +105,7 @@ "location" : "https://git.xx.network/elixxir/elixxir-dapps-sdk-swift", "state" : { "branch" : "development", - "revision" : "8e3717558823ea713fd6b516cc2fcbef01d003ed" + "revision" : "15a7ab035a7c0b9031cf0fa977563b3a1a254647" } }, { @@ -319,8 +319,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections", "state" : { - "revision" : "48254824bb4248676bf7ce56014ff57b142b77eb", - "version" : "1.0.2" + "revision" : "f504716c27d2e5d4144fa4794b12129301d17729", + "version" : "1.0.3" } }, {