diff --git a/app/src/main/java/com/topjohnwu/magisk/data/database/RepositoryDao.kt b/app/src/main/java/com/topjohnwu/magisk/data/database/RepositoryDao.kt index 946c31332..78f74302b 100644 --- a/app/src/main/java/com/topjohnwu/magisk/data/database/RepositoryDao.kt +++ b/app/src/main/java/com/topjohnwu/magisk/data/database/RepositoryDao.kt @@ -13,7 +13,10 @@ interface RepositoryDao : BaseDao { @Transaction override fun deleteAll() - @Query("SELECT * FROM repos") + @Query("SELECT * FROM repos ORDER BY lastUpdate DESC") override fun fetchAll(): List + @Query("SELECT * FROM repos ORDER BY name ASC") + fun fetchAllOrderByName(): List + } \ No newline at end of file diff --git a/app/src/main/java/com/topjohnwu/magisk/data/repository/ModuleRepository.kt b/app/src/main/java/com/topjohnwu/magisk/data/repository/ModuleRepository.kt index 86ac5f319..161589d60 100644 --- a/app/src/main/java/com/topjohnwu/magisk/data/repository/ModuleRepository.kt +++ b/app/src/main/java/com/topjohnwu/magisk/data/repository/ModuleRepository.kt @@ -1,6 +1,7 @@ package com.topjohnwu.magisk.data.repository import android.content.Context +import com.topjohnwu.magisk.Config import com.topjohnwu.magisk.data.database.RepositoryDao import com.topjohnwu.magisk.data.network.GithubApiServices import com.topjohnwu.magisk.data.network.GithubRawApiServices @@ -23,7 +24,7 @@ class ModuleRepository( ) { fun fetchModules(force: Boolean = false) = - if (force) fetchRemoteRepos() else Single.fromCallable { repoDao.fetchAll() } + if (force) fetchRemoteRepos() else fetchCachedOrdered() .flatMap { if (it.isEmpty()) fetchRemoteRepos() else it.toSingle() } private fun fetchRemoteRepos() = fetchAllRepos() @@ -36,6 +37,14 @@ class ModuleRepository( } .doOnSuccess { repoDao.insert(it) } + private fun fetchCachedOrdered() = Single.fromCallable { + when (Config.get(Config.Key.REPO_ORDER)) { + Config.Value.ORDER_DATE -> repoDao.fetchAll() + Config.Value.ORDER_NAME -> repoDao.fetchAllOrderByName() + else -> repoDao.fetchAll() + } + } + fun fetchInstalledModules() = Single.fromCallable { Utils.loadModulesLeanback() } .map { it.values.toList() }