diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceDao.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceDao.java index f18b80004..544a8fe63 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceDao.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceDao.java @@ -42,4 +42,24 @@ public abstract class PlaceDao { saveSynchronous(place); }); } + + /** + * Deletes all Place objects from the database. + * + * @return A Completable that completes once the deletion operation is done. + */ + @Query("DELETE FROM place") + public abstract void deleteAllSynchronous(); + + /** + * Deletes all Place objects asynchronously from the database. + * + * @return A Completable that completes once the deletion operation is done. + */ + public Completable deleteAll() { + return Completable + .fromAction(() -> { + deleteAllSynchronous(); + }); + } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlacesLocalDataSource.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlacesLocalDataSource.java index 8de437c82..b4a8f2623 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlacesLocalDataSource.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlacesLocalDataSource.java @@ -36,4 +36,8 @@ public class PlacesLocalDataSource { public Completable savePlace(Place place) { return placeDao.save(place); } + + public Completable clearCache() { + return placeDao.deleteAll(); + } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlacesRepository.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlacesRepository.java index 85e964ddb..a50fed909 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlacesRepository.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlacesRepository.java @@ -38,4 +38,7 @@ public class PlacesRepository { return localDataSource.fetchPlace(entityID); } + public Completable clearCache() { + return localDataSource.clearCache(); + } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java index 943352d92..06f19fb7d 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/fragments/NearbyParentFragment.java @@ -32,6 +32,7 @@ import android.preference.PreferenceManager; import android.provider.Settings; import android.text.Html; import android.text.method.LinkMovementMethod; +import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -319,6 +320,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment @Override public boolean onMenuItemClick(MenuItem item) { try { + Timber.d("Reload: menuItem"); // REFRESH BUTTON FUNCTIONALITY HERE emptyCache(); reloadMap(); @@ -1130,7 +1132,8 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment } /** - * Reloads the Nearby map + * Reloads the Nearby map. + * This method clears the existing markers, resets the map state, and repopulates the map with the latest data. */ private void reloadMap(){ @@ -1141,7 +1144,13 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment * Empties the Nearby local cache */ private void emptyCache(){ + Timber.d("Reload: emptyCache"); + placesRepository.clearCache(); + + // Optionally, clear any in-memory cache or state + updatedPlacesList.clear(); + updatedLatLng = null; } private void savePlacesAsKML() {