diff --git a/app/build.gradle b/app/build.gradle index 6af13a5..238e805 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,8 +48,8 @@ dependencies { implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.4.0" // Coroutines - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0-RC" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0-RC" // Hilt implementation "com.google.dagger:hilt-android:2.40.2" diff --git a/app/src/main/java/com/hoc081098/paginationmviflow/ui/main/MainVM.kt b/app/src/main/java/com/hoc081098/paginationmviflow/ui/main/MainVM.kt index 65981f6..6a1be98 100644 --- a/app/src/main/java/com/hoc081098/paginationmviflow/ui/main/MainVM.kt +++ b/app/src/main/java/com/hoc081098/paginationmviflow/ui/main/MainVM.kt @@ -6,8 +6,6 @@ import com.hoc081098.paginationmviflow.FlowTransformer import com.hoc081098.paginationmviflow.pipe import com.hoc081098.paginationmviflow.ui.main.MainContract.PartialStateChange import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -29,10 +27,6 @@ import com.hoc081098.paginationmviflow.ui.main.MainContract.SingleEvent as SE import com.hoc081098.paginationmviflow.ui.main.MainContract.ViewIntent as VI import com.hoc081098.paginationmviflow.ui.main.MainContract.ViewState as VS -@OptIn( - ExperimentalCoroutinesApi::class, - FlowPreview::class -) @HiltViewModel class MainVM @Inject constructor( private val mainProcessors: MainProcessors, diff --git a/app/src/main/java/com/hoc081098/paginationmviflow/util.kt b/app/src/main/java/com/hoc081098/paginationmviflow/util.kt index 207c4bd..f1af159 100644 --- a/app/src/main/java/com/hoc081098/paginationmviflow/util.kt +++ b/app/src/main/java/com/hoc081098/paginationmviflow/util.kt @@ -13,7 +13,6 @@ import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout -import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.Job import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow @@ -22,9 +21,11 @@ import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch fun interface FlowTransformer { + @CheckResult fun transform(input: Flow): Flow } +@CheckResult @Suppress("NOTHING_TO_INLINE") inline fun Flow.pipe(transformer: FlowTransformer) = transformer.transform(this) @@ -35,7 +36,6 @@ fun Context.toast(text: CharSequence) = Toast.makeText(this, text, Toast.LENGTH_ fun Fragment.toast(text: CharSequence) = requireContext().toast(text) -@OptIn(ExperimentalCoroutinesApi::class) @CheckResult fun SwipeRefreshLayout.refreshes(): Flow { return callbackFlow { @@ -44,7 +44,6 @@ fun SwipeRefreshLayout.refreshes(): Flow { } } -@OptIn(ExperimentalCoroutinesApi::class) @CheckResult fun View.clicks(): Flow { return callbackFlow { @@ -55,7 +54,7 @@ fun View.clicks(): Flow { data class RecyclerViewScrollEvent(val view: RecyclerView, val dx: Int, val dy: Int) -@OptIn(ExperimentalCoroutinesApi::class) +@CheckResult fun RecyclerView.scrollEvents(): Flow { return callbackFlow { val listener = object : RecyclerView.OnScrollListener() { @@ -74,7 +73,7 @@ fun RecyclerView.scrollEvents(): Flow { } } -@OptIn(ExperimentalCoroutinesApi::class) +@CheckResult fun ViewGroup.detaches(): Flow { return callbackFlow { val listener = object : View.OnAttachStateChangeListener {