Skip to content

Commit a92d728

Browse files
committed
Fix code smell
1 parent c466af4 commit a92d728

File tree

2 files changed

+32
-25
lines changed

2 files changed

+32
-25
lines changed

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

+30-24
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,35 @@ class ThreadController @Inject constructor(
284284
onUpdate(getThread(threadUid, realm))
285285
}
286286

287+
private fun fetchSwissTransferContainer(uuid: String): SwissTransferContainer? = runCatching {
288+
val apiResponse = ApiRepository.getSwissTransferContainer(uuid)
289+
290+
if (apiResponse.isSuccess()) return@runCatching apiResponse.data
291+
292+
SentryLog.i(TAG, "Could not fetch SwissTransfer container")
293+
return@runCatching null
294+
}.getOrNull()
295+
296+
private fun getApiCallsResults(
297+
messages: List<Message>,
298+
okHttpClient: OkHttpClient?,
299+
failedMessagesUids: MutableList<String>
300+
) = messages.mapNotNull { localMessage ->
301+
return@mapNotNull runCatching {
302+
val apiResponse = ApiRepository.getMessage(localMessage.resource, okHttpClient)
303+
val swissTransferUuid = apiResponse.data?.swissTransferUuid
304+
var swissTransferContainer: SwissTransferContainer? = null
305+
if (apiResponse.isSuccess() && swissTransferUuid != null) {
306+
swissTransferContainer = fetchSwissTransferContainer(swissTransferUuid)
307+
}
308+
return@runCatching ApiCallsResults(localMessage, apiResponse, swissTransferContainer)
309+
}.getOrElse {
310+
// This `getOrElse` is here only to catch `OutOfMemoryError` when trying to deserialize very big Body.
311+
failedMessagesUids.add(localMessage.uid)
312+
return@getOrElse null
313+
}
314+
}
315+
287316
/**
288317
* Asynchronously fetches heavy data for a list of messages within a given mailbox and realm.
289318
*
@@ -306,30 +335,7 @@ class ThreadController @Inject constructor(
306335
val deletedMessagesUids = mutableListOf<String>()
307336
val failedMessagesUids = mutableListOf<String>()
308337

309-
fun fetchSwissTransferContainer(uuid: String): SwissTransferContainer? = runCatching {
310-
val apiResponse = ApiRepository.getSwissTransferContainer(uuid)
311-
312-
if (apiResponse.isSuccess()) return@runCatching apiResponse.data
313-
314-
SentryLog.i(TAG, "Could not fetch SwissTransfer container")
315-
return@runCatching null
316-
}.getOrNull()
317-
318-
val apiCallsResults = messages.mapNotNull { localMessage ->
319-
return@mapNotNull runCatching {
320-
val apiResponse = ApiRepository.getMessage(localMessage.resource, okHttpClient)
321-
val swissTransferUuid = apiResponse.data?.swissTransferUuid
322-
var swissTransferContainer: SwissTransferContainer? = null
323-
if (apiResponse.isSuccess() && swissTransferUuid != null) {
324-
swissTransferContainer = fetchSwissTransferContainer(swissTransferUuid)
325-
}
326-
return@runCatching ApiCallsResults(localMessage, apiResponse, swissTransferContainer)
327-
}.getOrElse {
328-
// This `getOrElse` is here only to catch `OutOfMemoryError` when trying to deserialize very big Body.
329-
failedMessagesUids.add(localMessage.uid)
330-
return@getOrElse null
331-
}
332-
}
338+
val apiCallsResults = getApiCallsResults(messages, okHttpClient, failedMessagesUids)
333339

334340
realm.writeBlocking {
335341
var hasAttachableInThread = false

app/src/main/java/com/infomaniak/mail/data/models/thread/Thread.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ class Thread : RealmObject {
9191
var isFromSearch: Boolean = false
9292
@Transient
9393
var hasAttachable: Boolean = false
94-
// Has been moved (archived, spammed, deleted, moved) but API call hasn't been done yet. Used to filter locally the Threads' list.
94+
// Has been moved (archived, spammed, deleted, moved) but API call hasn't been done yet.
95+
// It's only used to filter locally the Threads' list.
9596
@Transient
9697
var isLocallyMovedOut: Boolean = false
9798
//endregion

0 commit comments

Comments
 (0)