@@ -23,6 +23,7 @@ import android.content.Context
23
23
import androidx.annotation.DrawableRes
24
24
import androidx.annotation.StringRes
25
25
import com.infomaniak.lib.core.utils.Utils.enumValueOfOrNull
26
+ import com.infomaniak.lib.core.utils.removeAccents
26
27
import com.infomaniak.mail.R
27
28
import com.infomaniak.mail.data.models.message.Message
28
29
import com.infomaniak.mail.data.models.thread.Thread
@@ -43,7 +44,7 @@ import kotlinx.serialization.UseSerializers
43
44
import kotlin.math.max
44
45
45
46
@Serializable
46
- class Folder : RealmObject {
47
+ class Folder : RealmObject , Cloneable {
47
48
48
49
// region Remote data
49
50
@PrimaryKey
@@ -79,6 +80,10 @@ class Folder : RealmObject {
79
80
var isHidden: Boolean = false // For children only (a children Folder is hidden if its parent is collapsed)
80
81
@Transient
81
82
var isCollapsed: Boolean = false // For parents only (collapsing a parent Folder will hide its children)
83
+ @Transient
84
+ var roleOrder: Int = role?.order ? : CUSTOM_FOLDER_ROLE_ORDER
85
+ @Transient
86
+ var sortedName: String = name
82
87
// endregion
83
88
84
89
private val _parents by backlinks(Folder ::children)
@@ -99,6 +104,9 @@ class Folder : RealmObject {
99
104
val isRoot: Boolean
100
105
inline get() = ! path.contains(separator)
101
106
107
+ val isRootAndCustom: Boolean
108
+ inline get() = role == null && isRoot
109
+
102
110
fun initLocalValues (
103
111
lastUpdatedAt : RealmInstant ? ,
104
112
cursor : String? ,
@@ -120,6 +128,8 @@ class Folder : RealmObject {
120
128
this .isHistoryComplete = isHistoryComplete
121
129
this .isHidden = isHidden
122
130
this .isCollapsed = isCollapsed
131
+
132
+ this .sortedName = this .name.lowercase().removeAccents()
123
133
}
124
134
125
135
fun resetLocalValues () {
@@ -153,14 +163,14 @@ class Folder : RealmObject {
153
163
val order : Int ,
154
164
val matomoValue : String ,
155
165
) {
156
- INBOX (R .string.inboxFolder, R .drawable.ic_drawer_inbox, 0 , " inboxFolder" ),
166
+ INBOX (R .string.inboxFolder, R .drawable.ic_drawer_inbox, 8 , " inboxFolder" ),
167
+ COMMERCIAL (R .string.commercialFolder, R .drawable.ic_promotions, 7 , " commercialFolder" ),
168
+ SOCIALNETWORKS (R .string.socialNetworksFolder, R .drawable.ic_social_media, 6 , " socialNetworksFolder" ),
169
+ SENT (R .string.sentFolder, R .drawable.ic_sent_messages, 5 , " sentFolder" ),
157
170
DRAFT (R .string.draftFolder, R .drawable.ic_draft, 4 , " draftFolder" ),
158
- SENT (R .string.sentFolder, R .drawable.ic_sent_messages, 3 , " sentFolder" ),
159
- SPAM (R .string.spamFolder, R .drawable.ic_spam, 5 , " spamFolder" ),
160
- TRASH (R .string.trashFolder, R .drawable.ic_bin, 6 , " trashFolder" ),
161
- ARCHIVE (R .string.archiveFolder, R .drawable.ic_archive_folder, 7 , " archiveFolder" ),
162
- COMMERCIAL (R .string.commercialFolder, R .drawable.ic_promotions, 1 , " commercialFolder" ),
163
- SOCIALNETWORKS (R .string.socialNetworksFolder, R .drawable.ic_social_media, 2 , " socialNetworksFolder" ),
171
+ SPAM (R .string.spamFolder, R .drawable.ic_spam, 3 , " spamFolder" ),
172
+ TRASH (R .string.trashFolder, R .drawable.ic_bin, 2 , " trashFolder" ),
173
+ ARCHIVE (R .string.archiveFolder, R .drawable.ic_archive_folder, 1 , " archiveFolder" ),
164
174
}
165
175
166
176
companion object {
@@ -173,5 +183,6 @@ class Folder : RealmObject {
173
183
const val DEFAULT_IS_HISTORY_COMPLETE = false
174
184
175
185
const val INBOX_FOLDER_ID = " eJzz9HPyjwAABGYBgQ--"
186
+ private const val CUSTOM_FOLDER_ROLE_ORDER = 0
176
187
}
177
188
}
0 commit comments