Add: Launch RepoEditSheet on adding new repo

This commit is contained in:
machiav3lli 2022-04-17 03:56:41 +02:00
parent fe9e504100
commit 13f79a9568
3 changed files with 20 additions and 3 deletions

View File

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

View File

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

View File

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