mirror of
https://github.com/revanced/revanced-manager
synced 2024-05-14 13:56:57 +02:00
fix: use upsert when modifying installed apps
This commit is contained in:
parent
c3af6acb2c
commit
9df98edca5
@ -6,6 +6,7 @@ import androidx.room.Insert
|
|||||||
import androidx.room.MapInfo
|
import androidx.room.MapInfo
|
||||||
import androidx.room.Query
|
import androidx.room.Query
|
||||||
import androidx.room.Transaction
|
import androidx.room.Transaction
|
||||||
|
import androidx.room.Upsert
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
@ -24,17 +25,21 @@ interface InstalledAppDao {
|
|||||||
suspend fun getPatchesSelection(packageName: String): Map<Int, List<String>>
|
suspend fun getPatchesSelection(packageName: String): Map<Int, List<String>>
|
||||||
|
|
||||||
@Transaction
|
@Transaction
|
||||||
suspend fun insertApp(installedApp: InstalledApp, appliedPatches: List<AppliedPatch>) {
|
suspend fun upsertApp(installedApp: InstalledApp, appliedPatches: List<AppliedPatch>) {
|
||||||
insertApp(installedApp)
|
upsertApp(installedApp)
|
||||||
|
deleteAppliedPatches(installedApp.currentPackageName)
|
||||||
insertAppliedPatches(appliedPatches)
|
insertAppliedPatches(appliedPatches)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Insert
|
@Upsert
|
||||||
suspend fun insertApp(installedApp: InstalledApp)
|
suspend fun upsertApp(installedApp: InstalledApp)
|
||||||
|
|
||||||
@Insert
|
@Insert
|
||||||
suspend fun insertAppliedPatches(appliedPatches: List<AppliedPatch>)
|
suspend fun insertAppliedPatches(appliedPatches: List<AppliedPatch>)
|
||||||
|
|
||||||
|
@Query("DELETE FROM applied_patch WHERE package_name = :packageName")
|
||||||
|
suspend fun deleteAppliedPatches(packageName: String)
|
||||||
|
|
||||||
@Delete
|
@Delete
|
||||||
suspend fun delete(installedApp: InstalledApp)
|
suspend fun delete(installedApp: InstalledApp)
|
||||||
}
|
}
|
@ -19,14 +19,14 @@ class InstalledAppRepository(
|
|||||||
suspend fun getAppliedPatches(packageName: String): PatchesSelection =
|
suspend fun getAppliedPatches(packageName: String): PatchesSelection =
|
||||||
dao.getPatchesSelection(packageName).mapValues { (_, patches) -> patches.toSet() }
|
dao.getPatchesSelection(packageName).mapValues { (_, patches) -> patches.toSet() }
|
||||||
|
|
||||||
suspend fun add(
|
suspend fun addOrUpdate(
|
||||||
currentPackageName: String,
|
currentPackageName: String,
|
||||||
originalPackageName: String,
|
originalPackageName: String,
|
||||||
version: String,
|
version: String,
|
||||||
installType: InstallType,
|
installType: InstallType,
|
||||||
patchesSelection: PatchesSelection
|
patchesSelection: PatchesSelection
|
||||||
) {
|
) {
|
||||||
dao.insertApp(
|
dao.upsertApp(
|
||||||
InstalledApp(
|
InstalledApp(
|
||||||
currentPackageName = currentPackageName,
|
currentPackageName = currentPackageName,
|
||||||
originalPackageName = originalPackageName,
|
originalPackageName = originalPackageName,
|
||||||
|
@ -142,7 +142,7 @@ class InstallerViewModel(
|
|||||||
installedPackageName =
|
installedPackageName =
|
||||||
intent.getStringExtra(InstallService.EXTRA_PACKAGE_NAME)
|
intent.getStringExtra(InstallService.EXTRA_PACKAGE_NAME)
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
installedAppRepository.add(
|
installedAppRepository.addOrUpdate(
|
||||||
installedPackageName!!,
|
installedPackageName!!,
|
||||||
packageName,
|
packageName,
|
||||||
input.selectedApp.version,
|
input.selectedApp.version,
|
||||||
@ -277,7 +277,7 @@ class InstallerViewModel(
|
|||||||
|
|
||||||
installedApp?.let { installedAppRepository.delete(it) }
|
installedApp?.let { installedAppRepository.delete(it) }
|
||||||
|
|
||||||
installedAppRepository.add(
|
installedAppRepository.addOrUpdate(
|
||||||
packageName,
|
packageName,
|
||||||
packageName,
|
packageName,
|
||||||
input.selectedApp.version,
|
input.selectedApp.version,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user