Skip to content
Snippets Groups Projects
Commit d6f8aa29 authored by Jonas Broeckmann's avatar Jonas Broeckmann
Browse files

Fix crash if GitLab is down

parent 9dcb3f4a
No related branches found
No related tags found
No related merge requests found
......@@ -46,6 +46,7 @@ import cafe.adriel.voyager.core.model.ScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import net.novagamestudios.common_utils.Logger
import net.novagamestudios.common_utils.compose.DashedShape
import net.novagamestudios.common_utils.compose.components.CircularLoadingBox
import net.novagamestudios.common_utils.compose.components.ColumnCenter
......@@ -54,6 +55,7 @@ import net.novagamestudios.common_utils.compose.components.RowCenter
import net.novagamestudios.common_utils.compose.components.TransparentListItem
import net.novagamestudios.common_utils.compose.state.ReentrantActionState
import net.novagamestudios.common_utils.compose.state.collectAsStateIn
import net.novagamestudios.common_utils.error
import net.novagamestudios.common_utils.toastLong
import net.novagamestudios.kaffeekasse.App
import net.novagamestudios.kaffeekasse.App.Companion.settings
......@@ -65,6 +67,8 @@ import net.novagamestudios.kaffeekasse.repositories.InstallStatus
import net.novagamestudios.kaffeekasse.repositories.RepositoryProvider
import net.novagamestudios.kaffeekasse.repositories.UpdateController
import net.novagamestudios.kaffeekasse.repositories.releases.Releases
import net.novagamestudios.kaffeekasse.ui.util.Toasts
import net.novagamestudios.kaffeekasse.ui.util.ToastsState
import net.novagamestudios.kaffeekasse.ui.util.openInBrowser
import net.novagamestudios.kaffeekasse.ui.util.screenmodel.GlobalScreenModelFactory
import net.novagamestudios.kaffeekasse.ui.util.screenmodel.ScreenModelProvider
......@@ -75,12 +79,14 @@ class UpdatesScreenModel private constructor(
private val releases: Releases,
private val updateController: UpdateController,
private val gitLabProjectUrl: String
) : ScreenModel {
) : ScreenModel, Logger {
var showAppInfo by mutableStateOf(false)
private val checkingMutex = ReentrantActionState()
val isChecking by checkingMutex
val toasts = ToastsState()
val newerReleases by releases.newerReleases
.map { it.orEmpty() }
.collectAsStateIn(screenModelScope, emptyList())
......@@ -104,7 +110,12 @@ class UpdatesScreenModel private constructor(
screenModelScope.launch {
checkingMutex.trueWhile {
releases.newerReleases.value = null
releases.fetchNewerReleases()
try {
releases.fetchNewerReleases()
} catch (e: Throwable) {
error (e) { "Failed to fetch newer releases" }
toasts.short("Failed to check for updates: ${e.message}")
}
}
}
}
......@@ -159,6 +170,7 @@ fun UpdateDialogs(model: UpdatesScreenModel = UpdatesScreenModel.model) {
newerReleases = model.newerReleases,
onStartUpdate = { model.update() }
)
Toasts(model.toasts)
}
@Composable
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment