Skip to content

Commit ac72666

Browse files
Merge pull request #1683 from Infomaniak/clean-code
Clean code before SuperCollapsedBlock feature
2 parents 9fe85e3 + 21fbebd commit ac72666

File tree

14 files changed

+128
-105
lines changed

14 files changed

+128
-105
lines changed

app/src/main/assets/icon_print_email.svg

+28-14
Loading

app/src/main/java/com/infomaniak/mail/data/api/ApiRoutes.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,14 @@ object ApiRoutes {
6969
//endregion
7070

7171
//region Calendar
72-
fun calendarEvent(resource: String): String {
73-
return "${resource(resource)}?format=render"
74-
}
75-
7672
fun infomaniakCalendarEventReply(calendarEventId: Int): String {
7773
return "${pim()}/event/$calendarEventId/reply"
7874
}
7975

76+
fun calendarEvent(resource: String): String {
77+
return "${resource(resource)}?format=render"
78+
}
79+
8080
fun icsCalendarEventReply(resource: String): String {
8181
return "${resource(resource)}/reply"
8282
}

app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/MessageController.kt

-2
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ import io.realm.kotlin.notifications.ResultsChange
3333
import io.realm.kotlin.query.RealmQuery
3434
import io.realm.kotlin.query.RealmSingleQuery
3535
import io.realm.kotlin.query.Sort
36-
import io.sentry.Sentry
37-
import io.sentry.SentryLevel
3836
import kotlinx.coroutines.flow.Flow
3937
import javax.inject.Inject
4038

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -204,14 +204,16 @@ class Message : RealmObject {
204204
latestCalendarEventResponse: CalendarEventResponse?,
205205
messageIds: RealmSet<String>? = null,
206206
) {
207+
207208
this.date = date
208209
this._isFullyDownloaded = isFullyDownloaded
209210
this.isTrashed = isTrashed
210211
draftLocalUuid?.let { this.draftLocalUuid = it }
211212
this.isFromSearch = isFromSearch
212213
this.messageIds = messageIds ?: computeMessageIds()
213-
shortUid = uid.toShortUid()
214214
this.latestCalendarEventResponse = latestCalendarEventResponse
215+
216+
shortUid = uid.toShortUid()
215217
}
216218

217219
fun keepHeavyData(message: Message) {

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

+31-27
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,31 @@ class ThreadListAdapter @Inject constructor(
118118
this.recyclerView = recyclerView
119119
}
120120

121+
override fun getItemViewType(position: Int): Int = runCatchingRealm {
122+
val item = dataSet[position]
123+
return when {
124+
item is String -> DisplayType.DATE_SEPARATOR.layout
125+
item is FolderRole -> DisplayType.FLUSH_FOLDER_BUTTON.layout
126+
item is Unit -> DisplayType.LOAD_MORE_BUTTON.layout
127+
displaySeeAllButton -> DisplayType.SEE_ALL_BUTTON.layout
128+
else -> DisplayType.THREAD.layout
129+
}
130+
}.getOrDefault(super.getItemViewType(position))
131+
132+
override fun getItemId(position: Int): Long = runCatchingRealm {
133+
return when (val item = dataSet[position]) {
134+
is Thread -> item.uid.hashCode().toLong()
135+
is String -> item.hashCode().toLong()
136+
else -> super.getItemId(position)
137+
}
138+
}.getOrDefault(super.getItemId(position))
139+
140+
fun getItemPosition(threadUid: String): Int? {
141+
return dataSet
142+
.indexOfFirst { it is Thread && it.uid == threadUid }
143+
.takeIf { position -> position != -1 }
144+
}
145+
121146
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ThreadListViewHolder {
122147
val layoutInflater = LayoutInflater.from(parent.context)
123148
val binding = when (viewType) {
@@ -132,13 +157,17 @@ class ThreadListAdapter @Inject constructor(
132157
}
133158

134159
override fun onBindViewHolder(holder: ThreadListViewHolder, position: Int, payloads: MutableList<Any>) = runCatchingRealm {
160+
135161
val payload = payloads.firstOrNull()
162+
if (payload !is NotificationType) {
163+
super.onBindViewHolder(holder, position, payloads)
164+
return@runCatchingRealm
165+
}
166+
136167
if (payload == NotificationType.SELECTED_STATE && holder.itemViewType == DisplayType.THREAD.layout) {
137168
val binding = holder.binding as CardviewThreadItemBinding
138169
val thread = dataSet[position] as Thread
139170
binding.updateSelectedUi(thread)
140-
} else {
141-
super.onBindViewHolder(holder, position, payloads)
142171
}
143172
}.getOrDefault(Unit)
144173

@@ -152,31 +181,6 @@ class ThreadListAdapter @Inject constructor(
152181
}
153182
}
154183

155-
override fun getItemViewType(position: Int): Int = runCatchingRealm {
156-
val item = dataSet[position]
157-
return when {
158-
item is String -> DisplayType.DATE_SEPARATOR.layout
159-
item is FolderRole -> DisplayType.FLUSH_FOLDER_BUTTON.layout
160-
item is Unit -> DisplayType.LOAD_MORE_BUTTON.layout
161-
displaySeeAllButton -> DisplayType.SEE_ALL_BUTTON.layout
162-
else -> DisplayType.THREAD.layout
163-
}
164-
}.getOrDefault(super.getItemViewType(position))
165-
166-
override fun getItemId(position: Int): Long = runCatchingRealm {
167-
return when (val item = dataSet[position]) {
168-
is Thread -> item.uid.hashCode().toLong()
169-
is String -> item.hashCode().toLong()
170-
else -> super.getItemId(position)
171-
}
172-
}.getOrDefault(super.getItemId(position))
173-
174-
fun getItemPosition(threadUid: String): Int? {
175-
return dataSet
176-
.indexOfFirst { it is Thread && it.uid == threadUid }
177-
.takeIf { position -> position != -1 }
178-
}
179-
180184
private fun CardviewThreadItemBinding.displayThread(thread: Thread, position: Int) {
181185

182186
refreshCachedSelectedPosition(thread.uid, position) // If item changed position, update cached position.

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

+2
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ abstract class TwoPaneFragment : Fragment() {
8686
}
8787

8888
private fun setupSlidingPane() = with(slidingPaneLayout) {
89+
8990
lockMode = SlidingPaneLayout.LOCK_MODE_LOCKED
91+
9092
addPanelSlideListener(object : SlidingPaneLayout.PanelSlideListener {
9193
override fun onPanelOpened(panel: View) = Unit
9294
override fun onPanelClosed(panel: View) = Unit

app/src/main/java/com/infomaniak/mail/ui/main/onboarding/PermissionsOnboardingFragment.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import androidx.navigation.fragment.navArgs
2929
import com.infomaniak.lib.core.utils.safeBinding
3030
import com.infomaniak.mail.R
3131
import com.infomaniak.mail.data.LocalSettings
32-
import com.infomaniak.mail.data.LocalSettings.*
32+
import com.infomaniak.mail.data.LocalSettings.AccentColor
3333
import com.infomaniak.mail.databinding.FragmentPermissionsOnboardingBinding
3434
import dagger.hilt.android.AndroidEntryPoint
3535
import javax.inject.Inject

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

-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ class PrintMailFragment : Fragment() {
4545
private val printMailViewModel: PrintMailViewModel by viewModels()
4646
private val threadAdapter inline get() = binding.messagesList.adapter as ThreadAdapter
4747

48-
4948
@Inject
5049
lateinit var localSettings: LocalSettings
5150

0 commit comments

Comments
 (0)