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 // TODO clean up products and other tables afterwards
@Query("DELETE FROM repository WHERE _id = :id") @Query("DELETE FROM repository WHERE _id = :id")
fun deleteById(id: Long): Int fun deleteById(id: Long): Int
@Query("SELECT MAX(_id) FROM repository")
fun latestAddedId(): Long
} }
@Dao @Dao

View File

@ -59,6 +59,13 @@ class PrefsRepositoriesFragment : BaseNavFragment() {
viewModel.repositories.observe(requireActivity()) { viewModel.repositories.observe(requireActivity()) {
redrawPage(it) redrawPage(it)
} }
viewModel.toLaunch.observe(viewLifecycleOwner) {
if (it?.first == true) {
EditRepositorySheetX(it.second)
.showNow(parentFragmentManager, "Repository ${it.second}")
viewModel.emptyToLaunch()
}
}
} }
override fun onDestroyView() { override fun onDestroyView() {

View File

@ -14,19 +14,26 @@ import kotlinx.coroutines.withContext
class RepositoriesViewModelX(val db: DatabaseX) : ViewModel() { class RepositoriesViewModelX(val db: DatabaseX) : ViewModel() {
val repositories = MediatorLiveData<List<Repository>>() val repositories = MediatorLiveData<List<Repository>>()
val toLaunch = MediatorLiveData<Pair<Boolean, Long>?>()
init { init {
repositories.addSource(db.repositoryDao.allLive, repositories::setValue) repositories.addSource(db.repositoryDao.allLive, repositories::setValue)
toLaunch.value = null
} }
fun addRepository() { fun addRepository() {
viewModelScope.launch { viewModelScope.launch {
addNewRepository() toLaunch.value = Pair(true, addNewRepository())
} }
} }
private suspend fun addNewRepository() { private suspend fun addNewRepository(): Long = withContext(Dispatchers.IO) {
withContext(Dispatchers.IO) { db.repositoryDao.insert(newRepository(address = "new.Repository")) } db.repositoryDao.insert(newRepository(address = "new.Repository"))
db.repositoryDao.latestAddedId()
}
fun emptyToLaunch() {
toLaunch.value = null
} }
class Factory(val db: DatabaseX) : ViewModelProvider.Factory { class Factory(val db: DatabaseX) : ViewModelProvider.Factory {