aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/fragments/BaseFragment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/fragments/BaseFragment.kt')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/fragments/BaseFragment.kt25
1 files changed, 9 insertions, 16 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/fragments/BaseFragment.kt b/app/src/main/kotlin/com/pitchedapps/frost/fragments/BaseFragment.kt
index 79495b2a..5c97de65 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/fragments/BaseFragment.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/fragments/BaseFragment.kt
@@ -21,6 +21,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
+import androidx.lifecycle.flowWithLifecycle
import ca.allanwang.kau.utils.ContextHelper
import ca.allanwang.kau.utils.fadeScaleTransition
import ca.allanwang.kau.utils.setIcon
@@ -47,8 +48,9 @@ import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.channels.ReceiveChannel
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.isActive
-import kotlinx.coroutines.launch
import javax.inject.Inject
import kotlin.coroutines.CoroutineContext
@@ -121,7 +123,6 @@ abstract class BaseFragment :
}
override var firstLoad: Boolean = true
- private var activityReceiver: ReceiveChannel<Int>? = null
private var onCreateRunnable: ((FragmentContract) -> Unit)? = null
override var content: FrostContentParent? = null
@@ -152,8 +153,7 @@ abstract class BaseFragment :
onCreateRunnable?.invoke(this)
onCreateRunnable = null
firstLoadRequest()
- detachMainObservable()
- activityReceiver = attachMainObservable(mainContract)
+ attach(mainContract)
}
override fun setUserVisibleHint(isVisibleToUser: Boolean) {
@@ -177,10 +177,10 @@ abstract class BaseFragment :
mainContract.setTitle(title)
}
- override fun attachMainObservable(contract: MainActivityContract): ReceiveChannel<Int> {
- val receiver = contract.fragmentChannel.openSubscription()
- launch {
- for (flag in receiver) {
+ override fun attach(contract: MainActivityContract) {
+ contract.fragmentFlow
+ .flowWithLifecycle(viewLifecycleOwner.lifecycle)
+ .onEach { flag ->
when (flag) {
REQUEST_REFRESH -> {
core?.apply {
@@ -201,9 +201,7 @@ abstract class BaseFragment :
reloadTextSize()
}
}
- }
- }
- return receiver
+ }.launchIn(this)
}
override fun updateFab(contract: MainFabContract) {
@@ -222,16 +220,11 @@ abstract class BaseFragment :
setOnClickListener { click() }
}
- override fun detachMainObservable() {
- activityReceiver?.cancel()
- }
-
override fun onDestroyView() {
super.onDestroyView()
L.i { "Fragment on destroy $position ${hashCode()}" }
content?.destroy()
content = null
- detachMainObservable()
}
override fun onDestroy() {