mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Add: Launch RepoEditSheet on adding new repo
This commit is contained in:
parent
fe9e504100
commit
13f79a9568
@ -58,6 +58,9 @@ interface RepositoryDao : BaseDao<Repository> {
|
||||
// TODO clean up products and other tables afterwards
|
||||
@Query("DELETE FROM repository WHERE _id = :id")
|
||||
fun deleteById(id: Long): Int
|
||||
|
||||
@Query("SELECT MAX(_id) FROM repository")
|
||||
fun latestAddedId(): Long
|
||||
}
|
||||
|
||||
@Dao
|
||||
|
@ -59,6 +59,13 @@ class PrefsRepositoriesFragment : BaseNavFragment() {
|
||||
viewModel.repositories.observe(requireActivity()) {
|
||||
redrawPage(it)
|
||||
}
|
||||
viewModel.toLaunch.observe(viewLifecycleOwner) {
|
||||
if (it?.first == true) {
|
||||
EditRepositorySheetX(it.second)
|
||||
.showNow(parentFragmentManager, "Repository ${it.second}")
|
||||
viewModel.emptyToLaunch()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
|
@ -14,19 +14,26 @@ import kotlinx.coroutines.withContext
|
||||
class RepositoriesViewModelX(val db: DatabaseX) : ViewModel() {
|
||||
|
||||
val repositories = MediatorLiveData<List<Repository>>()
|
||||
val toLaunch = MediatorLiveData<Pair<Boolean, Long>?>()
|
||||
|
||||
init {
|
||||
repositories.addSource(db.repositoryDao.allLive, repositories::setValue)
|
||||
toLaunch.value = null
|
||||
}
|
||||
|
||||
fun addRepository() {
|
||||
viewModelScope.launch {
|
||||
addNewRepository()
|
||||
toLaunch.value = Pair(true, addNewRepository())
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun addNewRepository() {
|
||||
withContext(Dispatchers.IO) { db.repositoryDao.insert(newRepository(address = "new.Repository")) }
|
||||
private suspend fun addNewRepository(): Long = withContext(Dispatchers.IO) {
|
||||
db.repositoryDao.insert(newRepository(address = "new.Repository"))
|
||||
db.repositoryDao.latestAddedId()
|
||||
}
|
||||
|
||||
fun emptyToLaunch() {
|
||||
toLaunch.value = null
|
||||
}
|
||||
|
||||
class Factory(val db: DatabaseX) : ViewModelProvider.Factory {
|
||||
|
Loading…
x
Reference in New Issue
Block a user