Skip to content

Commit 2d613da

Browse files
Merge pull request #2030 from Infomaniak/no-Message-in-Thread
Add more info about supposed empty Thread in Sentry
2 parents 5ecba51 + 0a3d97e commit 2d613da

File tree

4 files changed

+26
-14
lines changed

4 files changed

+26
-14
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ class ThreadController @Inject constructor(
384384
// It's possibly because we are out of sync, and the situation will resolve by itself shortly?
385385
if (emptyThreads.isNotEmpty()) {
386386
emptyThreads.forEach {
387-
SentryDebug.sendEmptyThread(it, "No Message in a Thread when refreshing a Folder")
387+
SentryDebug.sendEmptyThread(it, "No Message in a Thread when refreshing a Folder", realm = this)
388388
}
389389
delete(emptyThreadsQuery)
390390
}

app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt

+7-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import com.infomaniak.mail.R
4949
import com.infomaniak.mail.data.LocalSettings
5050
import com.infomaniak.mail.data.LocalSettings.SwipeAction
5151
import com.infomaniak.mail.data.LocalSettings.ThreadDensity
52+
import com.infomaniak.mail.data.cache.RealmDatabase
5253
import com.infomaniak.mail.data.models.Folder.FolderRole
5354
import com.infomaniak.mail.data.models.correspondent.Recipient
5455
import com.infomaniak.mail.data.models.thread.Thread
@@ -74,6 +75,7 @@ import com.infomaniak.lib.core.R as RCore
7475
class ThreadListAdapter @Inject constructor(
7576
@ActivityContext context: Context,
7677
private val localSettings: LocalSettings,
78+
private val mailboxContentRealm: RealmDatabase.MailboxContent,
7779
) : DragDropSwipeAdapter<Any, ThreadListViewHolder>(mutableListOf()), RealmChangesBinding.OnRealmChanged<Thread> {
7880

7981
private var formatListJob: Job? = null
@@ -199,7 +201,11 @@ class ThreadListAdapter @Inject constructor(
199201
// TODO: Find why we are sometimes displaying empty Threads, and fix it instead of just deleting them.
200202
// It's possibly because we are out of sync, and the situation will resolve by itself shortly?
201203
callbacks?.deleteThreadInRealm?.invoke(thread.uid)
202-
SentryDebug.sendEmptyThread(thread, "No Message in the Thread when displaying it in ThreadList")
204+
SentryDebug.sendEmptyThread(
205+
thread = thread,
206+
message = "No Message in the Thread when displaying it in ThreadList",
207+
realm = mailboxContentRealm(),
208+
)
203209
return
204210
}
205211

app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadViewModel.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ class ThreadViewModel @Inject constructor(
280280
appContext.trackUserInfo("nbMessagesInThread", nbMessages)
281281

282282
when (nbMessages) {
283-
0 -> SentryDebug.sendEmptyThread(thread, "No Message in the Thread when opening it")
283+
0 -> SentryDebug.sendEmptyThread(thread, "No Message in the Thread when opening it", mailboxContentRealm())
284284
1 -> appContext.trackUserInfo("oneMessagesInThread")
285285
else -> appContext.trackUserInfo("multipleMessagesInThread", nbMessages)
286286
}

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

+17-11
Original file line numberDiff line numberDiff line change
@@ -172,18 +172,24 @@ object SentryDebug {
172172
// If this doesn't trigger after a certain amount of time, you can remove it.
173173
//
174174
// Also added in ThreadListAdapter & ThreadController the 04/06/24.
175-
fun sendEmptyThread(thread: Thread, message: String) = with(thread) {
175+
fun sendEmptyThread(thread: Thread, message: String, realm: TypedRealm) = with(thread) {
176+
177+
val messageFromThreadUid = MessageController.getMessage(uid, realm)
178+
176179
Sentry.captureMessage(message, SentryLevel.ERROR) { scope ->
177-
scope.setExtra("currentUserId", "${AccountUtils.currentUserId}")
178-
scope.setExtra("currentMailboxEmail", AccountUtils.currentMailboxEmail.toString())
179-
scope.setExtra("folderId", folderId)
180-
scope.setExtra("folder.id", folder.id)
181-
scope.setExtra("folder.role", folder.role?.name.toString())
182-
scope.setExtra("uid", uid)
183-
scope.setExtra("messages.count", "${messages.count()}")
184-
scope.setExtra("duplicates.count", "${duplicates.count()}")
185-
scope.setExtra("isFromSearch", "$isFromSearch")
186-
scope.setExtra("hasDrafts", "$hasDrafts")
180+
scope.setExtra("01. currentUserId", "${AccountUtils.currentUserId}")
181+
scope.setExtra("02. currentMailboxEmail", AccountUtils.currentMailboxEmail.toString())
182+
scope.setExtra("03. folderId", folderId)
183+
scope.setExtra("04. folder.id", folder.id)
184+
scope.setExtra("05. folder.role", folder.role?.name.toString())
185+
scope.setExtra("06. thread.uid", uid)
186+
scope.setExtra("07. thread.messages.count", "${messages.count()}")
187+
scope.setExtra("08. thread.duplicates.count", "${duplicates.count()}")
188+
scope.setExtra("09. thread.isFromSearch", "$isFromSearch")
189+
scope.setExtra("10. thread.hasDrafts", "$hasDrafts")
190+
scope.setExtra("11. message.uid", "${messageFromThreadUid?.uid}")
191+
scope.setExtra("12. message.folderId", "${messageFromThreadUid?.folderId}")
192+
scope.setExtra("13. message.folder.id", "${messageFromThreadUid?.folder?.id}")
187193
}
188194
}
189195

0 commit comments

Comments
 (0)