From 0b292f338361492f704e3f61e4d755db8a4cd235 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 6 Nov 2023 17:18:20 -0300 Subject: [PATCH] [db] Add convenience method for setting preferred repo via RepoManager --- .../src/main/java/org/fdroid/index/RepoManager.kt | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 3cc09b5df..edea118b2 100644 --- a/libs/database/src/main/java/org/fdroid/index/RepoManager.kt +++ b/libs/database/src/main/java/org/fdroid/index/RepoManager.kt @@ -16,6 +16,7 @@ import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.fdroid.database.AppPrefs +import org.fdroid.database.AppPrefsDaoInt import org.fdroid.database.FDroidDatabase import org.fdroid.database.Repository import org.fdroid.database.RepositoryDaoInt @@ -32,7 +33,7 @@ import kotlin.coroutines.CoroutineContext @OptIn(DelicateCoroutinesApi::class) public class RepoManager @JvmOverloads constructor( context: Context, - db: FDroidDatabase, + private val db: FDroidDatabase, downloaderFactory: DownloaderFactory, httpManager: HttpManager, private val repoUriBuilder: RepoUriBuilder = defaultRepoUriBuilder, @@ -40,6 +41,7 @@ public class RepoManager @JvmOverloads constructor( ) { private val repositoryDao = db.getRepositoryDao() as RepositoryDaoInt + private val appPrefsDao = db.getAppPrefsDao() as AppPrefsDaoInt private val tempFileProvider = TempFileProvider { File.createTempFile("dl-", "", context.cacheDir) } @@ -162,6 +164,16 @@ public class RepoManager @JvmOverloads constructor( repoAdder.abortAddingRepo() } + @AnyThread + public fun setPreferredRepoId(packageName: String, repoId: Long) { + GlobalScope.launch(coroutineContext) { + db.runInTransaction { + val appPrefs = appPrefsDao.getAppPrefsOrNull(packageName) ?: AppPrefs(packageName) + appPrefsDao.update(appPrefs.copy(preferredRepoId = repoId)) + } + } + } + /** * Changes repository priorities that determine the order * they are returned from [getRepositories] and the preferred repositories.