Skip to content

Commit cc80d26

Browse files
Merge pull request #1728 from Infomaniak/prepare-code
Clean code before optimizing ThreadState handling
2 parents 151efd4 + 340cbb5 commit cc80d26

File tree

9 files changed

+22
-27
lines changed

9 files changed

+22
-27
lines changed

app/src/main/java/com/infomaniak/mail/data/models/message/Message.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import com.infomaniak.mail.data.models.correspondent.Recipient
3131
import com.infomaniak.mail.data.models.getMessages.ActivitiesResult.MessageFlags
3232
import com.infomaniak.mail.data.models.thread.Thread
3333
import com.infomaniak.mail.utils.AccountUtils
34-
import com.infomaniak.mail.utils.MessageBodyUtils
34+
import com.infomaniak.mail.utils.MessageBodyUtils.SplitBody
3535
import com.infomaniak.mail.utils.extensions.toRealmInstant
3636
import com.infomaniak.mail.utils.extensions.toShortUid
3737
import io.realm.kotlin.ext.*
@@ -143,7 +143,7 @@ class Message : RealmObject {
143143
// correctly, as the relationship between Body and Message relies on a Realm query.
144144
@Transient
145145
@Ignore
146-
var splitBody: MessageBodyUtils.SplitBody? = null
146+
var splitBody: SplitBody? = null
147147
@Transient
148148
@Ignore
149149
var shouldHideDivider: Boolean = false

app/src/main/java/com/infomaniak/mail/ui/MainActivity.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class MainActivity : BaseActivity() {
103103
}
104104

105105
private val showSendingSnackbarTimer: CountDownTimer by lazy {
106-
Utils.createRefreshTimer(1_000L) { snackbarManager.setValue(getString(R.string.snackbarEmailSending)) }
106+
Utils.createRefreshTimer(milliseconds = 1_000L) { snackbarManager.setValue(getString(R.string.snackbarEmailSending)) }
107107
}
108108

109109
private val newMessageActivityResultLauncher = registerForActivityResult(StartActivityForResult()) { result ->

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ class ThreadListFragment : TwoPaneFragment(), SwipeRefreshLayout.OnRefreshListen
191191
}
192192

193193
// If we are coming from a Notification, we need to navigate to ThreadFragment.
194-
openThreadAndResetBackup(threadUid)
194+
openThreadAndResetItsState(threadUid)
195195
}
196196
}
197197

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,12 @@ abstract class TwoPaneFragment : Fragment() {
138138
trackNewMessageEvent(OPEN_FROM_DRAFT_NAME)
139139
twoPaneViewModel.openDraft(thread)
140140
} else {
141-
openThreadAndResetBackup(thread.uid)
141+
openThreadAndResetItsState(thread.uid)
142142
}
143143
}
144144

145-
fun openThreadAndResetBackup(threadUid: String) {
146-
getRightPane()?.getFragment<ThreadFragment?>()?.resetThreadBackupCache()
145+
fun openThreadAndResetItsState(threadUid: String) {
146+
getRightPane()?.getFragment<ThreadFragment?>()?.resetThreadState()
147147
twoPaneViewModel.openThread(threadUid)
148148
}
149149

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

+1
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ class ThreadAdapter(
204204
}
205205

206206
private fun MessageViewHolder.bindCalendarEvent(message: Message) {
207+
207208
val calendarAttachment = message.calendarAttachment ?: return
208209
val calendarEvent = message.latestCalendarEventResponse?.calendarEvent
209210

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

+13-10
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,11 @@ class ThreadFragment : Fragment() {
163163
_binding = null
164164
}
165165

166-
fun resetThreadBackupCache() {
167-
threadViewModel.resetThreadBackupCache()
166+
fun resetThreadState() = with(threadViewModel) {
167+
isExpandedMap = mutableMapOf()
168+
isThemeTheSameMap = mutableMapOf()
169+
hasSuperCollapsedBlockBeenClicked = false
170+
verticalScroll = null
168171
}
169172

170173
private fun setupUi() = with(binding) {
@@ -205,11 +208,11 @@ class ThreadFragment : Fragment() {
205208
}
206209
}
207210

208-
private fun setupAdapter() = with(binding.messagesList) {
211+
private fun setupAdapter() = with(threadViewModel) {
209212

210-
adapter = ThreadAdapter(
213+
binding.messagesList.adapter = ThreadAdapter(
211214
shouldLoadDistantResources = shouldLoadDistantResources(),
212-
isCalendarEventExpandedMap = threadViewModel.isCalendarEventExpandedMap,
215+
isCalendarEventExpandedMap = isCalendarEventExpandedMap,
213216
threadAdapterState = object : ThreadAdapterState {
214217
override var isExpandedMap by threadViewModel::isExpandedMap
215218
override var isThemeTheSameMap by threadViewModel::isThemeTheSameMap
@@ -234,7 +237,7 @@ class ThreadFragment : Fragment() {
234237
},
235238
onDeleteDraftClicked = { message ->
236239
trackMessageActionsEvent("deleteDraft")
237-
mainViewModel.currentMailbox.value?.let { mailbox -> threadViewModel.deleteDraft(message, mailbox) }
240+
mainViewModel.currentMailbox.value?.let { mailbox -> deleteDraft(message, mailbox) }
238241
},
239242
onAttachmentClicked = {
240243
trackAttachmentActionsEvent("open")
@@ -276,13 +279,13 @@ class ThreadFragment : Fragment() {
276279
navigateToDownloadProgressDialog(attachment, attachmentIntentType, ThreadFragment::class.java.name)
277280
},
278281
replyToCalendarEvent = { attendanceState, message ->
279-
threadViewModel.replyToCalendarEvent(
282+
replyToCalendarEvent(
280283
attendanceState,
281284
message,
282285
).observe(viewLifecycleOwner) { successfullyUpdated ->
283286
if (successfullyUpdated) {
284287
snackbarManager.setValue(getString(R.string.snackbarCalendarChoiceSent))
285-
threadViewModel.fetchCalendarEvents(listOf(message), forceFetch = true)
288+
fetchCalendarEvents(listOf(message), forceFetch = true)
286289
} else {
287290
snackbarManager.setValue(getString(R.string.errorCalendarChoiceCouldNotBeSent))
288291
threadAdapter.undoUserAttendanceClick(message)
@@ -307,14 +310,14 @@ class ThreadFragment : Fragment() {
307310
),
308311
)
309312

310-
addItemDecoration(
313+
binding.messagesList.addItemDecoration(
311314
DividerItemDecorator(
312315
divider = InsetDrawable(dividerDrawable(context), 0),
313316
shouldIgnoreView = { view -> view.tag == ThreadAdapter.IGNORE_DIVIDER_TAG },
314317
),
315318
)
316319

317-
recycledViewPool.setMaxRecycledViews(0, 0)
320+
binding.messagesList.recycledViewPool.setMaxRecycledViews(0, 0)
318321
threadAdapter.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
319322
}
320323

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

-7
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,6 @@ class ThreadViewModel @Inject constructor(
107107
AccountUtils.currentMailboxId,
108108
).map { it.obj }.asLiveData(ioCoroutineContext)
109109

110-
fun resetThreadBackupCache() {
111-
isExpandedMap = mutableMapOf()
112-
isThemeTheSameMap = mutableMapOf()
113-
hasSuperCollapsedBlockBeenClicked = false
114-
verticalScroll = null
115-
}
116-
117110
fun resetMessagesRelatedCache() {
118111
treatedMessagesForCalendarEvent.clear()
119112
isCalendarEventExpandedMap.clear()

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

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import androidx.navigation.fragment.navArgs
2626
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
2727
import com.infomaniak.lib.core.utils.context
2828
import com.infomaniak.lib.core.utils.safeBinding
29-
import com.infomaniak.lib.core.utils.toPx
3029
import com.infomaniak.lib.core.views.DividerItemDecorator
3130
import com.infomaniak.mail.R
3231
import com.infomaniak.mail.databinding.BottomSheetAttendeesBinding

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,7 @@ class SharedUtils @Inject constructor(
5959
* @param mailbox The Mailbox where the Threads & Messages are located
6060
* @param threads The Threads to mark as read
6161
* @param message The Message to mark as read
62-
* @param started The callback for when the refresh of Threads starts
63-
* @param stopped The callback for when the refresh of Threads ends
62+
* @param callbacks The callbacks for when the refresh of Threads begins/ends
6463
* @param shouldRefreshThreads Sometimes, we don't want to refresh Threads after doing this action. For example, when replying to a Message.
6564
*/
6665
suspend fun markAsSeen(

0 commit comments

Comments
 (0)