mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Update: Replace repositories observable disposable with Room-RxJava's Flowable
This commit is contained in:
parent
70eee26048
commit
4547ef8a55
@ -7,6 +7,7 @@ import androidx.sqlite.db.SimpleSQLiteQuery
|
|||||||
import androidx.sqlite.db.SupportSQLiteQuery
|
import androidx.sqlite.db.SupportSQLiteQuery
|
||||||
import com.looker.droidify.*
|
import com.looker.droidify.*
|
||||||
import com.looker.droidify.entity.ProductItem
|
import com.looker.droidify.entity.ProductItem
|
||||||
|
import io.reactivex.rxjava3.core.Flowable
|
||||||
|
|
||||||
|
|
||||||
interface BaseDao<T> {
|
interface BaseDao<T> {
|
||||||
@ -53,6 +54,9 @@ interface RepositoryDao : BaseDao<Repository> {
|
|||||||
@get:Query("SELECT * FROM repository WHERE deleted == 0 ORDER BY _id ASC")
|
@get:Query("SELECT * FROM repository WHERE deleted == 0 ORDER BY _id ASC")
|
||||||
val all: List<Repository>
|
val all: List<Repository>
|
||||||
|
|
||||||
|
@get:Query("SELECT * FROM repository WHERE deleted == 0 ORDER BY _id ASC")
|
||||||
|
val allFlowable: Flowable<List<Repository>>
|
||||||
|
|
||||||
@get:Query("SELECT _id, deleted FROM repository WHERE deleted != 0 and enabled == 0 ORDER BY _id ASC")
|
@get:Query("SELECT _id, deleted FROM repository WHERE deleted != 0 and enabled == 0 ORDER BY _id ASC")
|
||||||
val allDisabledDeleted: List<Repository.IdAndDeleted>
|
val allDisabledDeleted: List<Repository.IdAndDeleted>
|
||||||
|
|
||||||
|
@ -13,13 +13,12 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
|||||||
import com.looker.droidify.R
|
import com.looker.droidify.R
|
||||||
import com.looker.droidify.database.CursorOwner
|
import com.looker.droidify.database.CursorOwner
|
||||||
import com.looker.droidify.databinding.FragmentExploreXBinding
|
import com.looker.droidify.databinding.FragmentExploreXBinding
|
||||||
|
import com.looker.droidify.entity.Repository
|
||||||
import com.looker.droidify.ui.adapters.AppListAdapter
|
import com.looker.droidify.ui.adapters.AppListAdapter
|
||||||
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
|
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
|
||||||
import com.looker.droidify.utility.RxUtils
|
import com.looker.droidify.utility.RxUtils
|
||||||
import com.looker.droidify.widget.RecyclerFastScroller
|
import com.looker.droidify.widget.RecyclerFastScroller
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.core.Observable
|
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@ -31,7 +30,7 @@ class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
|
|
||||||
override val source = Source.AVAILABLE
|
override val source = Source.AVAILABLE
|
||||||
|
|
||||||
private var repositoriesDisposable: Disposable? = null
|
private var repositories: Map<Long, Repository> = mapOf()
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
@ -61,21 +60,18 @@ class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
mainActivityX.attachCursorOwner(this, viewModel.request(source))
|
mainActivityX.attachCursorOwner(this, viewModel.request(source))
|
||||||
repositoriesDisposable = Observable.just(Unit)
|
viewModel.db.repositoryDao.allFlowable
|
||||||
//.concatWith(Database.observable(Database.Subject.Repositories)) TODO have to be replaced like whole rxJava
|
|
||||||
.observeOn(Schedulers.io())
|
.observeOn(Schedulers.io())
|
||||||
.flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.trueData } } }
|
.flatMapSingle { list -> RxUtils.querySingle { list.mapNotNull { it.trueData } } }
|
||||||
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe { (binding.recyclerView.adapter as? AppListAdapter)?.repositories = it }
|
.subscribe { repositories = it }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroyView() {
|
override fun onDestroyView() {
|
||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
|
||||||
mainActivityX.detachCursorOwner(this)
|
mainActivityX.detachCursorOwner(this)
|
||||||
repositoriesDisposable?.dispose()
|
|
||||||
repositoriesDisposable = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
||||||
|
@ -20,8 +20,6 @@ import com.looker.droidify.widget.RecyclerFastScroller
|
|||||||
import com.mikepenz.fastadapter.FastAdapter
|
import com.mikepenz.fastadapter.FastAdapter
|
||||||
import com.mikepenz.fastadapter.adapters.ItemAdapter
|
import com.mikepenz.fastadapter.adapters.ItemAdapter
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.core.Observable
|
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
|
|
||||||
class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||||
@ -37,7 +35,6 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
override val source = Source.INSTALLED
|
override val source = Source.INSTALLED
|
||||||
|
|
||||||
private var repositories: Map<Long, Repository> = mapOf()
|
private var repositories: Map<Long, Repository> = mapOf()
|
||||||
private var repositoriesDisposable: Disposable? = null
|
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
@ -76,10 +73,9 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
mainActivityX.attachCursorOwner(this, viewModel.request(source))
|
mainActivityX.attachCursorOwner(this, viewModel.request(source))
|
||||||
repositoriesDisposable = Observable.just(Unit)
|
viewModel.db.repositoryDao.allFlowable
|
||||||
//.concatWith(Database.observable(Database.Subject.Repositories)) TODO have to be replaced like whole rxJava
|
|
||||||
.observeOn(Schedulers.io())
|
.observeOn(Schedulers.io())
|
||||||
.flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.trueData } } }
|
.flatMapSingle { list -> RxUtils.querySingle { list.mapNotNull { it.trueData } } }
|
||||||
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe { repositories = it }
|
.subscribe { repositories = it }
|
||||||
@ -89,8 +85,6 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
|
||||||
mainActivityX.detachCursorOwner(this)
|
mainActivityX.detachCursorOwner(this)
|
||||||
repositoriesDisposable?.dispose()
|
|
||||||
repositoriesDisposable = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
||||||
|
@ -20,8 +20,6 @@ import com.looker.droidify.widget.RecyclerFastScroller
|
|||||||
import com.mikepenz.fastadapter.FastAdapter
|
import com.mikepenz.fastadapter.FastAdapter
|
||||||
import com.mikepenz.fastadapter.adapters.ItemAdapter
|
import com.mikepenz.fastadapter.adapters.ItemAdapter
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.core.Observable
|
|
||||||
import io.reactivex.rxjava3.disposables.Disposable
|
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
|
|
||||||
class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||||
@ -37,7 +35,6 @@ class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
override val source = Source.AVAILABLE
|
override val source = Source.AVAILABLE
|
||||||
|
|
||||||
private var repositories: Map<Long, Repository> = mapOf()
|
private var repositories: Map<Long, Repository> = mapOf()
|
||||||
private var repositoriesDisposable: Disposable? = null
|
|
||||||
|
|
||||||
override fun onCreateView(
|
override fun onCreateView(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
@ -76,10 +73,9 @@ class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
mainActivityX.attachCursorOwner(this, viewModel.request(source))
|
mainActivityX.attachCursorOwner(this, viewModel.request(source))
|
||||||
repositoriesDisposable = Observable.just(Unit)
|
viewModel.db.repositoryDao.allFlowable
|
||||||
//.concatWith(Database.observable(Database.Subject.Repositories)) TODO have to be replaced like whole rxJava
|
|
||||||
.observeOn(Schedulers.io())
|
.observeOn(Schedulers.io())
|
||||||
.flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.trueData } } }
|
.flatMapSingle { list -> RxUtils.querySingle { list.mapNotNull { it.trueData } } }
|
||||||
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe { repositories = it }
|
.subscribe { repositories = it }
|
||||||
@ -89,8 +85,6 @@ class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
super.onDestroyView()
|
super.onDestroyView()
|
||||||
|
|
||||||
mainActivityX.detachCursorOwner(this)
|
mainActivityX.detachCursorOwner(this)
|
||||||
repositoriesDisposable?.dispose()
|
|
||||||
repositoriesDisposable = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user