From 12d752e2c69e146d23046eea6104c605ce2ea894 Mon Sep 17 00:00:00 2001 From: Bruno Muniz Azevedo Filho <bruno@elixxir.io> Date: Wed, 24 Aug 2022 03:15:21 -0300 Subject: [PATCH] Fix compilation issues --- Package.swift | 2 + Sources/App/DependencyRegistrator.swift | 4 +- .../Controllers/GroupChatController.swift | 5 +- .../ViewModels/GroupChatViewModel.swift | 6 +- .../ViewModels/SingleChatViewModel.swift | 5 +- .../ViewModel/ChatListViewModel.swift | 96 +++++++++---------- Sources/LaunchFeature/LaunchCoordinator.swift | 6 +- Sources/LaunchFeature/LaunchViewModel.swift | 95 +++++++++--------- Sources/LaunchFeature/Resources/udContact.bin | 2 +- .../OnboardingUsernameViewModel.swift | 20 ++-- .../ViewModels/RestoreViewModel.swift | 33 ++++--- .../ViewModels/SearchLeftViewModel.swift | 25 ++--- .../TermsConditionsController.swift | 15 +-- Sources/TermsFeature/TermsCoordinator.swift | 8 +- 14 files changed, 167 insertions(+), 155 deletions(-) diff --git a/Package.swift b/Package.swift index b74da346..c4e214a9 100644 --- a/Package.swift +++ b/Package.swift @@ -223,6 +223,7 @@ let package = Package( dependencies: [ .target(name: "Models"), .target(name: "Defaults"), + .target(name: "ReportingFeature"), .target(name: "DependencyInjection"), .product(name: "XXDatabase", package: "client-ios-db"), ] @@ -625,6 +626,7 @@ let package = Package( .target(name: "Defaults"), .target(name: "Presentation"), .target(name: "DrawerFeature"), + .target(name: "ReportingFeature"), .target(name: "DependencyInjection"), ] ), diff --git a/Sources/App/DependencyRegistrator.swift b/Sources/App/DependencyRegistrator.swift index 026bfd56..7cc24828 100644 --- a/Sources/App/DependencyRegistrator.swift +++ b/Sources/App/DependencyRegistrator.swift @@ -129,14 +129,14 @@ struct DependencyRegistrator { container.register( TermsCoordinator.live( - usernameFactory: OnboardingUsernameController.init(_:), + usernameFactory: OnboardingUsernameController.init, chatListFactory: ChatListController.init ) ) container.register( LaunchCoordinator( - termsFactory: TermsConditionsController.init(_:), + termsFactory: TermsConditionsController.init, searchFactory: SearchContainerController.init, requestsFactory: RequestsContainerController.init, chatListFactory: ChatListController.init, diff --git a/Sources/ChatFeature/Controllers/GroupChatController.swift b/Sources/ChatFeature/Controllers/GroupChatController.swift index 5cae4a06..557d8f3f 100644 --- a/Sources/ChatFeature/Controllers/GroupChatController.swift +++ b/Sources/ChatFeature/Controllers/GroupChatController.swift @@ -7,7 +7,6 @@ import Combine import XXModels import Voxophone import ChatLayout -import Integration import DrawerFeature import DifferenceKit import ReportingFeature @@ -23,7 +22,7 @@ typealias OutgoingFailedGroupReplyCell = CollectionCell<FlexibleSpace, ReplyStac public final class GroupChatController: UIViewController { @Dependency private var hud: HUD - @Dependency private var session: SessionType + @Dependency private var database: Database @Dependency private var coordinator: ChatCoordinating @Dependency private var reportingStatus: ReportingStatus @Dependency private var makeReportDrawer: MakeReportDrawer @@ -360,7 +359,7 @@ extension GroupChatController: UICollectionViewDataSource { var isSenderBanned = false - if let sender = try? session.dbManager.fetchContacts(.init(id: [item.senderId])).first { + if let sender = try? database.fetchContacts(.init(id: [item.senderId])).first { isSenderBanned = sender.isBanned } diff --git a/Sources/ChatFeature/ViewModels/GroupChatViewModel.swift b/Sources/ChatFeature/ViewModels/GroupChatViewModel.swift index 15754255..4e27cad3 100644 --- a/Sources/ChatFeature/ViewModels/GroupChatViewModel.swift +++ b/Sources/ChatFeature/ViewModels/GroupChatViewModel.swift @@ -93,7 +93,7 @@ final class GroupChatViewModel { } func didRequestReport(_ message: Message) { - if let contact = try? session.dbManager.fetchContacts(.init(id: [message.senderId])).first { + if let contact = try? database.fetchContacts(.init(id: [message.senderId])).first { reportPopupSubject.send(contact) } } @@ -253,7 +253,7 @@ final class GroupChatViewModel { username: contact.username! ), recipient: .init( - userId: session.myId.base64EncodedString(), + userId: myId.base64EncodedString(), username: username! ), type: .group, @@ -288,7 +288,7 @@ final class GroupChatViewModel { private func blockContact(_ contact: Contact) { var contact = contact contact.isBlocked = true - _ = try? session.dbManager.saveContact(contact) + _ = try? database.saveContact(contact) } private func presentReportConfirmation(contact: Contact) { diff --git a/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift b/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift index 3593e3da..5014a493 100644 --- a/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift +++ b/Sources/ChatFeature/ViewModels/SingleChatViewModel.swift @@ -6,6 +6,7 @@ import Combine import XXLogger import XXModels import XXClient +import Defaults import Foundation import Permissions import ToastFeature @@ -424,7 +425,7 @@ final class SingleChatViewModel: NSObject { username: contact.username! ), recipient: .init( - userId: session.myId.base64EncodedString(), + userId: myId.base64EncodedString(), username: username! ), type: .dm, @@ -454,7 +455,7 @@ final class SingleChatViewModel: NSObject { private func blockContact() { var contact = contact contact.isBlocked = true - _ = try? session.dbManager.saveContact(contact) + _ = try? database.saveContact(contact) } private func presentReportConfirmation() { diff --git a/Sources/ChatListFeature/ViewModel/ChatListViewModel.swift b/Sources/ChatListFeature/ViewModel/ChatListViewModel.swift index ab527d84..e578d5f7 100644 --- a/Sources/ChatListFeature/ViewModel/ChatListViewModel.swift +++ b/Sources/ChatListFeature/ViewModel/ChatListViewModel.swift @@ -57,12 +57,12 @@ final class ChatListViewModel { return database.fetchContactsPublisher(query) .assertNoFailure() .map { - let section = SectionId() - var snapshot = RecentsSnapshot() - snapshot.appendSections([section]) - snapshot.appendItems($0, toSection: section) - return snapshot - }.eraseToAnyPublisher() + let section = SectionId() + var snapshot = RecentsSnapshot() + snapshot.appendSections([section]) + snapshot.appendItems($0, toSection: section) + return snapshot + }.eraseToAnyPublisher() } var searchPublisher: AnyPublisher<SearchSnapshot, Never> { @@ -71,56 +71,56 @@ final class ChatListViewModel { isBanned: reportingStatus.isEnabled() ? false : nil ) - Publishers.CombineLatest3( + return Publishers.CombineLatest3( database.fetchContactsPublisher(contactsQuery) .assertNoFailure() - .map { $0.filter { $0.id != self.session.myId }}, + .map { $0.filter { $0.id != self.myId }}, chatsPublisher, searchSubject .removeDuplicates() .debounce(for: .milliseconds(100), scheduler: DispatchQueue.main) .eraseToAnyPublisher() ) - .map { (contacts, chats, query) in - let connectionItems = contacts.filter { - let username = $0.username?.lowercased().contains(query.lowercased()) ?? false - let nickname = $0.nickname?.lowercased().contains(query.lowercased()) ?? false - return username || nickname - }.map(SearchItem.connection) - - let chatItems = chats.filter { - switch $0 { - case .group(let group): - return group.name.lowercased().contains(query.lowercased()) - - case .groupChat(let info): - let name = info.group.name.lowercased().contains(query.lowercased()) - let last = info.lastMessage.text.lowercased().contains(query.lowercased()) - return name || last - - case .contactChat(let info): - let username = info.contact.username?.lowercased().contains(query.lowercased()) ?? false - let nickname = info.contact.nickname?.lowercased().contains(query.lowercased()) ?? false - let lastMessage = info.lastMessage.text.lowercased().contains(query.lowercased()) - return username || nickname || lastMessage - - } - }.map(SearchItem.chat) - - var snapshot = SearchSnapshot() - - if connectionItems.count > 0 { - snapshot.appendSections([.connections]) - snapshot.appendItems(connectionItems, toSection: .connections) - } + .map { (contacts, chats, query) in + let connectionItems = contacts.filter { + let username = $0.username?.lowercased().contains(query.lowercased()) ?? false + let nickname = $0.nickname?.lowercased().contains(query.lowercased()) ?? false + return username || nickname + }.map(SearchItem.connection) + + let chatItems = chats.filter { + switch $0 { + case .group(let group): + return group.name.lowercased().contains(query.lowercased()) + + case .groupChat(let info): + let name = info.group.name.lowercased().contains(query.lowercased()) + let last = info.lastMessage.text.lowercased().contains(query.lowercased()) + return name || last + + case .contactChat(let info): + let username = info.contact.username?.lowercased().contains(query.lowercased()) ?? false + let nickname = info.contact.nickname?.lowercased().contains(query.lowercased()) ?? false + let lastMessage = info.lastMessage.text.lowercased().contains(query.lowercased()) + return username || nickname || lastMessage - if chatItems.count > 0 { - snapshot.appendSections([.chats]) - snapshot.appendItems(chatItems, toSection: .chats) } + }.map(SearchItem.chat) - return snapshot - }.eraseToAnyPublisher() + var snapshot = SearchSnapshot() + + if connectionItems.count > 0 { + snapshot.appendSections([.connections]) + snapshot.appendItems(connectionItems, toSection: .connections) + } + + if chatItems.count > 0 { + snapshot.appendSections([.chats]) + snapshot.appendItems(chatItems, toSection: .chats) + } + + return snapshot + }.eraseToAnyPublisher() } var badgeCountPublisher: AnyPublisher<Int, Never> { @@ -168,9 +168,9 @@ final class ChatListViewModel { authStatus: [.participating] ) )) - .assertNoFailure() - .sink { [unowned self] in chatsSubject.send($0) } - .store(in: &cancellables) + .assertNoFailure() + .sink { [unowned self] in chatsSubject.send($0) } + .store(in: &cancellables) } func updateSearch(query: String) { diff --git a/Sources/LaunchFeature/LaunchCoordinator.swift b/Sources/LaunchFeature/LaunchCoordinator.swift index acdc52aa..b07a99c7 100644 --- a/Sources/LaunchFeature/LaunchCoordinator.swift +++ b/Sources/LaunchFeature/LaunchCoordinator.swift @@ -16,7 +16,7 @@ public protocol LaunchCoordinating { public struct LaunchCoordinator: LaunchCoordinating { var replacePresenter: Presenting = ReplacePresenter() - var termsFactory: (String?) -> UIViewController + var termsFactory: () -> UIViewController var searchFactory: (String) -> UIViewController var requestsFactory: () -> UIViewController var chatListFactory: () -> UIViewController @@ -25,7 +25,7 @@ public struct LaunchCoordinator: LaunchCoordinating { var groupChatFactory: (GroupInfo) -> UIViewController public init( - termsFactory: @escaping (String?) -> UIViewController, + termsFactory: @escaping () -> UIViewController, searchFactory: @escaping (String) -> UIViewController, requestsFactory: @escaping () -> UIViewController, chatListFactory: @escaping () -> UIViewController, @@ -51,7 +51,7 @@ public extension LaunchCoordinator { } func toTerms(from parent: UIViewController) { - let screen = termsFactory(nil) + let screen = termsFactory() replacePresenter.present(screen, from: parent) } diff --git a/Sources/LaunchFeature/LaunchViewModel.swift b/Sources/LaunchFeature/LaunchViewModel.swift index ecfcbfb5..a520214e 100644 --- a/Sources/LaunchFeature/LaunchViewModel.swift +++ b/Sources/LaunchFeature/LaunchViewModel.swift @@ -93,50 +93,49 @@ final class LaunchViewModel { } func versionApproved() { - //self.updateBannedList { + updateBannedList { [weak self] in + guard let self = self else { return } - _ = try? SetLogLevel.live(.trace) + _ = try? SetLogLevel.live(.trace) - try! setupDatabase() + try! self.setupDatabase() - if cMixManager.hasStorage(), username != nil { - checkBiometrics { [weak self] in - guard let self = self else { return } + if self.cMixManager.hasStorage(), self.username != nil { + self.checkBiometrics { [weak self] in + guard let self = self else { return } - switch $0 { - case .success(false): - break - case .success(true): - do { - //UpdateCommonErrors.live(jsonFile: ) DOWNLOAD THE JSON FROM THE REPO - - let cMix = try self.initCMix() - try cMix.startNetworkFollower(timeoutMS: 10_000) - guard cMix.waitForNetwork(timeoutMS: 10_000) else { - fatalError("^^^ cMix.waitForNetwork returned FALSE") + switch $0 { + case .success(false): + break + case .success(true): + do { + //UpdateCommonErrors.live(jsonFile: ) DOWNLOAD THE JSON FROM THE REPO + + let cMix = try self.initCMix() + try cMix.startNetworkFollower(timeoutMS: 10_000) + guard cMix.waitForNetwork(timeoutMS: 30_000) else { + fatalError("^^^ cMix.waitForNetwork returned FALSE") + } + + let e2e = try self.initE2E(cMix) + _ = try self.initUD(alternative: true, e2e: e2e, cMix: cMix) + _ = try self.initGroupManager(e2e) + _ = try self.initTransferManager(e2e) + _ = try self.initDummyTrafficManager(e2e) + + self.hudSubject.send(.none) + self.routeSubject.send(.chats) + } catch { + self.hudSubject.send(.error(.init(with: error))) } - - let e2e = try self.initE2E(cMix) - _ = try self.initUD(alternative: true, e2e: e2e, cMix: cMix) - _ = try self.initGroupManager(e2e) - _ = try self.initTransferManager(e2e) - _ = try self.initDummyTrafficManager(e2e) - - - self.hudSubject.send(.none) - self.routeSubject.send(.chats) - } catch { + case .failure(let error): self.hudSubject.send(.error(.init(with: error))) } - case .failure(let error): - self.hudSubject.send(.error(.init(with: error))) } - case .failure(let error): - self.hudSubject.send(.error(HUDError(with: error))) + } else { + self.cleanUp() + self.presentOnboardingFlow() } - } else { - cleanUp() - presentOnboardingFlow() } } @@ -326,15 +325,17 @@ final class LaunchViewModel { let cert = alternative ? try Data(contentsOf: URL(fileURLWithPath: certPath)) : e2e.getUdCertFromNdf() let contactFile = alternative ? try Data(contentsOf: URL(fileURLWithPath: contactFilePath)) : try e2e.getUdContactFromNdf() - let userDiscovery = try NewOrLoadUd.live(.init( - e2eId: e2e.getId(), - follower: .init(handle: { cMix.networkFollowerStatus().rawValue }), - username: username!, - registrationValidationSignature: cMix.getReceptionRegistrationValidationSignature(), - cert: cert, - contactFile: contactFile, - address: address - )) + let userDiscovery = try NewOrLoadUd.live( + params: .init( + e2eId: e2e.getId(), + username: username!, + registrationValidationSignature: cMix.getReceptionRegistrationValidationSignature(), + cert: cert, + contactFile: contactFile, + address: address + ), + follower: .init(handle: { cMix.networkFollowerStatus() }) + ) DependencyInjection.Container.shared.register(userDiscovery) return userDiscovery @@ -519,14 +520,14 @@ final class LaunchViewModel { switch result { case .success(let userId): let query = Contact.Query(id: [userId]) - if var contact = try! self.session.dbManager.fetchContacts(query).first { + if var contact = try! database.fetchContacts(query).first { if contact.isBanned == false { contact.isBanned = true - try! self.session.dbManager.saveContact(contact) + try! database.saveContact(contact) self.enqueueBanWarning(contact: contact) } } else { - try! self.session.dbManager.saveContact(.init(id: userId, isBanned: true)) + try! database.saveContact(.init(id: userId, isBanned: true)) } case .failure(_): diff --git a/Sources/LaunchFeature/Resources/udContact.bin b/Sources/LaunchFeature/Resources/udContact.bin index b2611d41..eddc5d47 100644 --- a/Sources/LaunchFeature/Resources/udContact.bin +++ b/Sources/LaunchFeature/Resources/udContact.bin @@ -1 +1 @@ -<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 +<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> diff --git a/Sources/OnboardingFeature/ViewModels/OnboardingUsernameViewModel.swift b/Sources/OnboardingFeature/ViewModels/OnboardingUsernameViewModel.swift index 8204662c..ff426498 100644 --- a/Sources/OnboardingFeature/ViewModels/OnboardingUsernameViewModel.swift +++ b/Sources/OnboardingFeature/ViewModels/OnboardingUsernameViewModel.swift @@ -132,15 +132,17 @@ final class OnboardingUsernameViewModel { let cert = alternative ? try Data(contentsOf: URL(fileURLWithPath: certPath)) : e2e.getUdCertFromNdf() let contactFile = alternative ? try Data(contentsOf: URL(fileURLWithPath: contactFilePath)) : try e2e.getUdContactFromNdf() - let userDiscovery = try NewOrLoadUd.live(.init( - e2eId: e2e.getId(), - follower: .init(handle: { cMix.networkFollowerStatus().rawValue }), - username: self.stateRelay.value.input, - registrationValidationSignature: cMix.getReceptionRegistrationValidationSignature(), - cert: cert, - contactFile: contactFile, - address: address - )) + let userDiscovery = try NewOrLoadUd.live( + params: .init( + e2eId: e2e.getId(), + username: self.stateRelay.value.input, + registrationValidationSignature: cMix.getReceptionRegistrationValidationSignature(), + cert: cert, + contactFile: contactFile, + address: address + ), + follower: .init(handle: { cMix.networkFollowerStatus() }) + ) username = self.stateRelay.value.input DependencyInjection.Container.shared.register(userDiscovery) diff --git a/Sources/RestoreFeature/ViewModels/RestoreViewModel.swift b/Sources/RestoreFeature/ViewModels/RestoreViewModel.swift index 4207eb1b..4560f3cd 100644 --- a/Sources/RestoreFeature/ViewModels/RestoreViewModel.swift +++ b/Sources/RestoreFeature/ViewModels/RestoreViewModel.swift @@ -179,11 +179,19 @@ final class RestoreViewModel { from: paramsData ) - var phoneFact: Fact? - self.phone = facts.phone self.email = facts.email + var emailFact: Fact? = { + if let email = facts.email { return Fact(fact: email, type: FactType.email.rawValue) } + return nil + }() + + var phoneFact: Fact? = { + if let phone = facts.phone { return Fact(fact: phone, type: FactType.phone.rawValue) } + return nil + }() + let cMix = try self.cMixManager.load() DependencyInjection.Container.shared.register(cMix) @@ -225,15 +233,18 @@ final class RestoreViewModel { fatalError("Couldn't retrieve alternative UD credentials") } - let userDiscovery = try NewUdManagerFromBackup.live(.init( - e2eId: e2e.getId(), - follower: .init(handle: { cMix.networkFollowerStatus().rawValue }), - email: nil, - phone: nil, - cert: Data(contentsOf: URL(fileURLWithPath: certPath)), - contactFile: Data(contentsOf: URL(fileURLWithPath: contactFilePath)), - address: "46.101.98.49:18001" - )) + let userDiscovery = try NewUdManagerFromBackup.live( + params: .init( + e2eId: e2e.getId(), + username: Fact(fact: facts.username, type: 0), + email: emailFact, + phone: phoneFact, + cert: Data(contentsOf: URL(fileURLWithPath: certPath)), + contactFile: Data(contentsOf: URL(fileURLWithPath: contactFilePath)), + address: "46.101.98.49:18001" + ), + follower: .init(handle: { cMix.networkFollowerStatus() }) + ) DependencyInjection.Container.shared.register(userDiscovery) diff --git a/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift b/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift index d608dc01..f24715e9 100644 --- a/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift +++ b/Sources/SearchFeature/ViewModels/SearchLeftViewModel.swift @@ -25,6 +25,7 @@ struct SearchLeftViewState { final class SearchLeftViewModel { @Dependency var e2e: E2E + @Dependency var cMix: CMix @Dependency var database: Database @Dependency var userDiscovery: UserDiscovery @Dependency var reportingStatus: ReportingStatus @@ -107,41 +108,43 @@ final class SearchLeftViewModel { hudSubject.send(.onAction(Localized.Ud.Search.cancel)) var content = stateSubject.value.input - let prefix = stateSubject.value.item.written.first!.uppercased() if stateSubject.value.item == .phone { content += stateSubject.value.country.code } -// backgroundScheduler.schedule { [weak self] in -// guard let self = self else { return } + let nrr = try! cMix.getNodeRegistrationStatus() + print("^^^ NRR: \(nrr.ratio)") + + backgroundScheduler.schedule { [weak self] in + guard let self = self else { return } do { let report = try SearchUD.live( e2eId: self.e2e.getId(), udContact: self.userDiscovery.getContact(), - facts: [Fact(fact: "teste", type: 0)], + facts: [Fact(fact: content, type: self.stateSubject.value.item.rawValue)], callback: .init(handle: { switch $0 { case .success(let dataArray): - print("^^^ \(#file):\(#line) \(dataArray.map { $0.base64EncodedString() })") + print("^^^ searchUD success: \(dataArray.map { $0.base64EncodedString() })") - // self.hudSubject.send(.none) - // self.appendToLocalSearch(contact) + self.hudSubject.send(.none) +// self.appendToLocalSearch(contact) case .failure(let error): - print("^^^ \(#file):\(#line) error: \(error.localizedDescription)") + print("^^^ searchUD error: \(error.localizedDescription)") self.appendToLocalSearch(nil) self.hudSubject.send(.error(.init(with: error))) } }) ) - print(report) + print("^^^ report: \(report))") } catch { - print("^^^ \(#file):\(#line) error: \(error.localizedDescription)") + print("^^^ exception: \(error.localizedDescription)") } -// } + } } func didTapResend(contact: Contact) { diff --git a/Sources/TermsFeature/TermsConditionsController.swift b/Sources/TermsFeature/TermsConditionsController.swift index b11ef152..d458ffe1 100644 --- a/Sources/TermsFeature/TermsConditionsController.swift +++ b/Sources/TermsFeature/TermsConditionsController.swift @@ -10,20 +10,13 @@ public final class TermsConditionsController: UIViewController { @Dependency var coordinator: TermsCoordinator @Dependency var statusBarController: StatusBarStyleControlling + @KeyObject(.username, defaultValue: nil) var username: String? @KeyObject(.acceptedTerms, defaultValue: false) var didAcceptTerms: Bool lazy private var screenView = TermsConditionsView() - private let ndf: String? private var cancellables = Set<AnyCancellable>() - public init(_ ndf: String?) { - self.ndf = ndf - super.init(nibName: nil, bundle: nil) - } - - required init?(coder: NSCoder) { nil } - public override func loadView() { view = screenView } @@ -72,10 +65,10 @@ public final class TermsConditionsController: UIViewController { .sink { [unowned self] in didAcceptTerms = true - if let ndf = ndf { - coordinator.presentUsername(ndf, self) - } else { + if let _ = username { coordinator.presentChatList(self) + } else { + coordinator.presentUsername(self) } }.store(in: &cancellables) diff --git a/Sources/TermsFeature/TermsCoordinator.swift b/Sources/TermsFeature/TermsCoordinator.swift index daff90e4..05e4fc62 100644 --- a/Sources/TermsFeature/TermsCoordinator.swift +++ b/Sources/TermsFeature/TermsCoordinator.swift @@ -3,12 +3,12 @@ import Presentation public struct TermsCoordinator { var presentChatList: (UIViewController) -> Void - var presentUsername: (String, UIViewController) -> Void + var presentUsername: (UIViewController) -> Void } public extension TermsCoordinator { static func live( - usernameFactory: @escaping (String) -> UIViewController, + usernameFactory: @escaping () -> UIViewController, chatListFactory: @escaping () -> UIViewController ) -> Self { .init( @@ -16,9 +16,9 @@ public extension TermsCoordinator { let presenter = ReplacePresenter() presenter.present(chatListFactory(), from: parent) }, - presentUsername: { ndf, parent in + presentUsername: { parent in let presenter = PushPresenter() - presenter.present(usernameFactory(ndf), from: parent) + presenter.present(usernameFactory(), from: parent) } ) } -- GitLab