Fix: Calling the data repository with the real id

This commit is contained in:
machiav3lli 2021-12-26 00:44:15 +01:00
parent 814052d821
commit 9e022d477d
12 changed files with 18 additions and 16 deletions

View File

@ -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 = ""))
}

View File

@ -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

View File

@ -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)

View File

@ -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) {

View File

@ -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())

View File

@ -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 }

View File

@ -96,9 +96,8 @@ class SyncService : ConnectionService<SyncService.Binder>() {
}
}
// 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<SyncService.Binder>() {
}
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<SyncService.Binder>() {
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 =

View File

@ -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 {

View File

@ -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 }

View File

@ -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 }

View File

@ -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 }

View File

@ -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 }