Skip to content
Snippets Groups Projects
Commit da725703 authored by Bruno Muniz's avatar Bruno Muniz :apple:
Browse files

Fix sende2e

parent ec223019
No related branches found
No related tags found
1 merge request!66Using new client wrapper
...@@ -145,10 +145,16 @@ final class LaunchViewModel { ...@@ -145,10 +145,16 @@ final class LaunchViewModel {
try messenger.connect() try messenger.connect()
} }
try generateGroupManager(messenger: messenger) try messenger.e2e.get()?.registerListener(
senderId: nil,
messageType: 2,
callback: .init(handle: {
print(">>> \(String(data: $0.payload, encoding: .utf8))")
})
)
try generateGroupManager(messenger: messenger)
try generateTrafficManager(messenger: messenger) try generateTrafficManager(messenger: messenger)
try generateTransferManager(messenger: messenger) try generateTransferManager(messenger: messenger)
if messenger.isLoggedIn() == false { if messenger.isLoggedIn() == false {
...@@ -448,8 +454,8 @@ extension LaunchViewModel { ...@@ -448,8 +454,8 @@ extension LaunchViewModel {
createdAt: Date() createdAt: Date()
)) ))
if email == nil, phone == nil { do {
do { if email == nil, phone == nil {
try performLookup(on: contact) { [weak self] in try performLookup(on: contact) { [weak self] in
guard let self = self else { return } guard let self = self else { return }
...@@ -467,11 +473,27 @@ extension LaunchViewModel { ...@@ -467,11 +473,27 @@ extension LaunchViewModel {
try! self.database.saveContact(model) try! self.database.saveContact(model)
} }
} }
} catch { } else {
print(">>> Error \(#file):\(#line): \(error.localizedDescription)") try performSearch(on: contact) { [weak self] in
guard let self = self else { return }
switch $0 {
case .success(let searchedContact):
if try! self.verifyOwnership(contact, searchedContact) { // How could this ever throw?
model.authStatus = .verified
try! self.database.saveContact(model)
} else {
try! self.database.deleteContact(model)
}
case .failure(let error):
model.authStatus = .verificationFailed
print(">>> Error \(#file):\(#line): \(error.localizedDescription)")
try! self.database.saveContact(model)
}
}
} }
} else { } catch {
performSearch(on: contact) print(">>> Error \(#file):\(#line): \(error.localizedDescription)")
} }
} }
...@@ -494,7 +516,36 @@ extension LaunchViewModel { ...@@ -494,7 +516,36 @@ extension LaunchViewModel {
} }
private func handleGroupRequest(from group: XXClient.Group) { private func handleGroupRequest(from group: XXClient.Group) {
// TODO if let _ = try? database.fetchGroups(.init(id: [group.getId()])).first {
print(">>> Tried to handle a group request that is already handled")
return
}
let leaderId = try! group.getMembership() // This is all users on the group, the 1st is the leader/creator.
try! database.saveGroup(.init(
id: group.getId(),
name: String(data: group.getName(), encoding: .utf8)!,
leaderId: leaderId,
createdAt: Date.fromTimestamp(Int(group.getCreatedMS())),
authStatus: .pending,
serialized: group.serialize()
))
if let initialMessage = String(data: group.getInitMessage(), encoding: .utf8) {
try! database.saveMessage(.init(
senderId: leaderId,
recipientId: nil,
groupId: group.getId(),
date: Date.fromTimestamp(Int(group.getCreatedMS())),
status: .received,
isUnread: true,
text: initialMessage
))
}
// TODO:
// All other members should be added to the database as GroupMembers
} }
private func performLookup( private func performLookup(
...@@ -515,19 +566,40 @@ extension LaunchViewModel { ...@@ -515,19 +566,40 @@ extension LaunchViewModel {
switch $0 { switch $0 {
case .success(let otherContact): case .success(let otherContact):
print(">>> Lookup succeeded") print(">>> Lookup succeeded")
completion(.success(otherContact)) completion(.success(otherContact))
case .failure(let error): case .failure(let error):
print(">>> Lookup failed: \(error.localizedDescription)") print(">>> Lookup failed: \(error.localizedDescription)")
completion(.failure(error)) completion(.failure(error))
} }
}) })
) )
} }
private func performSearch(on contact: XXClient.Contact) { private func performSearch(
fatalError(">>> UD Search is not implemented yet") on contact: XXClient.Contact,
completion: @escaping (Result<XXClient.Contact, Error>) -> Void
) throws {
guard let messenger = try? DependencyInjection.Container.shared.resolve() as Messenger else {
fatalError(">>> Tried to search, but there's no messenger instance on DI container")
}
print(">>> Performing Search")
let _ = try SearchUD.live(
e2eId: messenger.e2e.get()!.getId(),
udContact: try messenger.ud.get()!.getContact(),
facts: contact.getFacts(),
callback: .init(handle: {
switch $0 {
case .success(let otherContact):
print(">>> Search succeeded")
completion(.success(otherContact.first!))
case .failure(let error):
print(">>> Search failed: \(error.localizedDescription)")
completion(.failure(error))
}
})
)
} }
private func verifyOwnership( private func verifyOwnership(
......
import HUD import HUD
import Combine import Combine
import Defaults
import Foundation import Foundation
import XXClient
import XXMessengerClient
import DependencyInjection import DependencyInjection
import Models
final class AccountDeleteViewModel { final class AccountDeleteViewModel {
@Dependency var messenger: Messenger
@KeyObject(.username, defaultValue: nil) var username: String?
var deleting = false var deleting = false
var hud: AnyPublisher<HUDStatus, Never> { hudRelay.eraseToAnyPublisher() } var hud: AnyPublisher<HUDStatus, Never> { hudRelay.eraseToAnyPublisher() }
...@@ -18,6 +26,10 @@ final class AccountDeleteViewModel { ...@@ -18,6 +26,10 @@ final class AccountDeleteViewModel {
} }
do { do {
let fact = Fact(fact: username!, type: FactType.username.rawValue)
try messenger.ud.get()!.permanentDeleteAccount(username: fact)
try messenger.destroy()
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
self?.hudRelay.send(.error(.init( self?.hudRelay.send(.error(.init(
content: "Now kill the app and re-open", content: "Now kill the app and re-open",
...@@ -26,7 +38,6 @@ final class AccountDeleteViewModel { ...@@ -26,7 +38,6 @@ final class AccountDeleteViewModel {
))) )))
} }
} catch { } catch {
DispatchQueue.main.async { [weak self] in DispatchQueue.main.async { [weak self] in
self?.hudRelay.send(.error(.init(with: error))) self?.hudRelay.send(.error(.init(with: error)))
} }
......
...@@ -105,7 +105,7 @@ ...@@ -105,7 +105,7 @@
"location" : "https://git.xx.network/elixxir/elixxir-dapps-sdk-swift", "location" : "https://git.xx.network/elixxir/elixxir-dapps-sdk-swift",
"state" : { "state" : {
"branch" : "development", "branch" : "development",
"revision" : "32ac1c46d6015069efa20dfe772f20adee6e3ecb" "revision" : "108dd0bfc00775b051f848cdc8b3921c26be47e7"
} }
}, },
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment