From db07c5969e3bd07556b9973fe8885916b55a3668 Mon Sep 17 00:00:00 2001 From: CnC-Robert Date: Sun, 4 Jun 2023 17:50:40 +0200 Subject: [PATCH] feat: improved compose stability --- .../compose/domain/sources/RemoteSource.kt | 3 ++ .../manager/compose/domain/sources/Source.kt | 2 ++ .../compose/patcher/patch/PatchInfo.kt | 32 ++++++++++--------- .../patcher/worker/PatcherProgressManager.kt | 13 +++++--- .../compose/ui/screen/SettingsScreen.kt | 3 -- .../screen/settings/UpdatesSettingsScreen.kt | 5 +-- .../ui/viewmodel/InstallerViewModel.kt | 2 ++ .../ui/viewmodel/PatchesSelectorViewModel.kt | 2 ++ 8 files changed, 35 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/app/revanced/manager/compose/domain/sources/RemoteSource.kt b/app/src/main/java/app/revanced/manager/compose/domain/sources/RemoteSource.kt index a7e762c..66faa4a 100644 --- a/app/src/main/java/app/revanced/manager/compose/domain/sources/RemoteSource.kt +++ b/app/src/main/java/app/revanced/manager/compose/domain/sources/RemoteSource.kt @@ -1,13 +1,16 @@ package app.revanced.manager.compose.domain.sources +import androidx.compose.runtime.Stable import app.revanced.manager.compose.network.api.ManagerAPI import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.koin.core.component.get import java.io.File +@Stable class RemoteSource(id: Int, directory: File) : Source(id, directory) { private val api: ManagerAPI = get() + suspend fun downloadLatest() = withContext(Dispatchers.IO) { api.downloadBundle(patchesJar, integrations).also { (patchesVer, integrationsVer) -> saveVersion(patchesVer, integrationsVer) diff --git a/app/src/main/java/app/revanced/manager/compose/domain/sources/Source.kt b/app/src/main/java/app/revanced/manager/compose/domain/sources/Source.kt index 63e30a3..b3360a8 100644 --- a/app/src/main/java/app/revanced/manager/compose/domain/sources/Source.kt +++ b/app/src/main/java/app/revanced/manager/compose/domain/sources/Source.kt @@ -1,6 +1,7 @@ package app.revanced.manager.compose.domain.sources import android.util.Log +import androidx.compose.runtime.Stable import app.revanced.manager.compose.patcher.patch.PatchBundle import app.revanced.manager.compose.domain.repository.SourcePersistenceRepository import app.revanced.manager.compose.util.tag @@ -13,6 +14,7 @@ import java.io.File /** * A [PatchBundle] source. */ +@Stable sealed class Source(val id: Int, directory: File) : KoinComponent { private val configRepository: SourcePersistenceRepository by inject() protected companion object { diff --git a/app/src/main/java/app/revanced/manager/compose/patcher/patch/PatchInfo.kt b/app/src/main/java/app/revanced/manager/compose/patcher/patch/PatchInfo.kt index 65ccc82..b9cd9c9 100644 --- a/app/src/main/java/app/revanced/manager/compose/patcher/patch/PatchInfo.kt +++ b/app/src/main/java/app/revanced/manager/compose/patcher/patch/PatchInfo.kt @@ -1,6 +1,6 @@ package app.revanced.manager.compose.patcher.patch -import android.os.Parcelable +import androidx.compose.runtime.Immutable import app.revanced.manager.compose.patcher.PatchClass import app.revanced.patcher.annotation.Package import app.revanced.patcher.extensions.PatchExtensions.compatiblePackages @@ -10,24 +10,24 @@ import app.revanced.patcher.extensions.PatchExtensions.include import app.revanced.patcher.extensions.PatchExtensions.options import app.revanced.patcher.extensions.PatchExtensions.patchName import app.revanced.patcher.patch.PatchOption -import kotlinx.parcelize.Parcelize +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toImmutableList -@Parcelize data class PatchInfo( val name: String, val description: String?, - val dependencies: List?, + val dependencies: ImmutableList?, val include: Boolean, - val compatiblePackages: List?, - val options: List