Skip to content

Commit 25d7d6b

Browse files
committed
update MainInteractorImpl.kt
1 parent be89b24 commit 25d7d6b

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

app/src/main/java/com/hoc081098/paginationmviflow/ui/main/MainInteractorImpl.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.hoc081098.paginationmviflow.ui.main
22

33
import android.util.Log
4+
import com.hoc081098.paginationmviflow.domain.entity.Photo
5+
import com.hoc081098.paginationmviflow.domain.entity.Post
46
import com.hoc081098.paginationmviflow.domain.usecase.GetPhotosUseCase
57
import com.hoc081098.paginationmviflow.domain.usecase.GetPostsUseCase
68
import com.hoc081098.paginationmviflow.ui.main.MainContract.PartialStateChange.PhotoFirstPage
@@ -10,7 +12,9 @@ import com.hoc081098.paginationmviflow.ui.main.MainContract.PartialStateChange.P
1012
import com.hoc081098.paginationmviflow.ui.main.MainContract.PartialStateChange.Refresh
1113
import com.hoc081098.paginationmviflow.ui.main.MainContract.PhotoVS
1214
import com.hoc081098.paginationmviflow.ui.main.MainContract.PostVS
15+
import kotlinx.coroutines.Deferred
1316
import kotlinx.coroutines.async
17+
import kotlinx.coroutines.awaitAll
1418
import kotlinx.coroutines.coroutineScope
1519
import kotlinx.coroutines.flow.Flow
1620
import kotlinx.coroutines.flow.catch
@@ -74,13 +78,15 @@ class MainInteractorImpl @Inject constructor(
7478
limitPhoto: Int
7579
): Flow<Refresh> = flow {
7680
coroutineScope {
77-
val async1 = async { getPostsUseCase(limit = limitPost, start = 0) }
78-
val async2 = async { getPhotosUseCase(limit = limitPhoto, start = 0) }
81+
val async1: Deferred<List<Post>> = async { getPostsUseCase(limit = limitPost, start = 0) }
82+
val async2: Deferred<List<Photo>> = async { getPhotosUseCase(limit = limitPhoto, start = 0) }
83+
val results = awaitAll(async1, async2)
7984

85+
@Suppress("UNCHECKED_CAST")
8086
emit(
8187
Refresh.Success(
82-
posts = async1.await().map(::PostVS),
83-
photos = async2.await().map(::PhotoVS)
88+
posts = (results[0] as List<Post>).map(::PostVS),
89+
photos = (results[1] as List<Photo>).map(::PhotoVS)
8490
) as Refresh
8591
)
8692
}

0 commit comments

Comments
 (0)