check updates on launch, handle package updated
This commit is contained in:
+2
@@ -15,6 +15,7 @@ import com.seiko.imageloader.LocalImageLoader
|
||||
import ru.shadowsparky.koin
|
||||
import ru.shadowsparky.ui.components.BackButton
|
||||
import ru.shadowsparky.ui.nav.Nav
|
||||
import ru.shadowsparky.updater.presentation.UpdateDialog
|
||||
import ru.shadowsparky.vbox.shared.presentation.list.VideoScreen
|
||||
import ru.shadowsparky.vbox.shared.presentation.loading.LoadingScreen
|
||||
import ru.shadowsparky.vbox.shared.presentation.nav.Child
|
||||
@@ -77,6 +78,7 @@ private fun NavInternal(rootComponent: RootComponent) {
|
||||
}
|
||||
}
|
||||
}
|
||||
UpdateDialog(rootComponent.updateComponent)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+14
-2
@@ -2,15 +2,18 @@ package ru.shadowsparky.vbox.shared.presentation
|
||||
|
||||
import com.arkivanov.decompose.ComponentContext
|
||||
import com.arkivanov.decompose.ExperimentalDecomposeApi
|
||||
import com.arkivanov.decompose.childContext
|
||||
import com.arkivanov.decompose.router.stack.childStackWebNavigation
|
||||
import com.arkivanov.decompose.router.webhistory.WebNavigation
|
||||
import com.arkivanov.decompose.router.webhistory.WebNavigationOwner
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.serialization.KSerializer
|
||||
import org.koin.core.Koin
|
||||
import org.koin.core.annotation.Factory
|
||||
import ru.shadowsparky.http.domain.TokenStorage
|
||||
import ru.shadowsparky.ui.nav.BaseRootComponent
|
||||
import ru.shadowsparky.updater.presentation.UpdateComponentFactory
|
||||
import ru.shadowsparky.vbox.shared.di.factory.ImageLoaderProvider
|
||||
import ru.shadowsparky.vbox.shared.domain.HeathCheck
|
||||
import ru.shadowsparky.vbox.shared.presentation.nav.Route
|
||||
@@ -22,9 +25,12 @@ class RootComponent(
|
||||
override val initStack: List<Route>,
|
||||
private val healthCheck: HeathCheck,
|
||||
val imageLoaderProvider: ImageLoaderProvider,
|
||||
private val updateComponentFactory: UpdateComponentFactory,
|
||||
override val serializer: KSerializer<Route> = Route.serializer(),
|
||||
override val koin: Koin = ru.shadowsparky.koin
|
||||
) : BaseRootComponent<Route>(componentContext), WebNavigationOwner {
|
||||
val updateComponent = updateComponentFactory.create(childContext("UpdateComponentRoot"))
|
||||
private val scope = createComponentScope()
|
||||
val isLoggedIn = tokenStorage.token.map {
|
||||
if (it != null) {
|
||||
runCatching { healthCheck.check() }.getOrNull() ?: return@map false
|
||||
@@ -34,6 +40,10 @@ class RootComponent(
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
scope.launch { updateComponent.checkUpdates(false) }
|
||||
}
|
||||
|
||||
override val webNavigation: WebNavigation<*> =
|
||||
childStackWebNavigation(
|
||||
navigator = nav,
|
||||
@@ -52,7 +62,8 @@ class RootComponent(
|
||||
class RootFactory(
|
||||
private val tokenStorage: TokenStorage,
|
||||
private val heathCheck: HeathCheck,
|
||||
private val imageLoaderProvider: ImageLoaderProvider
|
||||
private val imageLoaderProvider: ImageLoaderProvider,
|
||||
private val updateComponentFactory: UpdateComponentFactory
|
||||
) {
|
||||
fun create(
|
||||
context: ComponentContext,
|
||||
@@ -70,7 +81,8 @@ class RootFactory(
|
||||
tokenStorage,
|
||||
listOf(Route.Loading(next = initStack.toSet())),
|
||||
heathCheck,
|
||||
imageLoaderProvider
|
||||
imageLoaderProvider,
|
||||
updateComponentFactory
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user