@@ -284,6 +284,35 @@ class ThreadController @Inject constructor(
284
284
onUpdate(getThread(threadUid, realm))
285
285
}
286
286
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
+
287
316
/* *
288
317
* Asynchronously fetches heavy data for a list of messages within a given mailbox and realm.
289
318
*
@@ -306,30 +335,7 @@ class ThreadController @Inject constructor(
306
335
val deletedMessagesUids = mutableListOf<String >()
307
336
val failedMessagesUids = mutableListOf<String >()
308
337
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)
333
339
334
340
realm.writeBlocking {
335
341
var hasAttachableInThread = false
0 commit comments