Skip to content

Commit dc1af5d

Browse files
refactor: Format fetchMessagesHeavyData() code
1 parent 5cd2d33 commit dc1af5d

File tree

1 file changed

+32
-33
lines changed

1 file changed

+32
-33
lines changed

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

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

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

359+
private fun getApiCallsResults(
360+
messages: List<Message>,
361+
okHttpClient: OkHttpClient?,
362+
failedMessagesUids: MutableList<String>,
363+
): List<ApiCallsResults> {
364+
return messages.mapNotNull { localMessage ->
365+
return@mapNotNull runCatching {
366+
val apiResponse = ApiRepository.getMessage(localMessage.resource, okHttpClient)
367+
val swissTransferUuid = apiResponse.data?.swissTransferUuid
368+
var swissTransferContainer: SwissTransferContainer? = null
369+
if (apiResponse.isSuccess() && swissTransferUuid != null) {
370+
swissTransferContainer = fetchSwissTransferContainer(swissTransferUuid)
371+
}
372+
return@runCatching ApiCallsResults(localMessage, apiResponse, swissTransferContainer)
373+
}.getOrElse {
374+
// This `getOrElse` is here only to catch `OutOfMemoryError` when trying to deserialize very big Body.
375+
failedMessagesUids.add(localMessage.uid)
376+
return@getOrElse null
377+
}
378+
}
379+
}
380+
381+
private fun fetchSwissTransferContainer(uuid: String): SwissTransferContainer? = runCatching {
382+
val apiResponse = ApiRepository.getSwissTransferContainer(uuid)
383+
return@runCatching if (apiResponse.isSuccess()) {
384+
apiResponse.data
385+
} else {
386+
SentryLog.i(TAG, "Could not fetch SwissTransfer container")
387+
null
388+
}
389+
}.getOrNull()
390+
392391
// If we've already got this Message's Draft beforehand, we need to save
393392
// its `draftLocalUuid`, otherwise we'll lose the link between them.
394393
private fun Message.getDraftLocalUuid(realm: TypedRealm): String? {

0 commit comments

Comments
 (0)