From a3b33736b3fa03957ccf7762fb7a1952730394b8 Mon Sep 17 00:00:00 2001 From: sp2710 <39745544+sp2710@users.noreply.github.com> Date: Thu, 20 Dec 2018 22:08:29 +0530 Subject: [PATCH] Updated deleteAll() method to delete all searches instead of 10(#2181) (#2185) * Updated deleteAll() method to remove all searches insetead of 10 (#2181) * Updated deleteAll() method to delete all searches instead of 10 (#2181) * some minor chages --- .../recentsearches/RecentSearchesDao.java | 49 ++++++++++++------- .../RecentSearchesFragment.java | 4 +- 2 files changed, 34 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesDao.java b/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesDao.java index c38c651a5..6ace129a2 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesDao.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesDao.java @@ -52,26 +52,41 @@ public class RecentSearchesDao { /** * This method is called on confirmation of delete recent searches. - * It deletes latest 10 recent searches from the database - * @param recentSearchesStringList list of recent searches to be deleted + * It deletes all recent searches from the database */ - public void deleteAll(List recentSearchesStringList) { + public void deleteAll() { + Cursor cursor = null; ContentProviderClient db = clientProvider.get(); - for (String recentSearchName : recentSearchesStringList) { - try { - RecentSearch recentSearch = find(recentSearchName); - if (recentSearch.getContentUri() == null) { - throw new RuntimeException("tried to delete item with no content URI"); - } else { - Timber.d("QUERY_NAME %s - delete tried", recentSearch.getContentUri()); - db.delete(recentSearch.getContentUri(), null, null); - Timber.d("QUERY_NAME %s - query deleted", recentSearch.getQuery()); + try { + cursor = db.query( + RecentSearchesContentProvider.BASE_URI, + Table.ALL_FIELDS, + null, + new String[]{}, + Table.COLUMN_LAST_USED + " DESC" + ); + while (cursor != null && cursor.moveToNext()) { + try { + RecentSearch recentSearch = find(fromCursor(cursor).getQuery()); + if (recentSearch.getContentUri() == null) { + throw new RuntimeException("tried to delete item with no content URI"); + } else { + Timber.d("QUERY_NAME %s - delete tried", recentSearch.getContentUri()); + db.delete(recentSearch.getContentUri(), null, null); + Timber.d("QUERY_NAME %s - query deleted", recentSearch.getQuery()); + } + } catch (RemoteException e) { + Timber.e(e, "query deleted"); + throw new RuntimeException(e); + } finally { + db.release(); } - } catch (RemoteException e) { - Timber.e(e, "query deleted"); - throw new RuntimeException(e); - } finally { - db.release(); + } + } catch (RemoteException e) { + throw new RuntimeException(e); + } finally { + if (cursor != null) { + cursor.close(); } } } diff --git a/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java index 289def4b2..be76ef0ed 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/recentsearches/RecentSearchesFragment.java @@ -54,7 +54,7 @@ public class RecentSearchesFragment extends CommonsDaggerSupportFragment { new AlertDialog.Builder(getContext()) .setMessage(getString(R.string.delete_recent_searches_dialog)) .setPositiveButton(android.R.string.yes, (dialog, which) -> { - recentSearchesDao.deleteAll(recentSearches); + recentSearchesDao.deleteAll(); recent_searches_delete_button.setVisibility(View.GONE); recent_searches_text_view.setText(R.string.no_recent_searches); Toast.makeText(getContext(),getString(R.string.search_history_deleted),Toast.LENGTH_SHORT).show(); @@ -70,7 +70,7 @@ public class RecentSearchesFragment extends CommonsDaggerSupportFragment { }); currentThemeIsDark = PreferenceManager.getDefaultSharedPreferences(getContext()).getBoolean("theme", false); setAdapterForThemes(getContext(), currentThemeIsDark); - + recentSearchesList.setAdapter(adapter); recentSearchesList.setOnItemClickListener((parent, view, position, id) -> ( (SearchActivity)getContext()).updateText(recentSearches.get(position)));