From 88ea636b98bf742816b40b2b4313987794fd9f37 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Fri, 12 Jan 2024 18:31:35 +0000 Subject: [PATCH] Allow resending messages with failed attachments (#2966) * Mark message as failed if an attachment fails uploading * Re-upload failed attachments when resending message * When all attachments finish uploading, mark message as pending send * Update CHANGELOG.md * Revert "Mark message as failed if an attachment fails uploading" This reverts commit f289378c5d8fa3fd83fda8eb1af803f15a517b5c. * Mark message as failed when attachment fails uploading in AttachmentQueueUploader * Fix editing message with attachments re-sending the message again * Remove unused prop in tests * Fix editing message with local attachments sending the local temp file to remote server * Fix comment typo * Provide a comment to explain creating local payload * Fix attachments save to attachment storage with the same id * Fix file attachments retry button not doing anything * Update CHANGELOG.md * Fix vale CI --- .github/workflows/vale-doc-lint.yml | 1 + CHANGELOG.md | 8 +- .../Attachments/AnyAttachmentPayload.swift | 33 ++- .../Background/AttachmentQueueUploader.swift | 28 ++- .../StreamChat/Workers/MessageUpdater.swift | 5 + Sources/StreamChatUI/Appearance+Images.swift | 3 +- .../ChatFileAttachmentListView+ItemView.swift | 16 +- .../ChatMessageFileAttachmentListView.swift | 6 +- .../File/FileAttachmentViewInjector.swift | 12 +- .../ChatMessageList/ChatMessageListVC.swift | 15 +- StreamChat.xcodeproj/project.pbxproj | 1 - .../AnyAttachmentPayload_Tests.swift | 36 +++ .../AttachmentQueueUploader_Tests.swift | 223 +++++++++++++++++- .../Workers/MessageUpdater_Tests.swift | 54 +++++ ...mization_usingAppearance.default-light.png | Bin 5681 -> 5109 bytes ...ization_usingSubclassing.default-light.png | Bin 6089 -> 5545 bytes .../test_appearance_pdf.default-light.png | Bin 5653 -> 5070 bytes ...ization_usingSubclassing.default-light.png | Bin 18444 -> 17583 bytes ...earance_five_attachments.default-light.png | Bin 24677 -> 21854 bytes ...ppearance_one_attachment.default-light.png | Bin 5766 -> 5167 bytes ...pearance_two_attachments.default-light.png | Bin 10462 -> 9357 bytes 21 files changed, 411 insertions(+), 30 deletions(-) diff --git a/.github/workflows/vale-doc-lint.yml b/.github/workflows/vale-doc-lint.yml index 2ef15f471a4..e1289d38652 100644 --- a/.github/workflows/vale-doc-lint.yml +++ b/.github/workflows/vale-doc-lint.yml @@ -16,6 +16,7 @@ jobs: reporter: github-pr-check fail_on_error: true files: docusaurus + version: "2.30.0" env: # Required, set by GitHub actions automatically: # https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c845887b20..6a1d1cf8acf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming -### 🔄 Changed +## StreamChat +### 🐞 Fixed +- Fix not possible to resend messages with failed attachments [#2966](https://github.com/GetStream/stream-chat-swift/pull/2966) + +## StreamChatUI +### 🐞 Fixed +- Fix file attachments retry button not retrying upload [#2966](https://github.com/GetStream/stream-chat-swift/pull/2966) # [4.47.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.47.0) _January 09, 2024_ diff --git a/Sources/StreamChat/Models/Attachments/AnyAttachmentPayload.swift b/Sources/StreamChat/Models/Attachments/AnyAttachmentPayload.swift index c19a254dbed..65f1dae2186 100644 --- a/Sources/StreamChat/Models/Attachments/AnyAttachmentPayload.swift +++ b/Sources/StreamChat/Models/Attachments/AnyAttachmentPayload.swift @@ -190,19 +190,28 @@ extension AttachmentPayload { } } +extension ChatMessageAttachment { + func toAnyAttachmentPayload() -> AnyAttachmentPayload? { + let types = ChatClient.attachmentTypesRegistry + guard let payloadType = types[type] else { return nil } + guard let payload = try? JSONDecoder.default.decode( + payloadType, + from: self.payload + ) else { + return nil + } + + // If the attachment is local, we should create the payload as a local file + if let uploadingState = self.uploadingState, uploadingState.state != .uploaded { + return AnyAttachmentPayload(type: type, payload: payload, localFileURL: uploadingState.localFileURL) + } + + return AnyAttachmentPayload(payload: payload) + } +} + public extension Array where Element == ChatMessageAttachment { func toAnyAttachmentPayload() -> [AnyAttachmentPayload] { - compactMap { attachment in - let types = ChatClient.attachmentTypesRegistry - guard let payloadType = types[attachment.type] else { return nil } - guard let payload = try? JSONDecoder.default.decode( - payloadType, - from: attachment.payload - ) else { - return nil - } - - return AnyAttachmentPayload(payload: payload) - } + compactMap { $0.toAnyAttachmentPayload() } } } diff --git a/Sources/StreamChat/Workers/Background/AttachmentQueueUploader.swift b/Sources/StreamChat/Workers/Background/AttachmentQueueUploader.swift index b4e42d1aee3..d830f8ede14 100644 --- a/Sources/StreamChat/Workers/Background/AttachmentQueueUploader.swift +++ b/Sources/StreamChat/Workers/Background/AttachmentQueueUploader.swift @@ -109,7 +109,7 @@ class AttachmentQueueUploader: Worker { if let temporaryURL = attachment.localURL { do { - let localURL = try attachmentStorage.storeAttachment(at: temporaryURL) + let localURL = try attachmentStorage.storeAttachment(id: id, temporaryURL: temporaryURL) attachment.localURL = localURL } catch { log.error("Could not copy attachment to local storage: \(error.localizedDescription)", subsystems: .offlineSupport) @@ -154,6 +154,23 @@ class AttachmentQueueUploader: Worker { // Update attachment local state. attachmentDTO.localState = newState + let message = attachmentDTO.message + + // When all attachments finish uploading, mark message pending send + if newState == .uploaded { + let allAttachmentsAreUploaded = message.attachments.filter { $0.localState != .uploaded }.isEmpty + // We only want to make a message to be resent when it is in failed state + // If we did not check the state, when editing a message, it would resend an existing message + if allAttachmentsAreUploaded && message.localMessageState == .sendingFailed { + message.localMessageState = .pendingSend + } + } + + // If attachment failed upload, mark message as failed + if newState == .uploadingFailed { + message.localMessageState = .sendingFailed + } + if var uploadedAttachment = uploadedAttachment { self?.updateRemoteUrl(of: &uploadedAttachment) if let processedAttachment = self?.attachmentPostProcessor?.process(uploadedAttachment: uploadedAttachment) { @@ -243,9 +260,12 @@ private class AttachmentStorage { /// Since iOS 8, we cannot use absolute paths to access resources because the intermediate folders can change between sessions/app runs. The content of it, when /// using `.documentsDirectory`, is stable though. /// Because of that, if the file is already in our storage, the only thing we will do is to return a fresh and valid url to access it. - func storeAttachment(at temporaryURL: URL) throws -> URL { - let id = temporaryURL.lastPathComponent - let sandboxedURL = baseURL.appendingPathComponent(id) + func storeAttachment(id: AttachmentId, temporaryURL: URL) throws -> URL { + let fileExtension = temporaryURL.pathExtension + let fileName = temporaryURL.deletingPathExtension().lastPathComponent + let attachmentId = [id.cid.rawValue, id.messageId, String(id.index)].joined(separator: "-") + let fileId = "\(fileName)-\(attachmentId).\(fileExtension)" + let sandboxedURL = baseURL.appendingPathComponent(fileId) guard !fileExists(at: sandboxedURL) else { return sandboxedURL diff --git a/Sources/StreamChat/Workers/MessageUpdater.swift b/Sources/StreamChat/Workers/MessageUpdater.swift index e5210f9045d..16574312c32 100644 --- a/Sources/StreamChat/Workers/MessageUpdater.swift +++ b/Sources/StreamChat/Workers/MessageUpdater.swift @@ -549,6 +549,11 @@ class MessageUpdater: Worker { reason: "only failed or bounced messages can be resent." ) } + + let failedAttachments = messageDTO.attachments.filter { $0.localState == .uploadingFailed } + failedAttachments.forEach { + $0.localState = .pendingUpload + } messageDTO.localMessageState = .pendingSend }, completion: completion) diff --git a/Sources/StreamChatUI/Appearance+Images.swift b/Sources/StreamChatUI/Appearance+Images.swift index dd25f5e5cd3..a652e2bd678 100644 --- a/Sources/StreamChatUI/Appearance+Images.swift +++ b/Sources/StreamChatUI/Appearance+Images.swift @@ -233,7 +233,8 @@ public extension Appearance { public var fileAttachmentActionIcons: [LocalAttachmentState?: UIImage] { get { _fileAttachmentActionIcons ?? [ - .uploaded: download, + // Uncomment when download feature is done + // .uploaded: download, .uploadingFailed: restart, nil: folder ] diff --git a/Sources/StreamChatUI/ChatMessageList/Attachments/File/ChatFileAttachmentListView+ItemView.swift b/Sources/StreamChatUI/ChatMessageList/Attachments/File/ChatFileAttachmentListView+ItemView.swift index 13adab518d2..170753ba8f9 100644 --- a/Sources/StreamChatUI/ChatMessageList/Attachments/File/ChatFileAttachmentListView+ItemView.swift +++ b/Sources/StreamChatUI/ChatMessageList/Attachments/File/ChatFileAttachmentListView+ItemView.swift @@ -12,9 +12,12 @@ extension ChatMessageFileAttachmentListView { didSet { updateContentIfNeeded() } } - /// Closure what should happen on tapping the given attachment. + /// Closure which notifies when the user tapped the attachment. open var didTapOnAttachment: ((ChatMessageFileAttachment) -> Void)? + /// Closure which notifies when the user tapped an attachment action. (Ex: Retry) + open var didTapActionOnAttachment: ((ChatMessageFileAttachment) -> Void)? + /// Label which shows name of the file, usually with extension (file.pdf) open private(set) lazy var fileNameLabel = UILabel() .withoutAutoresizingMaskConstraints @@ -62,7 +65,11 @@ extension ChatMessageFileAttachmentListView { super.setUp() let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapOnAttachment(_:))) - addGestureRecognizer(tapRecognizer) + mainContainerStackView.addGestureRecognizer(tapRecognizer) + + let actionTapRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapActionOnAttachment(_:))) + actionIconImageView.addGestureRecognizer(actionTapRecognizer) + actionIconImageView.isUserInteractionEnabled = true } override open func setUpAppearance() { @@ -140,6 +147,11 @@ extension ChatMessageFileAttachmentListView { didTapOnAttachment?(attachment) } + @objc open func didTapActionOnAttachment(_ recognizer: UITapGestureRecognizer) { + guard let attachment = content else { return } + didTapActionOnAttachment?(attachment) + } + private var fileIcon: UIImage? { guard let file = content?.payload.file else { return nil } diff --git a/Sources/StreamChatUI/ChatMessageList/Attachments/File/ChatMessageFileAttachmentListView.swift b/Sources/StreamChatUI/ChatMessageList/Attachments/File/ChatMessageFileAttachmentListView.swift index 0c1fe687950..7fe334513c8 100644 --- a/Sources/StreamChatUI/ChatMessageList/Attachments/File/ChatMessageFileAttachmentListView.swift +++ b/Sources/StreamChatUI/ChatMessageList/Attachments/File/ChatMessageFileAttachmentListView.swift @@ -12,9 +12,12 @@ open class ChatMessageFileAttachmentListView: _View, ComponentsProvider { didSet { updateContentIfNeeded() } } - /// Closure what should happen on tapping the given attachment. + /// Closure which notifies when the user tapped the attachment. open var didTapOnAttachment: ((ChatMessageFileAttachment) -> Void)? + /// Closure which notifies when the user tapped an attachment action. (Ex: Retry) + open var didTapActionOnAttachment: ((ChatMessageFileAttachment) -> Void)? + /// Container which holds one or multiple attachment views in self. open private(set) lazy var containerStackView: ContainerStackView = ContainerStackView() .withoutAutoresizingMaskConstraints @@ -35,6 +38,7 @@ open class ChatMessageFileAttachmentListView: _View, ComponentsProvider { content.forEach { attachment in let item = components.fileAttachmentView.init() item.didTapOnAttachment = { [weak self] in self?.didTapOnAttachment?($0) } + item.didTapActionOnAttachment = { [weak self] in self?.didTapActionOnAttachment?($0) } item.content = attachment containerStackView.addArrangedSubview(item) } diff --git a/Sources/StreamChatUI/ChatMessageList/Attachments/File/FileAttachmentViewInjector.swift b/Sources/StreamChatUI/ChatMessageList/Attachments/File/FileAttachmentViewInjector.swift index e2810f24f76..d781438924b 100644 --- a/Sources/StreamChatUI/ChatMessageList/Attachments/File/FileAttachmentViewInjector.swift +++ b/Sources/StreamChatUI/ChatMessageList/Attachments/File/FileAttachmentViewInjector.swift @@ -7,8 +7,11 @@ import UIKit /// The delegate used `FileAttachmentViewInjector` to communicate user interactions. public protocol FileActionContentViewDelegate: ChatMessageContentViewDelegate { - /// Called when the user taps on attachment action + /// Called when the user taps on the attachment. func didTapOnAttachment(_ attachment: ChatMessageFileAttachment, at indexPath: IndexPath?) + + /// Called when the user taps on the action of the attachment. (Ex: Retry) + func didTapActionOnAttachment(_ attachment: ChatMessageFileAttachment, at indexPath: IndexPath?) } public class FilesAttachmentViewInjector: AttachmentViewInjector { @@ -25,6 +28,13 @@ public class FilesAttachmentViewInjector: AttachmentViewInjector { delegate.didTapOnAttachment(attachment, at: self?.contentView.indexPath?()) } + attachmentListView.didTapActionOnAttachment = { [weak self] attachment in + guard + let delegate = self?.contentView.delegate as? FileActionContentViewDelegate + else { return } + delegate.didTapActionOnAttachment(attachment, at: self?.contentView.indexPath?()) + } + return attachmentListView.withoutAutoresizingMaskConstraints }() diff --git a/Sources/StreamChatUI/ChatMessageList/ChatMessageListVC.swift b/Sources/StreamChatUI/ChatMessageList/ChatMessageListVC.swift index d0f46a2d989..3157376687d 100644 --- a/Sources/StreamChatUI/ChatMessageList/ChatMessageListVC.swift +++ b/Sources/StreamChatUI/ChatMessageList/ChatMessageListVC.swift @@ -969,7 +969,7 @@ open class ChatMessageListVC: _ViewController, } } - // MARK: - Attachment Action Delegates + // MARK: - Link Action Delegates open func didTapOnLinkAttachment( _ attachment: ChatMessageLinkAttachment, @@ -978,6 +978,8 @@ open class ChatMessageListVC: _ViewController, router.showLinkPreview(link: attachment.url) } + // MARK: - File Action Delegates + open func didTapOnAttachment( _ attachment: ChatMessageFileAttachment, at indexPath: IndexPath? @@ -985,6 +987,17 @@ open class ChatMessageListVC: _ViewController, router.showFilePreview(fileURL: attachment.assetURL) } + open func didTapActionOnAttachment(_ attachment: ChatMessageFileAttachment, at indexPath: IndexPath?) { + switch attachment.uploadingState?.state { + case .uploadingFailed: + client + .messageController(cid: attachment.id.cid, messageId: attachment.id.messageId) + .restartFailedAttachmentUploading(with: attachment.id) + default: + break + } + } + /// Executes the provided action on the message open func didTapOnAttachmentAction( _ action: AttachmentAction, diff --git a/StreamChat.xcodeproj/project.pbxproj b/StreamChat.xcodeproj/project.pbxproj index 30c768968b1..c8968d5c18a 100644 --- a/StreamChat.xcodeproj/project.pbxproj +++ b/StreamChat.xcodeproj/project.pbxproj @@ -5654,7 +5654,6 @@ 8800A26E258A04D5006D64C4 /* ChatMessageAttachmentPreviewVC.swift */, 88BA7F86258B97C9006CE0C5 /* UploadingOverlayView.swift */, ADD4C0D92B30A71F00F230FF /* File */, - ADD4C0DD2B30A91900F230FF /* Unsupported */, ADD4C0D82B30A6E100F230FF /* Giphy */, ADD4C0DA2B30A78500F230FF /* VoiceRecording */, ADD4C0DB2B30A7B400F230FF /* Gallery */, diff --git a/Tests/StreamChatTests/Models/Attachments/AnyAttachmentPayload_Tests.swift b/Tests/StreamChatTests/Models/Attachments/AnyAttachmentPayload_Tests.swift index 4d131174551..61f49d75b3b 100644 --- a/Tests/StreamChatTests/Models/Attachments/AnyAttachmentPayload_Tests.swift +++ b/Tests/StreamChatTests/Models/Attachments/AnyAttachmentPayload_Tests.swift @@ -132,4 +132,40 @@ final class AnyAttachmentPayload_Tests: XCTestCase { XCTAssertEqual(sut.type, "custom") XCTAssertEqual(payload.calories, 20) } + + func test_toAnyAttachmentPayload_whenRemoteAttachment_thenLocalFileShouldBeNil() throws { + let remoteAttachment = ChatMessageImageAttachment( + id: .unique, + type: .image, + payload: .init(title: nil, imageRemoteURL: .localYodaImage), + uploadingState: nil + ).asAnyAttachment + + let anyAttachmentPayload = try XCTUnwrap(remoteAttachment.toAnyAttachmentPayload()) + XCTAssertNil(anyAttachmentPayload.localFileURL) + } + + func test_toAnyAttachmentPayload_whenLocalAttachment_whenUploaded_thenLocalFileShouldBeNil() throws { + let localAttachment = ChatMessageImageAttachment( + id: .unique, + type: .image, + payload: .init(title: nil, imageRemoteURL: .localYodaImage), + uploadingState: try .mock(localFileURL: .localYodaImage, state: .uploaded) + ).asAnyAttachment + + let anyAttachmentPayload = try XCTUnwrap(localAttachment.toAnyAttachmentPayload()) + XCTAssertNil(anyAttachmentPayload.localFileURL) + } + + func test_toAnyAttachmentPayload_whenLocalAttachment_whenNotUploaded_thenLocalFileExists() throws { + let localAttachment = ChatMessageImageAttachment( + id: .unique, + type: .image, + payload: .init(title: nil, imageRemoteURL: .localYodaImage), + uploadingState: try .mock(localFileURL: .localYodaImage, state: .uploadingFailed) + ).asAnyAttachment + + let anyAttachmentPayload = try XCTUnwrap(localAttachment.toAnyAttachmentPayload()) + XCTAssertEqual(anyAttachmentPayload.localFileURL, .localYodaImage) + } } diff --git a/Tests/StreamChatTests/Workers/Background/AttachmentQueueUploader_Tests.swift b/Tests/StreamChatTests/Workers/Background/AttachmentQueueUploader_Tests.swift index 4fe7bc5497c..3e9ad9d1f12 100644 --- a/Tests/StreamChatTests/Workers/Background/AttachmentQueueUploader_Tests.swift +++ b/Tests/StreamChatTests/Workers/Background/AttachmentQueueUploader_Tests.swift @@ -144,6 +144,211 @@ final class AttachmentQueueUploader_Tests: XCTestCase { } } + func test_uploader_whenAllAttachmentsFinishUploading_whenMessageSendingFailed_markMessagePendingSend() throws { + let cid: ChannelId = .unique + let messageId: MessageId = .unique + + // Create channel in the database. + try database.createChannel(cid: cid, withMessages: false) + // Create message in the database. + try database.createMessage(id: messageId, cid: cid, localState: .sendingFailed) + + var message: MessageDTO? { database.viewContext.message(id: messageId) } + + XCTAssertEqual(message?.localMessageState, .sendingFailed) + + // Create the successful attachments in the database + try database.writeSynchronously { session in + let attachment1 = try session.createNewAttachment( + attachment: .mockAudio, + id: .init(cid: cid, messageId: messageId, index: 1) + ) + let attachment2 = try session.createNewAttachment( + attachment: .mockAudio, + id: .init(cid: cid, messageId: messageId, index: 2) + ) + attachment1.localState = .uploaded + attachment2.localState = .uploaded + } + + let attachmentPayload: AnyAttachmentPayload = .mockImage + let attachmentId = AttachmentId(cid: cid, messageId: messageId, index: 1) + try database.writeSynchronously { session in + try session.createNewAttachment(attachment: attachmentPayload, id: attachmentId) + } + + // Load attachment from the database. + let attachment = try XCTUnwrap(database.viewContext.attachment(id: attachmentId)) + + // Assert attachment is in `.pendingUpload` state. + XCTAssertEqual(attachment.localState, .pendingUpload) + + // Wait attachment uploading begins. + let attachmentModelId = try XCTUnwrap(attachment.asAnyModel()).id + AssertAsync.willBeEqual( + apiClient.uploadFile_attachment?.id, + attachmentModelId + ) + + // Simulate successful backend response with remote file URL. + let response = UploadedAttachment.dummy(attachment: attachment.asAnyModel(), remoteURL: .fakeFile) + apiClient.uploadFile_completion?(.success(response)) + + AssertAsync { + Assert.willBeEqual(message?.localMessageState, .pendingSend) + } + } + + func test_uploader_whenAllAttachmentsFinishUploading_whenMessageNotSendingFailed_doNotMarkMessagePendingSend() throws { + let cid: ChannelId = .unique + let messageId: MessageId = .unique + + // Create channel in the database. + try database.createChannel(cid: cid, withMessages: false) + // Create message in the database. + try database.createMessage(id: messageId, cid: cid, localState: .pendingSync) + + var message: MessageDTO? { database.viewContext.message(id: messageId) } + + XCTAssertEqual(message?.localMessageState, .pendingSync) + + // Create the successful attachments in the database + try database.writeSynchronously { session in + let attachment1 = try session.createNewAttachment( + attachment: .mockAudio, + id: .init(cid: cid, messageId: messageId, index: 1) + ) + let attachment2 = try session.createNewAttachment( + attachment: .mockAudio, + id: .init(cid: cid, messageId: messageId, index: 2) + ) + attachment1.localState = .uploaded + attachment2.localState = .uploaded + } + + let attachmentPayload: AnyAttachmentPayload = .mockImage + let attachmentId = AttachmentId(cid: cid, messageId: messageId, index: 1) + try database.writeSynchronously { session in + try session.createNewAttachment(attachment: attachmentPayload, id: attachmentId) + } + + // Load attachment from the database. + let attachment = try XCTUnwrap(database.viewContext.attachment(id: attachmentId)) + + // Assert attachment is in `.pendingUpload` state. + XCTAssertEqual(attachment.localState, .pendingUpload) + + // Wait attachment uploading begins. + let attachmentModelId = try XCTUnwrap(attachment.asAnyModel()).id + AssertAsync.willBeEqual( + apiClient.uploadFile_attachment?.id, + attachmentModelId + ) + + // Simulate successful backend response with remote file URL. + let response = UploadedAttachment.dummy(attachment: attachment.asAnyModel(), remoteURL: .fakeFile) + apiClient.uploadFile_completion?(.success(response)) + + AssertAsync { + Assert.willBeEqual(message?.localMessageState, .pendingSync) + } + } + + func test_uploader_whenHasFailedAttachments_doNotMarkMessagePendingSend() throws { + let cid: ChannelId = .unique + let messageId: MessageId = .unique + + // Create channel in the database. + try database.createChannel(cid: cid, withMessages: false) + // Create message in the database. + try database.createMessage(id: messageId, cid: cid, localState: .sendingFailed) + + var message: MessageDTO? { database.viewContext.message(id: messageId) } + + XCTAssertEqual(message?.localMessageState, .sendingFailed) + + // Create the successful attachments in the database + try database.writeSynchronously { session in + let attachment1 = try session.createNewAttachment( + attachment: .mockAudio, + id: .init(cid: cid, messageId: messageId, index: 1) + ) + let attachment2 = try session.createNewAttachment( + attachment: .mockAudio, + id: .init(cid: cid, messageId: messageId, index: 2) + ) + attachment1.localState = .uploadingFailed + attachment2.localState = .uploaded + } + + let attachmentPayload: AnyAttachmentPayload = .mockImage + let attachmentId = AttachmentId(cid: cid, messageId: messageId, index: 1) + try database.writeSynchronously { session in + try session.createNewAttachment(attachment: attachmentPayload, id: attachmentId) + } + + // Load attachment from the database. + let attachment = try XCTUnwrap(database.viewContext.attachment(id: attachmentId)) + + // Assert attachment is in `.pendingUpload` state. + XCTAssertEqual(attachment.localState, .pendingUpload) + + // Wait attachment uploading begins. + let attachmentModelId = try XCTUnwrap(attachment.asAnyModel()).id + AssertAsync.willBeEqual( + apiClient.uploadFile_attachment?.id, + attachmentModelId + ) + + // Simulate successful backend response with remote file URL. + let response = UploadedAttachment.dummy(attachment: attachment.asAnyModel(), remoteURL: .fakeFile) + apiClient.uploadFile_completion?(.success(response)) + + AssertAsync { + Assert.willBeEqual(message?.localMessageState, .sendingFailed) + } + } + + func test_uploader_whenUploadFails_markMessageAsFailed() throws { + let cid: ChannelId = .unique + let messageId: MessageId = .unique + + // Create channel in the database. + try database.createChannel(cid: cid, withMessages: false) + // Create message in the database. + try database.createMessage(id: messageId, cid: cid, localState: .pendingSend) + + var message: MessageDTO? { database.viewContext.message(id: messageId) } + + XCTAssertEqual(message?.localMessageState, .pendingSend) + + let attachmentPayload: AnyAttachmentPayload = .mockImage + let attachmentId = AttachmentId(cid: cid, messageId: messageId, index: 1) + try database.writeSynchronously { session in + try session.createNewAttachment(attachment: attachmentPayload, id: attachmentId) + } + + // Load attachment from the database. + let attachment = try XCTUnwrap(database.viewContext.attachment(id: attachmentId)) + + // Assert attachment is in `.pendingUpload` state. + XCTAssertEqual(attachment.localState, .pendingUpload) + + // Wait attachment uploading begins. + let attachmentModelId = try XCTUnwrap(attachment.asAnyModel()).id + AssertAsync.willBeEqual( + apiClient.uploadFile_attachment?.id, + attachmentModelId + ) + + // Simulate error backend response + apiClient.uploadFile_completion?(.failure(ClientError("Upload failed"))) + + AssertAsync { + Assert.willBeEqual(message?.localMessageState, .sendingFailed) + } + } + func test_uploader_doesNotUploadAttachments_notInPendingUploadState() throws { let cid: ChannelId = .unique let messageId: MessageId = .unique @@ -267,8 +472,8 @@ final class AttachmentQueueUploader_Tests: XCTestCase { func test_attachmentsAreCopiedToSandbox_beforeBeingSent() throws { // GIVEN - let cid: ChannelId = .unique - let messageId: MessageId = .unique + let cid: ChannelId = .init(type: .messaging, id: "dummy") + let messageId: MessageId = "fake" let attachmentId: AttachmentId = .init(cid: cid, messageId: messageId, index: 0) let fileManager = FileManager.default @@ -304,7 +509,10 @@ final class AttachmentQueueUploader_Tests: XCTestCase { wait(for: [apiClient.uploadRequest_expectation], timeout: defaultTimeout) XCTAssertEqual(locallyStoredAttachments.count, 1) - XCTAssertEqual(locallyStoredAttachments.first?.lastPathComponent, fileName) + XCTAssertEqual( + locallyStoredAttachments.first?.lastPathComponent, + "Test-messaging:dummy-fake-0.txt" + ) XCTAssertEqual(attachmentDTO.localState, .pendingUpload) // Simulate attachment upload @@ -318,8 +526,8 @@ final class AttachmentQueueUploader_Tests: XCTestCase { func test_multipleAttachmentsAreCopiedToSandbox_onlySuccessfulOnesAreRemoved() throws { let fileManager = FileManager.default // GIVEN - let cid: ChannelId = .unique - let messageId: MessageId = .unique + let cid: ChannelId = .init(type: .messaging, id: "dummy") + let messageId: MessageId = "fake" let documentsURL = try XCTUnwrap(fileManager.urls(for: .documentDirectory, in: .userDomainMask).first) var locallyStoredAttachments: [URL] { @@ -383,7 +591,10 @@ final class AttachmentQueueUploader_Tests: XCTestCase { AssertAsync.willBeTrue(attachmentDTO2.localState == .uploaded) XCTAssertEqual(locallyStoredAttachments.count, 1) - XCTAssertEqual(locallyStoredAttachments.first?.lastPathComponent, fileName1) + XCTAssertEqual( + locallyStoredAttachments.first?.lastPathComponent, + "Test0-messaging:dummy-fake-0.txt" + ) } } diff --git a/Tests/StreamChatTests/Workers/MessageUpdater_Tests.swift b/Tests/StreamChatTests/Workers/MessageUpdater_Tests.swift index 513682376dd..3d1cc8adbd1 100644 --- a/Tests/StreamChatTests/Workers/MessageUpdater_Tests.swift +++ b/Tests/StreamChatTests/Workers/MessageUpdater_Tests.swift @@ -2241,6 +2241,60 @@ final class MessageUpdater_Tests: XCTestCase { XCTAssertEqual(message.localMessageState, .pendingSend) } + func test_resendMessage_whenSendingFailed_thenSetFailedAttachmentsToPendingUpload() throws { + let currentUserId: UserId = .unique + let messageId: MessageId = .unique + let cid: ChannelId = .unique + let attachmentId1 = AttachmentId(cid: cid, messageId: messageId, index: 1) + let attachmentId2 = AttachmentId(cid: cid, messageId: messageId, index: 2) + let attachmentId3 = AttachmentId(cid: cid, messageId: messageId, index: 3) + + // Create current user is the database + try database.createCurrentUser(id: currentUserId) + + // Create a new message in the database + try database.createMessage(id: messageId, authorId: currentUserId, cid: cid, localState: .sendingFailed) + + // Create failed attachments + try database.writeSynchronously { session in + let attachment1 = try session.saveAttachment( + payload: .audio(), + id: attachmentId1 + ) + let attachment2 = try session.saveAttachment( + payload: .audio(), + id: attachmentId2 + ) + let attachment3 = try session.saveAttachment( + payload: .audio(), + id: attachmentId3 + ) + + attachment1.localState = .uploadingFailed + attachment2.localState = .uploadingFailed + attachment3.localState = .uploaded + } + + // Resend failed message + let completionError = try waitFor { + messageUpdater.resendMessage(with: messageId, completion: $0) + } + + // Load the message + let message = try XCTUnwrap(database.viewContext.message(id: messageId)) + + // Assert completion is called without any error + XCTAssertNil(completionError) + + // Assert failed attachments resent + let attachment: (AttachmentId) -> AttachmentDTO? = { id in + message.attachments.first(where: { $0.attachmentID == id }) + } + XCTAssertEqual(attachment(attachmentId1)?.localState, .pendingUpload) + XCTAssertEqual(attachment(attachmentId2)?.localState, .pendingUpload) + XCTAssertEqual(attachment(attachmentId3)?.localState, .uploaded) + } + // MARK: - Dispatch ephemeral message action func test_dispatchEphemeralMessageAction_cancel_happyPath() throws { diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatFileAttachmentListView+ItemView_Tests/test_appearanceCustomization_usingAppearance.default-light.png b/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatFileAttachmentListView+ItemView_Tests/test_appearanceCustomization_usingAppearance.default-light.png index f16871db5a0ba870840f6341d0dea357d8279901..2cb9b989c0e34c60c7944e5b6f9c4dfc4726dd50 100644 GIT binary patch delta 5054 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 Z`M+|fg7epyB4z*p002ovPDHLkV1kqB()|Dc diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatFileAttachmentListView+ItemView_Tests/test_appearanceCustomization_usingSubclassing.default-light.png b/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatFileAttachmentListView+ItemView_Tests/test_appearanceCustomization_usingSubclassing.default-light.png index e227877661a14df96d59e4420a8a8eae89766351..d29fdff77701da79757a598378f55e3755ce56ba 100644 GIT binary patch literal 5545 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 literal 6089 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 literal 18444 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 ABme*a diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatMessageFileAttachmentListView_Tests/test_appearance_five_attachments.default-light.png b/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatMessageFileAttachmentListView_Tests/test_appearance_five_attachments.default-light.png index 0620893304e7ad925161b441e5a557cff95b65ca..b3ef57867611652ef995ee4bcd6e0e630f4537c5 100644 GIT binary patch literal 21854 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 U=J9=CcPWv&vW`;KL#v4Y1H>G%vj6}9 literal 24677 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 diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatMessageFileAttachmentListView_Tests/test_appearance_one_attachment.default-light.png b/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatMessageFileAttachmentListView_Tests/test_appearance_one_attachment.default-light.png index 8016bce00b944120fbfa04f19e58924d9ffaa025..ae3a8ede0f1264f1ee74b1b8770fe11456cf11c4 100644 GIT binary patch delta 5113 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 Hu0mjfZ{0po diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatMessageFileAttachmentListView_Tests/test_appearance_two_attachments.default-light.png b/Tests/StreamChatUITests/SnapshotTests/ChatMessageList/Attachments/__Snapshots__/ChatMessageFileAttachmentListView_Tests/test_appearance_two_attachments.default-light.png index 076bbb2255b3a04c16d4a098ab8d557ae99f25c2..077636e6c4b9e56537f5c7cd3b7be906f9bd488e 100644 GIT binary patch literal 9357 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