@@ -88,7 +88,7 @@ class ThreadViewModel @Inject constructor(
88
88
89
89
var shouldMarkThreadAsSeen: Boolean = false
90
90
91
- var block : SuperCollapsedBlock ? = null
91
+ var superCollapsedBlock : SuperCollapsedBlock ? = null
92
92
93
93
private val mailbox by lazy { mailboxController.getMailbox(AccountUtils .currentUserId, AccountUtils .currentMailboxId)!! }
94
94
@@ -100,7 +100,7 @@ class ThreadViewModel @Inject constructor(
100
100
fun resetMessagesCache () {
101
101
cachedSplitBodies = mutableMapOf ()
102
102
shouldMarkThreadAsSeen = false
103
- block = null
103
+ superCollapsedBlock = null
104
104
}
105
105
106
106
fun reassignThreadLive (threadUid : String ) {
@@ -124,13 +124,13 @@ class ThreadViewModel @Inject constructor(
124
124
threadUid : String ,
125
125
): Pair <ThreadAdapterItems , MessagesWithoutHeavyData > {
126
126
127
- if (block == null ) block = SuperCollapsedBlock ()
127
+ if (superCollapsedBlock == null ) superCollapsedBlock = SuperCollapsedBlock ()
128
128
129
129
val items = mutableListOf<Any >()
130
130
val messagesToFetch = mutableListOf<Message >()
131
131
val thread = messages.firstOrNull()?.threads?.firstOrNull { it.uid == threadUid } ? : return items to messagesToFetch
132
132
val firstIndexAfterBlock = computeFirstIndexAfterBlock(thread, messages)
133
- block !! .shouldBeDisplayed = shouldBlockBeDisplayed(messages.count(), firstIndexAfterBlock)
133
+ superCollapsedBlock !! .shouldBeDisplayed = shouldBlockBeDisplayed(messages.count(), firstIndexAfterBlock)
134
134
135
135
suspend fun addMessage (message : Message ) {
136
136
splitBody(message).let {
@@ -142,34 +142,46 @@ class ThreadViewModel @Inject constructor(
142
142
suspend fun mapListWithNewBlock () {
143
143
messages.forEachIndexed { index, message ->
144
144
when (index) {
145
- 0 -> addMessage(message) // First Message
146
- in 1 .. < firstIndexAfterBlock -> block!! .messagesUids.add(message.uid) // All Messages that should go in block
145
+ 0 -> { // First Message
146
+ addMessage(message)
147
+ }
148
+ in 1 .. < firstIndexAfterBlock -> { // All Messages that should go in block
149
+ superCollapsedBlock!! .messagesUids.add(message.uid)
150
+ }
147
151
firstIndexAfterBlock -> { // First Message not in block
148
- items + = block !!
152
+ items + = superCollapsedBlock !!
149
153
addMessage(message.apply { shouldHideDivider = true })
150
154
}
151
- else -> addMessage(message) // All following Messages
155
+ else -> { // All following Messages
156
+ addMessage(message)
157
+ }
152
158
}
153
159
}
154
160
}
155
161
156
162
suspend fun mapListWithExistingBlock () {
157
163
158
164
var isStillInBlock = true
159
- val previousBlock = block !! .messagesUids.toSet()
165
+ val previousBlock = superCollapsedBlock !! .messagesUids.toSet()
160
166
161
- block !! .messagesUids.clear()
167
+ superCollapsedBlock !! .messagesUids.clear()
162
168
163
169
messages.forEachIndexed { index, message ->
164
170
when {
165
- index == 0 -> addMessage(message) // First Message
166
- previousBlock.contains(message.uid) && isStillInBlock -> block!! .messagesUids.add(message.uid) // All Messages already in block
171
+ index == 0 -> { // First Message
172
+ addMessage(message)
173
+ }
174
+ previousBlock.contains(message.uid) && isStillInBlock -> { // All Messages already in block
175
+ superCollapsedBlock!! .messagesUids.add(message.uid)
176
+ }
167
177
! previousBlock.contains(message.uid) && isStillInBlock -> { // First Message not in block
168
178
isStillInBlock = false
169
- items + = block !!
179
+ items + = superCollapsedBlock !!
170
180
addMessage(message.apply { shouldHideDivider = true })
171
181
}
172
- else -> addMessage(message) // All following Messages
182
+ else -> { // All following Messages
183
+ addMessage(message)
184
+ }
173
185
}
174
186
}
175
187
}
@@ -178,8 +190,8 @@ class ThreadViewModel @Inject constructor(
178
190
messages.forEach { addMessage(it) }
179
191
}
180
192
181
- if (block !! .shouldBeDisplayed) {
182
- if (block !! .isFirstTime()) mapListWithNewBlock() else mapListWithExistingBlock()
193
+ if (superCollapsedBlock !! .shouldBeDisplayed) {
194
+ if (superCollapsedBlock !! .isFirstTime()) mapListWithNewBlock() else mapListWithExistingBlock()
183
195
} else {
184
196
mapFullList()
185
197
}
@@ -205,8 +217,8 @@ class ThreadViewModel @Inject constructor(
205
217
*/
206
218
private fun shouldBlockBeDisplayed (messagesCount : Int , firstIndexAfterBlock : Int ): Boolean {
207
219
208
- return block ?.shouldBeDisplayed == true && // If the Block was hidden for any reason, we mustn't ever display it again
209
- block ?.hasBeenClicked == false && // Block hasn't been expanded by the user
220
+ return superCollapsedBlock ?.shouldBeDisplayed == true && // If the Block was hidden for any reason, we mustn't ever display it again
221
+ superCollapsedBlock ?.hasBeenClicked == false && // Block hasn't been expanded by the user
210
222
messagesCount >= SUPER_COLLAPSED_BLOCK_MINIMUM_MESSAGES_LIMIT && // At least 5 Messages in the Thread
211
223
firstIndexAfterBlock >= SUPER_COLLAPSED_BLOCK_FIRST_INDEX_LIMIT // At least 2 Messages in the Block
212
224
}
0 commit comments