Skip to content

Commit a0d590d

Browse files
Add step in Breadcrumbs to know where we are
1 parent 34d9c1d commit a0d590d

File tree

7 files changed

+25
-16
lines changed

7 files changed

+25
-16
lines changed

app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/DraftController.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class DraftController @Inject constructor(
101101
resource = previousMessage.attachments.find { it.name == name }?.resource
102102
setUploadStatus(UploadStatus.FINISHED)
103103
}
104-
SentryDebug.addAttachmentsBreadcrumb(draft)
104+
SentryDebug.addAttachmentsBreadcrumb(draft, step = "set previousMessage when reply/replyAll/Forward")
105105
}
106106

107107
draft.uiQuote = replyForwardFooterManager.createForwardFooter(previousMessage, draft.attachments)

app/src/main/java/com/infomaniak/mail/data/models/Attachment.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ class Attachment : EmbeddedRealmObject, Attachable {
8585
fun backupLocalData(oldAttachment: Attachment, uploadStatus: UploadStatus, draft: Draft) {
8686
localUuid = oldAttachment.localUuid
8787
uploadLocalUri = oldAttachment.uploadLocalUri
88-
setUploadStatus(uploadStatus, draft)
88+
setUploadStatus(uploadStatus, draft, "backupLocalData -> setUploadStatus")
8989
}
9090

91-
fun setUploadStatus(uploadStatus: UploadStatus, draft: Draft? = null) {
92-
draft?.let(SentryDebug::addAttachmentsBreadcrumb)
91+
fun setUploadStatus(uploadStatus: UploadStatus, draft: Draft? = null, step: String = "") {
92+
draft?.let { SentryDebug.addAttachmentsBreadcrumb(it, step) }
9393
_uploadStatus = uploadStatus.name
9494
}
9595

app/src/main/java/com/infomaniak/mail/ui/newMessage/NewMessageViewModel.kt

+13-5
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ class NewMessageViewModel @Inject constructor(
340340

341341
if (mailToUri != null) handleMailTo(draft, mailToUri)
342342

343-
SentryDebug.addAttachmentsBreadcrumb(draft)
343+
SentryDebug.addAttachmentsBreadcrumb(draft, step = "populate Draft with external mail data")
344344
}
345345

346346
private fun Draft.flagRecipientsAsAutomaticallyEntered() {
@@ -749,7 +749,12 @@ class NewMessageViewModel @Inject constructor(
749749
fun uploadAttachmentsToServer(uiAttachments: List<Attachment>) = viewModelScope.launch(ioDispatcher) {
750750
val localUuid = draftLocalUuid ?: return@launch
751751
val localDraft = mailboxContentRealm().writeBlocking {
752-
DraftController.getDraft(localUuid, realm = this)?.also { it.updateDraftAttachmentsWithLiveData(uiAttachments) }
752+
DraftController.getDraft(localUuid, realm = this)?.also {
753+
it.updateDraftAttachmentsWithLiveData(
754+
uiAttachments = uiAttachments,
755+
step = "observeAttachments -> uploadAttachmentsToServer",
756+
)
757+
}
753758
} ?: return@launch
754759

755760
runCatching {
@@ -815,7 +820,10 @@ class NewMessageViewModel @Inject constructor(
815820
cc = ccLiveData.valueOrEmpty().toRealmList()
816821
bcc = bccLiveData.valueOrEmpty().toRealmList()
817822

818-
updateDraftAttachmentsWithLiveData(attachmentsLiveData.valueOrEmpty())
823+
updateDraftAttachmentsWithLiveData(
824+
uiAttachments = attachmentsLiveData.valueOrEmpty(),
825+
step = "executeDraftActionWhenStopping (action = ${draftAction.name}) -> updateDraftFromLiveData",
826+
)
819827

820828
subject = subjectValue
821829

@@ -850,7 +858,7 @@ class NewMessageViewModel @Inject constructor(
850858
}
851859
}
852860

853-
private fun Draft.updateDraftAttachmentsWithLiveData(uiAttachments: List<Attachment>) {
861+
private fun Draft.updateDraftAttachmentsWithLiveData(uiAttachments: List<Attachment>, step: String) {
854862

855863
/**
856864
* If :
@@ -885,7 +893,7 @@ class NewMessageViewModel @Inject constructor(
885893
addAll(updatedAttachments)
886894
}
887895

888-
SentryDebug.addAttachmentsBreadcrumb(draft = this)
896+
SentryDebug.addAttachmentsBreadcrumb(draft = this, step)
889897
}
890898

891899
private fun Draft.getWholeBody(): String = uiBody.textToHtml() + (uiSignature ?: "") + (uiQuote ?: "")

app/src/main/java/com/infomaniak/mail/utils/DraftUtils.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ private suspend fun Draft.uploadAttachments(mailbox: Mailbox, draftController: D
4949

5050
fun getAwaitingAttachments(): List<Attachment> = attachments.filter { it.uploadStatus == UploadStatus.AWAITING }
5151

52-
fun setUploadStatus(attachment: Attachment, uploadStatus: UploadStatus) {
52+
fun setUploadStatus(attachment: Attachment, uploadStatus: UploadStatus, step :String) {
5353
realm.writeBlocking {
5454
draftController.updateDraft(localUuid, realm = this) {
55-
it.attachments.findSpecificAttachment(attachment)?.setUploadStatus(uploadStatus, draft = it)
55+
it.attachments.findSpecificAttachment(attachment)?.setUploadStatus(uploadStatus, draft = it, step)
5656
}
5757
}
5858
}
@@ -69,10 +69,10 @@ private suspend fun Draft.uploadAttachments(mailbox: Mailbox, draftController: D
6969

7070
attachmentsToUpload.forEach { attachment ->
7171
runCatching {
72-
setUploadStatus(attachment, UploadStatus.ONGOING)
72+
setUploadStatus(attachment, UploadStatus.ONGOING, step = "before starting upload")
7373
attachment.startUpload(localUuid, mailbox, draftController, realm)
7474
}.onFailure { exception ->
75-
setUploadStatus(attachment, UploadStatus.AWAITING)
75+
setUploadStatus(attachment, UploadStatus.AWAITING, step = "after failing upload")
7676
SentryLog.d(ATTACHMENT_TAG, "${exception.message}", exception)
7777
if ((exception as Exception).isNetworkException()) throw ApiController.NetworkException()
7878
throw exception

app/src/main/java/com/infomaniak/mail/utils/SentryDebug.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ object SentryDebug {
104104
)
105105
}
106106

107-
fun addAttachmentsBreadcrumb(draft: Draft) = with(draft) {
107+
fun addAttachmentsBreadcrumb(draft: Draft, step: String) = with(draft) {
108108

109109
var count = 1
110110
val data = mutableMapOf<String, Any>()
@@ -114,6 +114,7 @@ object SentryDebug {
114114
fun count(): String = "${count.countPad().also { count++ }}."
115115
fun format(index: Int): String = (index + 1).countPad()
116116

117+
data[count() + "step".keyPad()] = step
117118
data[count() + "email".keyPad()] = AccountUtils.currentMailboxEmail.toString()
118119

119120
data[count() + "draft".keyPad() + " - localUuid"] = localUuid

app/src/main/java/com/infomaniak/mail/utils/extensions/AttachmentExtensions.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ object AttachmentExtensions {
201201
add(remoteAttachment)
202202
}
203203

204-
SentryDebug.addAttachmentsBreadcrumb(draft)
204+
SentryDebug.addAttachmentsBreadcrumb(draft, step = "update local Attachment after success upload")
205205
}
206206
}
207207
}

app/src/main/java/com/infomaniak/mail/workers/DraftsActionsWorker.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ class DraftsActionsWorker @AssistedInject constructor(
302302
var scheduledDate: String? = null
303303
var savedDraftUuid: String? = null
304304

305-
SentryDebug.addAttachmentsBreadcrumb(draft)
305+
SentryDebug.addAttachmentsBreadcrumb(draft, step = "executeDraftAction (action = ${draft.action?.name.toString()})")
306306

307307
// TODO: Remove this whole `draft.attachments.any { … }` + `addAttachmentsBreadcrumb()` when the Attachments issue is fixed.
308308
if (draft.attachments.any { it.uploadStatus != UploadStatus.FINISHED }) {

0 commit comments

Comments
 (0)