From e1da4b384fc5a6180d93bc1cc133bc90de8529b1 Mon Sep 17 00:00:00 2001 From: denbond7 Date: Wed, 16 Apr 2025 17:27:37 +0300 Subject: [PATCH 1/2] Sort labels to show INBOX first.| #3002 --- .../email/database/entity/MessageEntity.kt | 10 ++++- .../database/entity/MessageEntityTest.kt | 44 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 FlowCrypt/src/test/java/com/flowcrypt/email/database/entity/MessageEntityTest.kt diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/database/entity/MessageEntity.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/database/entity/MessageEntity.kt index 2b08ccb1f9..ce2c52ebcd 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/database/entity/MessageEntity.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/database/entity/MessageEntity.kt @@ -794,7 +794,15 @@ data class MessageEntity( ?: entity.alias.orEmpty() GmailApiLabelsListAdapter.Label(name, entity.labelColor, entity.textColor) } - }.sortedBy { it.name.lowercase() } + }.sortedWith { labelOne, labelTwo -> + val one = labelOne.name.lowercase() + val two = labelTwo.name.lowercase() + if (two.equals(JavaEmailConstants.FOLDER_INBOX, true)) { + 1 + } else { + one.compareTo(two) + } + } } } } diff --git a/FlowCrypt/src/test/java/com/flowcrypt/email/database/entity/MessageEntityTest.kt b/FlowCrypt/src/test/java/com/flowcrypt/email/database/entity/MessageEntityTest.kt new file mode 100644 index 0000000000..92db6e2702 --- /dev/null +++ b/FlowCrypt/src/test/java/com/flowcrypt/email/database/entity/MessageEntityTest.kt @@ -0,0 +1,44 @@ +/* + * © 2016-present FlowCrypt a.s. Limitations apply. Contact human@flowcrypt.com + * Contributors: denbond7 + */ + +package com.flowcrypt.email.database.entity + +import com.flowcrypt.email.database.entity.LabelEntity.LabelListVisibility +import org.junit.Assert.assertEquals +import org.junit.Test + +/** + * @author Denys Bondarenko + */ +class MessageEntityTest { + @Test + fun generateColoredLabelsCorrectInboxPositionTest() { + val labelIds = (1..5).map { + "Some_Name_$it" + }.shuffled().toMutableList().apply { + add("INBOX") + } + + val labelEntities = labelIds.map { + LabelEntity( + email = "email", + accountType = "accountType", + name = it, + isCustom = true, + alias = it, + messagesTotal = 0, + attributes = "", + labelColor = "labelColor", + textColor = "textColor", + labelListVisibility = LabelListVisibility.SHOW, + ) + } + val labels = MessageEntity.generateColoredLabels( + labelIds, + labelEntities + ) + assertEquals("Inbox", labels.first().name) + } +} \ No newline at end of file From f1e2f43b2c13d881038d5627547d4023af6a9206 Mon Sep 17 00:00:00 2001 From: denbond7 Date: Thu, 17 Apr 2025 09:00:42 +0300 Subject: [PATCH 2/2] Refactored code --- .../email/database/entity/MessageEntity.kt | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/database/entity/MessageEntity.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/database/entity/MessageEntity.kt index ce2c52ebcd..1501861c08 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/database/entity/MessageEntity.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/database/entity/MessageEntity.kt @@ -794,15 +794,11 @@ data class MessageEntity( ?: entity.alias.orEmpty() GmailApiLabelsListAdapter.Label(name, entity.labelColor, entity.textColor) } - }.sortedWith { labelOne, labelTwo -> - val one = labelOne.name.lowercase() - val two = labelTwo.name.lowercase() - if (two.equals(JavaEmailConstants.FOLDER_INBOX, true)) { - 1 - } else { - one.compareTo(two) - } - } + }.sortedWith(compareByDescending { + it.name.equals(JavaEmailConstants.FOLDER_INBOX, ignoreCase = true) + }.thenBy { + it.name.lowercase() + }) } } }