diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 2ac9d51e9c..12cab783a1 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -802,33 +802,41 @@ func apiChatUnread(type: ChatType, id: Int64, unreadChat: Bool) async throws { try await sendCommandOkResp(.apiChatUnread(type: type, id: id, unreadChat: unreadChat)) } -func receiveFile(user: User, fileId: Int64) async { - if let chatItem = await apiReceiveFile(fileId: fileId) { +func receiveFile(user: User, fileId: Int64, auto: Bool = false) async { + if let chatItem = await apiReceiveFile(fileId: fileId, auto: auto) { DispatchQueue.main.async { chatItemSimpleUpdate(user, chatItem) } } } -func apiReceiveFile(fileId: Int64, inline: Bool? = nil) async -> AChatItem? { +func apiReceiveFile(fileId: Int64, inline: Bool? = nil, auto: Bool = false) async -> AChatItem? { let r = await chatSendCmd(.receiveFile(fileId: fileId, inline: inline)) let am = AlertManager.shared if case let .rcvFileAccepted(_, chatItem) = r { return chatItem } if case .rcvFileAcceptedSndCancelled = r { - am.showAlertMsg( - title: "Cannot receive file", - message: "Sender cancelled file transfer." - ) + logger.debug("apiReceiveFile error: sender cancelled file transfer") + if !auto { + am.showAlertMsg( + title: "Cannot receive file", + message: "Sender cancelled file transfer." + ) + } } else if let networkErrorAlert = networkErrorAlert(r) { - am.showAlert(networkErrorAlert) + logger.error("apiReceiveFile network error: \(String(describing: r))") + if !auto { + am.showAlert(networkErrorAlert) + } } else { - logger.error("apiReceiveFile error: \(String(describing: r))") switch r { case .chatCmdError(_, .error(.fileAlreadyReceiving)): logger.debug("apiReceiveFile ignoring fileAlreadyReceiving error") default: - am.showAlertMsg( - title: "Error receiving file", - message: "Error: \(String(describing: r))" - ) + logger.error("apiReceiveFile error: \(String(describing: r))") + if !auto { + am.showAlertMsg( + title: "Error receiving file", + message: "Error: \(String(describing: r))" + ) + } } } return nil @@ -1323,7 +1331,7 @@ func processReceivedMsg(_ res: ChatResponse) async { } if let file = cItem.autoReceiveFile() { Task { - await receiveFile(user: user, fileId: file.fileId) + await receiveFile(user: user, fileId: file.fileId, auto: true) } } if cItem.showNotification { diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift index 4387614918..f9db2cf777 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift @@ -247,10 +247,10 @@ struct CIVideoView: View { .padding([.trailing, .top], 11) } - private func receiveFileIfValidSize(file: CIFile, receiveFile: @escaping (User, Int64) async -> Void) { + private func receiveFileIfValidSize(file: CIFile, receiveFile: @escaping (User, Int64, Bool) async -> Void) { Task { if let user = ChatModel.shared.currentUser { - await receiveFile(user, file.fileId) + await receiveFile(user, file.fileId, false) } } }