Skip to content

Commit

Permalink
fix: Only fetch message body if expanded + fetch calendar event in pa…
Browse files Browse the repository at this point in the history
…rallel (#1473)
  • Loading branch information
valentinperignon committed Jul 1, 2024
2 parents 222ca8a + 3aed948 commit 582a1a1
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 10 deletions.
29 changes: 22 additions & 7 deletions Mail/Views/Thread/Message/MessageView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -102,10 +102,10 @@ struct MessageView: View {
prepareBodyIfNeeded()
}
.task {
if message.shouldComplete {
await fetchMessage()
}
try? await fetchEventCalendar()
await fetchMessageAndEventCalendar()
}
.task(id: isMessageExpanded) {
await fetchMessageAndEventCalendar()
}
.onDisappear {
inlineAttachmentWorker?.stop()
Expand All @@ -127,21 +127,36 @@ struct MessageView: View {
}
}

@MainActor private func fetchMessage() async {
private func fetchMessageAndEventCalendar() async {
guard isMessageExpanded else { return }

async let fetchMessageResult: Void = fetchMessage()

async let fetchEventCalendar: Void = fetchEventCalendar()

await fetchMessageResult
await fetchEventCalendar
}

private func fetchMessage() async {
guard message.shouldComplete else { return }

await tryOrDisplayError {
do {
try await mailboxManager.message(message: message)
} catch let error as MailApiError where error == .apiMessageNotFound {
snackbarPresenter.show(message: error.errorDescription ?? "")
try await mailboxManager.refreshFolder(from: [message], additionalFolder: nil)
} catch let error as AFErrorWithContext where error.afError.isExplicitlyCancelledError {
isShowingErrorLoading = false
} catch {
isShowingErrorLoading = true
}
}
}

private func fetchEventCalendar() async throws {
try await mailboxManager.calendarEvent(from: message.uid)
private func fetchEventCalendar() async {
try? await mailboxManager.calendarEvent(from: message.uid)
}
}

Expand Down
6 changes: 3 additions & 3 deletions MailCore/API/MailError.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ import MailResources

extension ApiError: CustomStringConvertible {}

class AFErrorWithContext: MailError {
let request: DataRequest
let afError: AFError
public class AFErrorWithContext: MailError {
public let request: DataRequest
public let afError: AFError

init(request: DataRequest, afError: AFError) {
self.request = request
Expand Down

0 comments on commit 582a1a1

Please sign in to comment.