From d17e1c5bcf3763f58d338fd993de6341eafc751b Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 11 Mar 2025 09:33:16 -0300 Subject: [PATCH] Delete archive repo when deleting main repo --- .../main/java/org/fdroid/index/RepoManager.kt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/libs/database/src/main/java/org/fdroid/index/RepoManager.kt b/libs/database/src/main/java/org/fdroid/index/RepoManager.kt index 775d2f41c..5d36aa747 100644 --- a/libs/database/src/main/java/org/fdroid/index/RepoManager.kt +++ b/libs/database/src/main/java/org/fdroid/index/RepoManager.kt @@ -118,11 +118,19 @@ public class RepoManager @JvmOverloads constructor( */ @WorkerThread public fun deleteRepository(repoId: Long) { - repositoryDao.deleteRepository(repoId) - // while this gets updated automatically, getting the update may be slow, - // so to speed up the UI, we emit the state change right away - _repositoriesState.value = _repositoriesState.value.filter { repository -> - repository.repoId == repoId + db.runInTransaction { + // find and remove archive repo if existing + val repository = repositoryDao.getRepository(repoId) ?: return@runInTransaction + val cert = repository.certificate + val archiveRepoId = repositoryDao.getArchiveRepoId(cert) + if (archiveRepoId != null) repositoryDao.deleteRepository(archiveRepoId) + // delete main repo + repositoryDao.deleteRepository(repoId) + // while this gets updated automatically, getting the update may be slow, + // so to speed up the UI, we emit the state change right away + _repositoriesState.value = _repositoriesState.value.filter { repo -> + repo.repoId == repoId + } } }