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

Working on file transfers

parent 22484cab
No related branches found
No related tags found
2 merge requests!40v1.1.2b166,!38Using new database structure
...@@ -236,7 +236,13 @@ extension CellFactory { ...@@ -236,7 +236,13 @@ extension CellFactory {
Bubbler.build(imageBubble: cell.leftView, with: item, with: ft) Bubbler.build(imageBubble: cell.leftView, with: item, with: ft)
cell.canReply = false cell.canReply = false
cell.performReply = {} cell.performReply = {}
cell.leftView.imageView.image = UIImage(data: ft.data!)
if let data = ft.data {
cell.leftView.imageView.image = UIImage(data: data)
} else {
cell.leftView.imageView.image = Asset.transferImagePlaceholder.image
}
return cell return cell
} }
) )
......
...@@ -22,6 +22,7 @@ public class Client { ...@@ -22,6 +22,7 @@ public class Client {
var messages: AnyPublisher<Message, Never> { messagesSubject.eraseToAnyPublisher() } var messages: AnyPublisher<Message, Never> { messagesSubject.eraseToAnyPublisher() }
var requests: AnyPublisher<Contact, Never> { requestsSubject.eraseToAnyPublisher() } var requests: AnyPublisher<Contact, Never> { requestsSubject.eraseToAnyPublisher() }
var events: AnyPublisher<BackendEvent, Never> { eventsSubject.eraseToAnyPublisher() } var events: AnyPublisher<BackendEvent, Never> { eventsSubject.eraseToAnyPublisher() }
var transfers: AnyPublisher<FileTransfer, Never> { transfersSubject.eraseToAnyPublisher() }
var requestsSent: AnyPublisher<Contact, Never> { requestsSentSubject.eraseToAnyPublisher() } var requestsSent: AnyPublisher<Contact, Never> { requestsSentSubject.eraseToAnyPublisher() }
var confirmations: AnyPublisher<Contact, Never> { confirmationsSubject.eraseToAnyPublisher() } var confirmations: AnyPublisher<Contact, Never> { confirmationsSubject.eraseToAnyPublisher() }
var groupRequests: AnyPublisher<(Group, [Data], String?), Never> { groupRequestsSubject.eraseToAnyPublisher() } var groupRequests: AnyPublisher<(Group, [Data], String?), Never> { groupRequestsSubject.eraseToAnyPublisher() }
......
...@@ -47,9 +47,7 @@ extension BindingsFileTransfer: TransferManagerInterface { ...@@ -47,9 +47,7 @@ extension BindingsFileTransfer: TransferManagerInterface {
callback(completed, sent, arrived, total, error) callback(completed, sent, arrived, total, error)
} }
guard let file = FileManager.retrieve(name: url.lastPathComponent, type: url.pathExtension) else { guard let file = try? Data(contentsOf: url) else { fatalError() }
fatalError()
}
return try send( return try send(
url.lastPathComponent, url.lastPathComponent,
......
...@@ -40,10 +40,12 @@ extension Session { ...@@ -40,10 +40,12 @@ extension Session {
DispatchQueue.global().async { [weak self] in DispatchQueue.global().async { [weak self] in
guard let self = self else { return } guard let self = self else { return }
var tid: Data! var tid: Data?
do { do {
tid = try manager.uploadFile(url: url, to: contact.id) { completed, send, arrived, total, error in tid = try manager.uploadFile(url: url, to: contact.id) { completed, send, arrived, total, error in
guard let tid = tid else { return }
if completed { if completed {
self.endTransferWith(tid: tid) self.endTransferWith(tid: tid)
} else { } else {
...@@ -55,8 +57,23 @@ extension Session { ...@@ -55,8 +57,23 @@ extension Session {
} }
} }
guard let tid = tid else { return }
let content = url.pathExtension == "m4a" ? "a voice message" : "an image" let content = url.pathExtension == "m4a" ? "a voice message" : "an image"
let transfer = FileTransfer(
id: tid,
contactId: contact.id,
name: url.deletingPathExtension().lastPathComponent,
type: url.pathExtension,
data: try? Data(contentsOf: url),
progress: 0.0,
isIncoming: false,
createdAt: Date()
)
_ = try? self.dbManager.saveFileTransfer(transfer)
let message = Message( let message = Message(
networkId: nil, networkId: nil,
senderId: self.client.bindings.myId, senderId: self.client.bindings.myId,
......
...@@ -404,5 +404,29 @@ public final class Session: SessionType { ...@@ -404,5 +404,29 @@ public final class Session: SessionType {
)) ))
} }
}.store(in: &cancellables) }.store(in: &cancellables)
client.transfers
.sink { [unowned self] in
_ = try? dbManager.saveFileTransfer($0)
let content = $0.type == "m4a" ? "a voice message" : "an image"
let message = Message(
networkId: $0.id,
senderId: $0.contactId,
recipientId: myId,
groupId: nil,
date: $0.createdAt,
status: .receiving,
isUnread: true,
text: "Sent you \(content)",
replyMessageId: nil,
roundURL: nil,
fileTransferId: $0.id
)
_ = try? dbManager.saveMessage(message)
}
.store(in: &cancellables)
} }
} }
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