From 32f7b4c8879060da9894be465ba96a0f12835f54 Mon Sep 17 00:00:00 2001 From: Saifuddin Date: Sat, 18 Jan 2025 12:43:28 +0530 Subject: [PATCH] Loading locations data in fragment * BookmarkLocationsController: Changed `loadFavoritesLocations` to be a suspend function. * BookmarkLocationsFragment: Updated the `initList` function to call the controller's suspend function. * BookmarkLocationsDao: Changed `getAllBookmarksLocations` and `getAllBookmarksLocationsPlace` to be suspend functions. --- .../locations/BookmarkLocationsController.kt | 2 +- .../bookmarks/locations/BookmarkLocationsDao.kt | 6 +++--- .../bookmarks/locations/BookmarkLocationsFragment.kt | 11 ++++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsController.kt b/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsController.kt index 7739c20a7..81ec80214 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsController.kt +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsController.kt @@ -15,6 +15,6 @@ class BookmarkLocationsController @Inject constructor( * Load bookmarked locations from the database. * @return a list of Place objects. */ - fun loadFavoritesLocations(): Flow> = + suspend fun loadFavoritesLocations(): List = bookmarkLocationDao.getAllBookmarksLocationsPlace() } diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsDao.kt b/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsDao.kt index d2c0a6fe8..025655daf 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsDao.kt +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsDao.kt @@ -18,7 +18,7 @@ abstract class BookmarkLocationsDao { abstract suspend fun addBookmarkLocation(bookmarkLocation: BookmarksLocations) @Query("SELECT * FROM bookmarks_locations") - abstract fun getAllBookmarksLocations(): Flow> + abstract suspend fun getAllBookmarksLocations(): List @Query("SELECT EXISTS (SELECT 1 FROM bookmarks_locations WHERE location_name = :name)") abstract suspend fun findBookmarkLocation(name: String): Boolean @@ -44,7 +44,7 @@ abstract class BookmarkLocationsDao { return !bookmarkLocationExists } - fun getAllBookmarksLocationsPlace(): Flow> { - return flow { getAllBookmarksLocations().map { it.map { it1 -> it1.toPlace() } } } + suspend fun getAllBookmarksLocationsPlace(): List { + return getAllBookmarksLocations().map { it.toPlace() } } } \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.kt b/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.kt index e334d8bbf..a51d02b10 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.kt +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/locations/BookmarkLocationsFragment.kt @@ -130,13 +130,14 @@ class BookmarkLocationsFragment : DaggerFragment() { } private fun initList() { - var places: List = listOf() + var places: List viewLifecycleOwner.lifecycleScope.launch { - controller.loadFavoritesLocations().collect { - adapter.items = it - places = it - } + places = controller.loadFavoritesLocations() + updateUIList(places) } + } + + private fun updateUIList(places: List) { adapter.items = places binding?.loadingImagesProgressBar?.visibility = View.GONE if (places.isEmpty()) {