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 {
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 generateTransferManager(messenger: messenger)
if messenger.isLoggedIn() == false {
......@@ -448,8 +454,8 @@ extension LaunchViewModel {
createdAt: Date()
))
if email == nil, phone == nil {
do {
do {
if email == nil, phone == nil {
try performLookup(on: contact) { [weak self] in
guard let self = self else { return }
......@@ -467,11 +473,27 @@ extension LaunchViewModel {
try! self.database.saveContact(model)
}
}
} catch {
print(">>> Error \(#file):\(#line): \(error.localizedDescription)")
} else {
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 {
performSearch(on: contact)
} catch {
print(">>> Error \(#file):\(#line): \(error.localizedDescription)")
}
}
......@@ -494,7 +516,36 @@ extension LaunchViewModel {
}
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(
......@@ -515,19 +566,40 @@ extension LaunchViewModel {
switch $0 {
case .success(let otherContact):
print(">>> Lookup succeeded")
completion(.success(otherContact))
case .failure(let error):
print(">>> Lookup failed: \(error.localizedDescription)")
completion(.failure(error))
}
})
)
}
private func performSearch(on contact: XXClient.Contact) {
fatalError(">>> UD Search is not implemented yet")
private func performSearch(
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(
......
import HUD
import Combine
import Defaults
import Foundation
import XXClient
import XXMessengerClient
import DependencyInjection
import Models
final class AccountDeleteViewModel {
@Dependency var messenger: Messenger
@KeyObject(.username, defaultValue: nil) var username: String?
var deleting = false
var hud: AnyPublisher<HUDStatus, Never> { hudRelay.eraseToAnyPublisher() }
......@@ -18,6 +26,10 @@ final class AccountDeleteViewModel {
}
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
self?.hudRelay.send(.error(.init(
content: "Now kill the app and re-open",
......@@ -26,7 +38,6 @@ final class AccountDeleteViewModel {
)))
}
} catch {
DispatchQueue.main.async { [weak self] in
self?.hudRelay.send(.error(.init(with: error)))
}
......
......@@ -105,7 +105,7 @@
"location" : "https://git.xx.network/elixxir/elixxir-dapps-sdk-swift",
"state" : {
"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