From 13f79a9568d35de8213510e1635523e6c103b882 Mon Sep 17 00:00:00 2001 From: machiav3lli Date: Sun, 17 Apr 2022 03:56:41 +0200 Subject: [PATCH] Add: Launch RepoEditSheet on adding new repo --- .../kotlin/com/looker/droidify/database/DAOs.kt | 3 +++ .../ui/fragments/PrefsRepositoriesFragment.kt | 7 +++++++ .../ui/viewmodels/RepositoriesViewModelX.kt | 13 ++++++++++--- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/com/looker/droidify/database/DAOs.kt b/src/main/kotlin/com/looker/droidify/database/DAOs.kt index 135dcc5a..8f349084 100644 --- a/src/main/kotlin/com/looker/droidify/database/DAOs.kt +++ b/src/main/kotlin/com/looker/droidify/database/DAOs.kt @@ -58,6 +58,9 @@ interface RepositoryDao : BaseDao { // 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 diff --git a/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt b/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt index 3a0c1de2..3c84a499 100644 --- a/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt +++ b/src/main/kotlin/com/looker/droidify/ui/fragments/PrefsRepositoriesFragment.kt @@ -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() { diff --git a/src/main/kotlin/com/looker/droidify/ui/viewmodels/RepositoriesViewModelX.kt b/src/main/kotlin/com/looker/droidify/ui/viewmodels/RepositoriesViewModelX.kt index f94ebf5c..9cba24cb 100644 --- a/src/main/kotlin/com/looker/droidify/ui/viewmodels/RepositoriesViewModelX.kt +++ b/src/main/kotlin/com/looker/droidify/ui/viewmodels/RepositoriesViewModelX.kt @@ -14,19 +14,26 @@ import kotlinx.coroutines.withContext class RepositoriesViewModelX(val db: DatabaseX) : ViewModel() { val repositories = MediatorLiveData>() + val toLaunch = MediatorLiveData?>() 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 {