Retain candidate metadata across updater states

This commit is contained in:
justinzeus 2026-11-07 16:14:58 +01:00
parent 152dac97c0
commit 7a0cbdf909
2 changed files with 9 additions and 1 deletions

View file

@ -9,16 +9,22 @@ class FakeUpdateController(
initialState: UpdateUiState = UpdateUiState.Idle, initialState: UpdateUiState = UpdateUiState.Idle,
initialAutoCheck: Boolean = true, initialAutoCheck: Boolean = true,
initialVersion: InstalledVersion = InstalledVersion("1.1.1", 100001), initialVersion: InstalledVersion = InstalledVersion("1.1.1", 100001),
initialRelease: UpdateUiState.Available? = initialState as? UpdateUiState.Available,
) : UpdateController { ) : UpdateController {
private val mutableState = MutableStateFlow(initialState) private val mutableState = MutableStateFlow(initialState)
private val mutableAutoCheck = MutableStateFlow(initialAutoCheck) private val mutableAutoCheck = MutableStateFlow(initialAutoCheck)
private val mutableVersion = MutableStateFlow(initialVersion) private val mutableVersion = MutableStateFlow(initialVersion)
private val mutableRelease = MutableStateFlow(initialRelease)
override val state = mutableState.asStateFlow() override val state = mutableState.asStateFlow()
override val autoCheck = mutableAutoCheck.asStateFlow() override val autoCheck = mutableAutoCheck.asStateFlow()
override val installedVersion = mutableVersion.asStateFlow() override val installedVersion = mutableVersion.asStateFlow()
override val release = mutableRelease.asStateFlow()
val actions = mutableListOf<String>() val actions = mutableListOf<String>()
fun show(state: UpdateUiState) { mutableState.value = state } fun show(state: UpdateUiState) {
if (state is UpdateUiState.Available) mutableRelease.value = state
mutableState.value = state
}
fun showInstalled(version: InstalledVersion) { mutableVersion.value = version } fun showInstalled(version: InstalledVersion) { mutableVersion.value = version }
override fun check(manual: Boolean) { actions += "check:$manual" } override fun check(manual: Boolean) { actions += "check:$manual" }
override fun download() { actions += "download" } override fun download() { actions += "download" }

View file

@ -8,6 +8,8 @@ interface UpdateController {
val state: StateFlow<UpdateUiState> val state: StateFlow<UpdateUiState>
val autoCheck: StateFlow<Boolean> val autoCheck: StateFlow<Boolean>
val installedVersion: StateFlow<InstalledVersion> val installedVersion: StateFlow<InstalledVersion>
/** Candidate facts survive download/installer transitions and verified-file restoration. */
val release: StateFlow<UpdateUiState.Available?>
fun check(manual: Boolean) fun check(manual: Boolean)
fun download() fun download()