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

Cleaned all integration except FT and mocks

parent 1b8337db
No related branches found
No related tags found
2 merge requests!40v1.1.2b166,!38Using new database structure
...@@ -5,16 +5,16 @@ import Bindings ...@@ -5,16 +5,16 @@ import Bindings
extension Contact { extension Contact {
init(with contact: BindingsContact, status: Contact.AuthStatus) { init(with contact: BindingsContact, status: Contact.AuthStatus) {
self.init( self.init(
photo: nil, id: contact.getID()!,
userId: contact.getID()!,
email: contact.retrieve(fact: .email),
phone: contact.retrieve(fact: .phone),
status: status,
marshaled: try! contact.marshal(), marshaled: try! contact.marshal(),
username: contact.retrieve(fact: .username) ?? "", username: contact.retrieve(fact: .username) ?? "",
email: contact.retrieve(fact: .email),
phone: contact.retrieve(fact: .phone),
nickname: nil, nickname: nil,
createdAt: Date(), photo: nil,
isRecent: false authStatus: status,
isRecent: false,
createdAt: Date()
) )
} }
} }
...@@ -24,14 +24,17 @@ extension Message { ...@@ -24,14 +24,17 @@ extension Message {
guard let payload = try? Payload(with: message.getPayload()!) else { fatalError() } guard let payload = try? Payload(with: message.getPayload()!) else { fatalError() }
self.init( self.init(
sender: message.getSender()!, networkId: message.getID()!,
receiver: meMarshalled, senderId: message.getSender()!,
payload: payload, recipientId: meMarshalled,
unread: true, groupId: nil,
timestamp: Int(message.getTimestampNano()), date: Date.fromTimestamp(Int(message.getTimestampNano())),
uniqueId: message.getID()!,
status: .received, status: .received,
roundURL: message.getRoundURL() isUnread: true,
text: payload.text,
replyMessageId: payload.reply?.messageId,
roundURL: message.getRoundURL(),
fileTransferId: nil
) )
} }
...@@ -39,14 +42,17 @@ extension Message { ...@@ -39,14 +42,17 @@ extension Message {
guard let payload = try? Payload(with: message.getPayload()!) else { fatalError() } guard let payload = try? Payload(with: message.getPayload()!) else { fatalError() }
self.init( self.init(
sender: message.getSenderID()!, networkId: message.getMessageID()!,
senderId: message.getSenderID()!,
recipientId: nil,
groupId: message.getGroupID()!, groupId: message.getGroupID()!,
payload: payload, date: Date.fromTimestamp(Int(message.getTimestampNano())),
unread: true,
timestamp: Int(message.getTimestampNano()),
uniqueId: message.getMessageID()!,
status: .received, status: .received,
roundURL: message.getRoundURL() isUnread: true,
text: payload.text,
replyMessageId: payload.reply?.messageId,
roundURL: message.getRoundURL(),
fileTransferId: nil
) )
} }
} }
...@@ -68,15 +68,14 @@ extension BindingsGroupChat: GroupManagerInterface { ...@@ -68,15 +68,14 @@ extension BindingsGroupChat: GroupManagerInterface {
return return
} }
completion(.success( completion(.success(.init(
.init( id: group.getID()!,
leader: me, name: name,
name: name, leaderId: me,
groupId: group.getID()!, createdAt: Date(),
status: .participating, authStatus: .participating,
createdAt: Date(), serialized: group.serialize()!
serialize: group.serialize()! )))
)))
return return
default: default:
break break
......
...@@ -133,16 +133,16 @@ public extension BindingsClient { ...@@ -133,16 +133,16 @@ public extension BindingsClient {
} }
groupRequests(.init( groupRequests(.init(
leader: members.first!, id: id,
name: String(data: name, encoding: .utf8)!, name: String(data: name, encoding: .utf8)!,
groupId: id, leaderId: members.first!,
status: .pending,
createdAt: Date(), createdAt: Date(),
serialize: serialize authStatus: .pending,
serialized: serialize
), members, welcomeMessage) ), members, welcomeMessage)
} }
let messageCallback = GroupMessageCallback { groupMessages(GroupMessage(with: $0)) } let messageCallback = GroupMessageCallback { groupMessages(Message(with: $0)) }
let groupManager = BindingsNewGroupManager(self, requestCallback, messageCallback, &error) let groupManager = BindingsNewGroupManager(self, requestCallback, messageCallback, &error)
guard let error = error else { return groupManager } guard let error = error else { return groupManager }
......
...@@ -42,56 +42,59 @@ extension Session { ...@@ -42,56 +42,59 @@ extension Session {
@discardableResult @discardableResult
func processGroupCreation(_ group: Group, memberIds: [Data], welcome: String?) -> [GroupMember] { func processGroupCreation(_ group: Group, memberIds: [Data], welcome: String?) -> [GroupMember] {
try! dbManager.saveGroup(group) // TODO: Implement this checking on which members of the group are my members etc.
var members: [GroupMember] = [] // try! dbManager.saveGroup(group)
//
if let contactsOnGroup: [Contact] = try? dbManager.fetch(.withUserIds(memberIds)) { // var members: [GroupMember] = []
contactsOnGroup.forEach { members.append(GroupMember(contact: $0, group: group)) } //
} // if let contactsOnGroup: [Contact] = try? dbManager.fetchContacts(.init(id: Set(memberIds)) {
// //contactsOnGroup.forEach { members.append(GroupMember(contact: $0, group: group)) }
let strangersOnGroup = memberIds // }
.filter { !members.map { $0.contactId }.contains($0) } //
.filter { $0 != client.bindings.myId } // let strangersOnGroup = memberIds
// .filter { !members.map { $0.contactId }.contains($0) }
if !strangersOnGroup.isEmpty { // .filter { $0 != client.bindings.myId }
for stranger in strangersOnGroup.enumerated() { //
members.append(GroupMember( // if !strangersOnGroup.isEmpty {
userId: stranger.element, // for stranger in strangersOnGroup.enumerated() {
groupId: group.groupId, // members.append(GroupMember(
status: .pendingUsername, // userId: stranger.element,
username: "Fetching username...", // groupId: group.groupId,
photo: nil // status: .pendingUsername,
)) // username: "Fetching username...",
} // photo: nil
} // ))
// }
members.forEach { try! dbManager.saveGroupMember($0) } // }
//
if group.leaderId != client.bindings.meMarshalled, inappnotifications { // members.forEach { try! dbManager.saveGroupMember($0) }
DeviceFeedback.sound(.contactAdded) //
DeviceFeedback.shake(.notification) // if group.leaderId != client.bindings.meMarshalled, inappnotifications {
} // DeviceFeedback.sound(.contactAdded)
// DeviceFeedback.shake(.notification)
scanStrangers {} // }
//
if let welcome = welcome { // scanStrangers {}
_ = try? dbManager.saveMessage(.init( //
networkId: nil, // if let welcome = welcome {
senderId: group.leaderId, // _ = try? dbManager.saveMessage(.init(
recipientId: client.bindings.meMarshalled, // networkId: nil,
groupId: group.id, // senderId: group.leaderId,
date: Date(), // recipientId: client.bindings.meMarshalled,
status: .received, // groupId: group.id,
isUnread: true, // date: Date(),
text: welcome, // status: .received,
replyMessageId: nil, // isUnread: true,
roundURL: nil, // text: welcome,
fileTransferId: nil // replyMessageId: nil,
)) // roundURL: nil,
} // fileTransferId: nil
// ))
return members // }
//
// return members
fatalError()
} }
} }
...@@ -100,13 +103,16 @@ extension Session { ...@@ -100,13 +103,16 @@ extension Session {
extension Session { extension Session {
public func send(_ payload: Payload, toGroup group: Group) { public func send(_ payload: Payload, toGroup group: Group) {
var message = Message( var message = Message(
sender: client.bindings.meMarshalled, senderId: client.bindings.meMarshalled,
groupId: group.groupId, recipientId: nil,
payload: payload, groupId: group.id,
unread: false, date: Date(),
timestamp: Date.asTimestamp, status: .sending,
uniqueId: nil, isUnread: false,
status: .sending text: payload.text,
replyMessageId: payload.reply?.messageId,
roundURL: nil,
fileTransferId: nil
) )
do { do {
...@@ -117,13 +123,6 @@ extension Session { ...@@ -117,13 +123,6 @@ extension Session {
} }
} }
public func retryGroupMessage(_ id: Int64) {
guard var message: GroupMessage = try? dbManager.fetch(withId: id) else { return }
message.timestamp = Date.asTimestamp
message.status = .sending
send(groupMessage: try! dbManager.saveMessage(message))
}
private func send(message: Message) { private func send(message: Message) {
guard let manager = client.groupManager else { fatalError("A group manager was not created") } guard let manager = client.groupManager else { fatalError("A group manager was not created") }
var message = message var message = message
...@@ -163,52 +162,51 @@ extension Session { ...@@ -163,52 +162,51 @@ extension Session {
} }
public func scanStrangers(_ completion: @escaping () -> Void) { public func scanStrangers(_ completion: @escaping () -> Void) {
DispatchQueue.global().async { [weak self] in // TODO: How this will work?
guard let self = self, let ud = self.client.userDiscovery else { return }
// DispatchQueue.global().async { [weak self] in
guard let strangers: [GroupMember] = try? self.dbManager.fetch(.strangers) else { // guard let self = self, let ud = self.client.userDiscovery else { return }
DispatchQueue.main.async { //
completion() // guard let strangers = try? self.dbManager.fetchContacts(.init(authStatus: [.stranger])),
} // strangers.isEmpty == false else {
// DispatchQueue.main.async { completion() }
return // return
} // }
//
let ids = strangers.map { $0.userId } // let ids = strangers.map { $0.id }
//
var updatedStrangers: [GroupMember] = [] // var updatedStrangers: [GroupMember] = []
//
ud.lookup(idList: ids) { // ud.lookup(idList: ids) {
switch $0 { // switch $0 {
case .success(let contacts): // case .success(let contacts):
strangers.forEach { stranger in // strangers.forEach { stranger in
if let found = contacts.first(where: { contact in contact.userId == stranger.userId }) { // if let found = contacts.first(where: { contact in contact.id == stranger.id }) {
var updatedStranger = stranger // var updatedStranger = stranger
updatedStranger.status = .usernameSet // updatedStranger.username = found.username
updatedStranger.username = found.username // updatedStrangers.append(updatedStranger)
updatedStrangers.append(updatedStranger) // }
} // }
} //
// DispatchQueue.main.async {
DispatchQueue.main.async { // updatedStrangers.forEach {
updatedStrangers.forEach { // do {
do { // try self.dbManager.saveContact($0)
try self.dbManager.save($0) // } catch {
} catch { // log(string: error.localizedDescription, type:.error)
log(string: error.localizedDescription, type:.error) // }
} // }
} //
// log(string: "Scanned unknown group members", type: .info)
log(string: "Scanned unknown group members", type: .info) // completion()
completion() // }
} // case .failure(let error):
case .failure(let error): // DispatchQueue.main.async {
DispatchQueue.main.async { // log(string: error.localizedDescription, type: .error)
log(string: error.localizedDescription, type: .error) // completion()
completion() // }
} // }
} // }
} // }
}
} }
} }
...@@ -40,7 +40,6 @@ public protocol SessionType { ...@@ -40,7 +40,6 @@ public protocol SessionType {
// Messages // Messages
func retryMessage(_: Int64) func retryMessage(_: Int64)
func retryGroupMessage(_: Int64)
func send(_: Payload, toContact: Contact) func send(_: Payload, toContact: Contact)
// Contacts // Contacts
......
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