@@ -31,18 +31,7 @@ import com.infomaniak.mail.databinding.ItemMenuDrawerFolderBinding
31
31
import com.infomaniak.mail.databinding.ItemMenuDrawerFooterBinding
32
32
import com.infomaniak.mail.databinding.ItemMenuDrawerMailboxBinding
33
33
import com.infomaniak.mail.databinding.ItemMenuDrawerMailboxesHeaderBinding
34
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ItemType.DIVIDER_ITEM
35
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ItemType.EMPTY_CUSTOM_FOLDERS_ITEM
36
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ItemType.FOLDERS_HEADER_ITEM
37
34
import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.MenuDrawerViewHolder
38
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ViewType.DIVIDER_VIEW
39
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ViewType.EMPTY_FOLDERS_VIEW
40
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ViewType.FOLDERS_HEADER_VIEW
41
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ViewType.FOLDER_VIEW
42
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ViewType.FOOTER_VIEW
43
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ViewType.INVALID_MAILBOX_VIEW
44
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ViewType.MAILBOXES_HEADER_VIEW
45
- import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerAdapter.ViewType.MAILBOX_VIEW
46
35
import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerFragment.MediatorContainer
47
36
import com.infomaniak.mail.ui.main.menuDrawer.items.DividerItemViewHolder
48
37
import com.infomaniak.mail.ui.main.menuDrawer.items.EmptyFoldersViewHolder
@@ -95,7 +84,7 @@ class MenuDrawerAdapter @Inject constructor() : ListAdapter<Any, MenuDrawerViewH
95
84
if (areMailboxesExpanded) addAll(otherMailboxes)
96
85
97
86
// Default Folders
98
- add(DIVIDER_ITEM )
87
+ add(ItemType . DIVIDER )
99
88
while (count < allFolders.count() && (allFolders[count].role != null || ! allFolders[count].isRoot)) {
100
89
val defaultFolder = allFolders[count]
101
90
if (defaultFolder.canBeCollapsed) temporaryHasCollapsableDefaultFolder = true
@@ -104,11 +93,11 @@ class MenuDrawerAdapter @Inject constructor() : ListAdapter<Any, MenuDrawerViewH
104
93
}
105
94
106
95
// Custom Folders
107
- add(DIVIDER_ITEM )
108
- add(FOLDERS_HEADER_ITEM )
96
+ add(ItemType . DIVIDER )
97
+ add(ItemType . FOLDERS_HEADER )
109
98
if (areCustomFoldersExpanded) {
110
99
if (count == allFolders.count()) {
111
- add(EMPTY_CUSTOM_FOLDERS_ITEM )
100
+ add(ItemType . EMPTY_FOLDERS )
112
101
} else {
113
102
while (count < allFolders.count()) {
114
103
val customFolder = allFolders[count]
@@ -122,7 +111,7 @@ class MenuDrawerAdapter @Inject constructor() : ListAdapter<Any, MenuDrawerViewH
122
111
hasCollapsableCustomFolder = temporaryHasCollapsableCustomFolder
123
112
124
113
// Footer
125
- add(DIVIDER_ITEM )
114
+ add(ItemType . DIVIDER )
126
115
add(MenuDrawerFooter (permissions, quotas))
127
116
}
128
117
}
@@ -139,7 +128,7 @@ class MenuDrawerAdapter @Inject constructor() : ListAdapter<Any, MenuDrawerViewH
139
128
var newIsFound = false
140
129
for (index in currentList.indices) {
141
130
142
- if (getItemViewType(index) != FOLDER_VIEW .ordinal) continue
131
+ if (getItemViewType(index) != ItemType . FOLDER .ordinal) continue
143
132
144
133
val itemId = (currentList[index] as Folder ).id
145
134
if (itemId == oldId) {
@@ -159,13 +148,13 @@ class MenuDrawerAdapter @Inject constructor() : ListAdapter<Any, MenuDrawerViewH
159
148
160
149
override fun getItemViewType (position : Int ): Int = runCatchingRealm {
161
150
return @runCatchingRealm when (val item = currentList[position]) {
162
- DIVIDER_ITEM -> DIVIDER_VIEW .ordinal
163
- is MailboxesHeader -> MAILBOXES_HEADER_VIEW .ordinal
164
- is Mailbox -> if (item.isValid) MAILBOX_VIEW . ordinal else INVALID_MAILBOX_VIEW .ordinal
165
- FOLDERS_HEADER_ITEM -> FOLDERS_HEADER_VIEW .ordinal
166
- is Folder -> FOLDER_VIEW .ordinal
167
- EMPTY_CUSTOM_FOLDERS_ITEM -> EMPTY_FOLDERS_VIEW .ordinal
168
- is MenuDrawerFooter -> FOOTER_VIEW .ordinal
151
+ ItemType . DIVIDER -> ItemType . DIVIDER .ordinal
152
+ is MailboxesHeader -> ItemType . MAILBOXES_HEADER .ordinal
153
+ is Mailbox -> if (item.isValid) ItemType . MAILBOX . ordinal else ItemType . INVALID_MAILBOX .ordinal
154
+ ItemType . FOLDERS_HEADER -> ItemType . FOLDERS_HEADER .ordinal
155
+ is Folder -> ItemType . FOLDER .ordinal
156
+ ItemType . EMPTY_FOLDERS -> ItemType . EMPTY_FOLDERS .ordinal
157
+ is MenuDrawerFooter -> ItemType . FOOTER .ordinal
169
158
else -> error(" Failed to find a viewType for MenuDrawer item" )
170
159
}
171
160
}.getOrDefault(super .getItemViewType(position))
@@ -174,14 +163,14 @@ class MenuDrawerAdapter @Inject constructor() : ListAdapter<Any, MenuDrawerViewH
174
163
val inflater = LayoutInflater .from(parent.context)
175
164
176
165
return when (viewType) {
177
- DIVIDER_VIEW .ordinal -> DividerItemViewHolder (inflater, parent)
178
- MAILBOXES_HEADER_VIEW .ordinal -> MailboxesHeaderViewHolder (inflater, parent)
179
- MAILBOX_VIEW .ordinal -> MailboxViewHolder (inflater, parent)
180
- INVALID_MAILBOX_VIEW .ordinal -> InvalidMailboxViewHolder (inflater, parent)
181
- FOLDERS_HEADER_VIEW .ordinal -> FoldersHeaderViewHolder (inflater, parent)
182
- FOLDER_VIEW .ordinal -> FolderViewHolder (inflater, parent)
183
- EMPTY_FOLDERS_VIEW .ordinal -> EmptyFoldersViewHolder (inflater, parent)
184
- FOOTER_VIEW .ordinal -> FooterViewHolder (inflater, parent)
166
+ ItemType . DIVIDER .ordinal -> DividerItemViewHolder (inflater, parent)
167
+ ItemType . MAILBOXES_HEADER .ordinal -> MailboxesHeaderViewHolder (inflater, parent)
168
+ ItemType . MAILBOX .ordinal -> MailboxViewHolder (inflater, parent)
169
+ ItemType . INVALID_MAILBOX .ordinal -> InvalidMailboxViewHolder (inflater, parent)
170
+ ItemType . FOLDERS_HEADER .ordinal -> FoldersHeaderViewHolder (inflater, parent)
171
+ ItemType . FOLDER .ordinal -> FolderViewHolder (inflater, parent)
172
+ ItemType . EMPTY_FOLDERS .ordinal -> EmptyFoldersViewHolder (inflater, parent)
173
+ ItemType . FOOTER .ordinal -> FooterViewHolder (inflater, parent)
185
174
else -> error(" Failed to find a binding for MenuDrawer viewType" )
186
175
}
187
176
}
@@ -245,21 +234,15 @@ class MenuDrawerAdapter @Inject constructor() : ListAdapter<Any, MenuDrawerViewH
245
234
246
235
abstract class MenuDrawerViewHolder (val binding : ViewBinding ) : ViewHolder(binding.root)
247
236
248
- private enum class ItemType {
249
- DIVIDER_ITEM ,
250
- FOLDERS_HEADER_ITEM ,
251
- EMPTY_CUSTOM_FOLDERS_ITEM ,
252
- }
253
-
254
- enum class ViewType {
255
- DIVIDER_VIEW ,
256
- MAILBOXES_HEADER_VIEW ,
257
- MAILBOX_VIEW ,
258
- INVALID_MAILBOX_VIEW ,
259
- FOLDERS_HEADER_VIEW ,
260
- FOLDER_VIEW ,
261
- EMPTY_FOLDERS_VIEW ,
262
- FOOTER_VIEW ,
237
+ enum class ItemType {
238
+ DIVIDER ,
239
+ MAILBOXES_HEADER ,
240
+ MAILBOX ,
241
+ INVALID_MAILBOX ,
242
+ FOLDERS_HEADER ,
243
+ FOLDER ,
244
+ EMPTY_FOLDERS ,
245
+ FOOTER ,
263
246
}
264
247
265
248
private enum class NotifyType {
@@ -270,34 +253,34 @@ class MenuDrawerAdapter @Inject constructor() : ListAdapter<Any, MenuDrawerViewH
270
253
271
254
override fun areItemsTheSame (oldItem : Any , newItem : Any ) = runCatchingRealm {
272
255
when (oldItem) {
273
- DIVIDER_ITEM -> newItem == DIVIDER_ITEM
256
+ ItemType . DIVIDER -> newItem == ItemType . DIVIDER
274
257
is MailboxesHeader -> newItem is MailboxesHeader && newItem.mailbox?.objectId == oldItem.mailbox?.objectId
275
258
is Mailbox -> newItem is Mailbox && newItem.objectId == oldItem.objectId
276
- FOLDERS_HEADER_ITEM -> newItem == FOLDERS_HEADER_ITEM
259
+ ItemType . FOLDERS_HEADER -> newItem == ItemType . FOLDERS_HEADER
277
260
is Folder -> newItem is Folder && newItem.id == oldItem.id
278
- EMPTY_CUSTOM_FOLDERS_ITEM -> newItem == EMPTY_CUSTOM_FOLDERS_ITEM
261
+ ItemType . EMPTY_FOLDERS -> newItem == ItemType . EMPTY_FOLDERS
279
262
is MenuDrawerFooter -> newItem is MenuDrawerFooter
280
263
else -> error(" oldItem wasn't any known item type (in MenuDrawer `areItemsTheSame`)" )
281
264
}
282
265
}.getOrDefault(false )
283
266
284
267
override fun areContentsTheSame (oldItem : Any , newItem : Any ) = runCatchingRealm {
285
268
when (oldItem) {
286
- DIVIDER_ITEM -> true
269
+ ItemType . DIVIDER -> true
287
270
is MailboxesHeader -> newItem is MailboxesHeader
288
271
&& newItem.hasMoreThanOneMailbox == oldItem.hasMoreThanOneMailbox
289
272
&& newItem.isExpanded == oldItem.isExpanded
290
273
&& newItem.mailbox?.unreadCountDisplay?.count == oldItem.mailbox?.unreadCountDisplay?.count
291
274
is Mailbox -> newItem is Mailbox && newItem.unreadCountDisplay.count == oldItem.unreadCountDisplay.count
292
- FOLDERS_HEADER_ITEM -> true
275
+ ItemType . FOLDERS_HEADER -> true
293
276
is Folder -> newItem is Folder &&
294
277
newItem.name == oldItem.name &&
295
278
newItem.isFavorite == oldItem.isFavorite &&
296
279
newItem.path == oldItem.path &&
297
280
newItem.unreadCountDisplay == oldItem.unreadCountDisplay &&
298
281
newItem.threads.count() == oldItem.threads.count() &&
299
282
newItem.canBeCollapsed == oldItem.canBeCollapsed
300
- EMPTY_CUSTOM_FOLDERS_ITEM -> true
283
+ ItemType . EMPTY_FOLDERS -> true
301
284
is MenuDrawerFooter -> newItem is MenuDrawerFooter && newItem.quotas?.size == oldItem.quotas?.size
302
285
else -> error(" oldItem wasn't any known item type (in MenuDrawer `areContentsTheSame`)" )
303
286
}
0 commit comments