From 9e022d477d8e373d1da5266a8181f223fc0fe6bf Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sun, 26 Dec 2021 00:44:15 +0100 Subject: [PATCH] Fix: Calling the data repository with the real id --- src/main/kotlin/com/looker/droidify/MainApplication.kt | 2 +- src/main/kotlin/com/looker/droidify/database/Tables.kt | 3 +++ .../com/looker/droidify/screen/EditRepositoryFragment.kt | 6 +++--- .../com/looker/droidify/screen/RepositoryFragment.kt | 2 +- .../com/looker/droidify/screen/ScreenshotsFragment.kt | 2 +- src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt | 2 +- src/main/kotlin/com/looker/droidify/service/SyncService.kt | 7 +++---- .../com/looker/droidify/ui/fragments/AppDetailFragment.kt | 2 +- .../com/looker/droidify/ui/fragments/AppListFragment.kt | 2 +- .../com/looker/droidify/ui/fragments/ExploreFragment.kt | 2 +- .../com/looker/droidify/ui/fragments/InstalledFragment.kt | 2 +- .../com/looker/droidify/ui/fragments/LatestFragment.kt | 2 +- 12 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/MainApplication.kt b/src/main/kotlin/com/looker/droidify/MainApplication.kt index 838a3188..62ca454f 100644 --- a/src/main/kotlin/com/looker/droidify/MainApplication.kt +++ b/src/main/kotlin/com/looker/droidify/MainApplication.kt @@ -183,7 +183,7 @@ class MainApplication : Application(), ImageLoaderFactory { } private fun forceSyncAll() { - db.repositoryDao.all.mapNotNull { it.data }.forEach { + db.repositoryDao.all.mapNotNull { it.trueData }.forEach { if (it.lastModified.isNotEmpty() || it.entityTag.isNotEmpty()) { db.repositoryDao.put(it.copy(lastModified = "", entityTag = "")) } diff --git a/src/main/kotlin/com/looker/droidify/database/Tables.kt b/src/main/kotlin/com/looker/droidify/database/Tables.kt index cda3236e..5ee964ef 100644 --- a/src/main/kotlin/com/looker/droidify/database/Tables.kt +++ b/src/main/kotlin/com/looker/droidify/database/Tables.kt @@ -21,6 +21,9 @@ class Repository { @ColumnInfo(typeAffinity = ColumnInfo.BLOB) var data: Repository? = null + val trueData: Repository? + get() = data?.copy(id = id) + class IdAndDeleted { @ColumnInfo(name = "_id") var id = 0L diff --git a/src/main/kotlin/com/looker/droidify/screen/EditRepositoryFragment.kt b/src/main/kotlin/com/looker/droidify/screen/EditRepositoryFragment.kt index 3adca521..4286bfc6 100644 --- a/src/main/kotlin/com/looker/droidify/screen/EditRepositoryFragment.kt +++ b/src/main/kotlin/com/looker/droidify/screen/EditRepositoryFragment.kt @@ -153,7 +153,7 @@ class EditRepositoryFragment() : ScreenFragment() { } if (savedInstanceState == null) { - val repository = repositoryId?.let { screenActivity.db.repositoryDao.get(it)?.data } + val repository = repositoryId?.let { screenActivity.db.repositoryDao.get(it)?.trueData } if (repository == null) { val clipboardManager = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager @@ -232,7 +232,7 @@ class EditRepositoryFragment() : ScreenFragment() { } lifecycleScope.launch { - val list = screenActivity.db.repositoryDao.all.mapNotNull { it.data } + val list = screenActivity.db.repositoryDao.all.mapNotNull { it.trueData } takenAddresses = list.asSequence().filter { it.id != repositoryId } .flatMap { (it.mirrors + it.address).asSequence() } .map { it.withoutKnownPath }.toSet() @@ -448,7 +448,7 @@ class EditRepositoryFragment() : ScreenFragment() { MessageDialog(MessageDialog.Message.CantEditSyncing).show(childFragmentManager) invalidateState() } else { - val repository = repositoryId?.let { screenActivity.db.repositoryDao.get(it)?.data } + val repository = repositoryId?.let { screenActivity.db.repositoryDao.get(it)?.trueData } ?.edit(address, fingerprint, authentication) ?: Repository.newRepository(address, fingerprint, authentication) val changedRepository = screenActivity.db.repositoryDao.put(repository) diff --git a/src/main/kotlin/com/looker/droidify/screen/RepositoryFragment.kt b/src/main/kotlin/com/looker/droidify/screen/RepositoryFragment.kt index 82beff60..472e1691 100644 --- a/src/main/kotlin/com/looker/droidify/screen/RepositoryFragment.kt +++ b/src/main/kotlin/com/looker/droidify/screen/RepositoryFragment.kt @@ -98,7 +98,7 @@ class RepositoryFragment() : ScreenFragment() { } private fun updateRepositoryView() { - val repository = screenActivity.db.repositoryDao.get(repositoryId)?.data + val repository = screenActivity.db.repositoryDao.get(repositoryId)?.trueData val layout = layout!! layout.removeAllViews() if (repository == null) { diff --git a/src/main/kotlin/com/looker/droidify/screen/ScreenshotsFragment.kt b/src/main/kotlin/com/looker/droidify/screen/ScreenshotsFragment.kt index 93320579..7520df2e 100644 --- a/src/main/kotlin/com/looker/droidify/screen/ScreenshotsFragment.kt +++ b/src/main/kotlin/com/looker/droidify/screen/ScreenshotsFragment.kt @@ -143,7 +143,7 @@ class ScreenshotsFragment() : DialogFragment() { .map { it -> Pair( it.find { it.repositoryId == repositoryId }, - db.repositoryDao.get(repositoryId)?.data + db.repositoryDao.get(repositoryId)?.trueData ) } .observeOn(AndroidSchedulers.mainThread()) diff --git a/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt b/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt index 86853e10..404395fe 100644 --- a/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt +++ b/src/main/kotlin/com/looker/droidify/screen/TabsFragment.kt @@ -247,7 +247,7 @@ class TabsFragment : ScreenFragment() { repositoriesDisposable = Observable.just(Unit) //.concatWith(Database.observable(Database.Subject.Repositories)) // TODO have to be replaced like whole rxJava .observeOn(Schedulers.io()) - .flatMapSingle { RxUtils.querySingle { screenActivity.db.repositoryDao.all.mapNotNull { it.data } } } + .flatMapSingle { RxUtils.querySingle { screenActivity.db.repositoryDao.all.mapNotNull { it.trueData } } } .observeOn(AndroidSchedulers.mainThread()) .subscribe { it -> setSectionsAndUpdate(null, it.asSequence().filter { it.enabled } diff --git a/src/main/kotlin/com/looker/droidify/service/SyncService.kt b/src/main/kotlin/com/looker/droidify/service/SyncService.kt index 4bd9e38d..d8e657f1 100644 --- a/src/main/kotlin/com/looker/droidify/service/SyncService.kt +++ b/src/main/kotlin/com/looker/droidify/service/SyncService.kt @@ -96,9 +96,8 @@ class SyncService : ConnectionService() { } } - // TODO fix sync (better management of repositories' ids fun sync(request: SyncRequest) { - val ids = db.repositoryDao.all.mapNotNull { it.data } + val ids = db.repositoryDao.all.mapNotNull { it.trueData } .asSequence().filter { it.enabled }.map { it.id }.toList() sync(ids, request) } @@ -143,7 +142,7 @@ class SyncService : ConnectionService() { } fun deleteRepository(repositoryId: Long): Boolean { - val repository = db.repositoryDao.get(repositoryId)?.data + val repository = db.repositoryDao.get(repositoryId)?.trueData return repository != null && run { setEnabled(repository, false) db.repositoryDao.markAsDeleted(repository.id) @@ -331,7 +330,7 @@ class SyncService : ConnectionService() { if (currentTask == null) { if (tasks.isNotEmpty()) { val task = tasks.removeAt(0) - val repository = db.repositoryDao.get(task.repositoryId)?.data + val repository = db.repositoryDao.get(task.repositoryId)?.trueData if (repository != null && repository.enabled) { val lastStarted = started val newStarted = diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/AppDetailFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/AppDetailFragment.kt index 08c3c5ec..8d89612c 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/AppDetailFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/AppDetailFragment.kt @@ -138,7 +138,7 @@ class AppDetailFragment() : ScreenFragment(), AppDetailAdapter.Callbacks { } .flatMapSingle { products -> RxUtils - .querySingle { screenActivity.db.repositoryDao.all.mapNotNull { it.data } } + .querySingle { screenActivity.db.repositoryDao.all.mapNotNull { it.trueData } } .map { it -> it.asSequence().map { Pair(it.id, it) }.toMap() .let { diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/AppListFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/AppListFragment.kt index 33735a0c..759e8a26 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/AppListFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/AppListFragment.kt @@ -79,7 +79,7 @@ class AppListFragment() : BaseFragment(), CursorOwner.Callback { repositoriesDisposable = Observable.just(Unit) //.concatWith(Database.observable(Database.Subject.Repositories)) // TODO have to be replaced like whole rxJava .observeOn(Schedulers.io()) - .flatMapSingle { RxUtils.querySingle { screenActivity.db.repositoryDao.all.mapNotNull { it.data } } } + .flatMapSingle { RxUtils.querySingle { screenActivity.db.repositoryDao.all.mapNotNull { it.trueData } } } .map { it.asSequence().map { Pair(it.id, it) }.toMap() } .observeOn(AndroidSchedulers.mainThread()) .subscribe { (recyclerView?.adapter as? AppListAdapter)?.repositories = it } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt index f6624136..9a03b185 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/ExploreFragment.kt @@ -61,7 +61,7 @@ class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback { repositoriesDisposable = Observable.just(Unit) //.concatWith(Database.observable(Database.Subject.Repositories)) TODO have to be replaced like whole rxJava .observeOn(Schedulers.io()) - .flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.data } } } + .flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.trueData } } } .map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() } .observeOn(AndroidSchedulers.mainThread()) .subscribe { (binding.recyclerView.adapter as? AppListAdapter)?.repositories = it } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt index 4c9aa95f..acc819b9 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/InstalledFragment.kt @@ -59,7 +59,7 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback { repositoriesDisposable = Observable.just(Unit) //.concatWith(Database.observable(Database.Subject.Repositories)) TODO have to be replaced like whole rxJava .observeOn(Schedulers.io()) - .flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.data } } } + .flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.trueData } } } .map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() } .observeOn(AndroidSchedulers.mainThread()) .subscribe { (binding.recyclerView.adapter as? AppListAdapter)?.repositories = it } diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt index 414d6a98..0894d728 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/LatestFragment.kt @@ -60,7 +60,7 @@ class LatestFragment : MainNavFragmentX(), CursorOwner.Callback { repositoriesDisposable = Observable.just(Unit) //.concatWith(Database.observable(Database.Subject.Repositories)) TODO have to be replaced like whole rxJava .observeOn(Schedulers.io()) - .flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.data } } } + .flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.trueData } } } .map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() } .observeOn(AndroidSchedulers.mainThread()) .subscribe { (binding.recyclerView.adapter as? AppListAdapter)?.repositories = it }