From 7d993fcd5cf21aeed0587f81590c8d2aaa74b204 Mon Sep 17 00:00:00 2001 From: Bnyro Date: Sat, 13 Aug 2022 22:51:32 +0200 Subject: [PATCH] restore clear buttons --- .../libretube/database/CustomInstanceDao.kt | 3 +++ .../libretube/database/SearchHistoryDao.kt | 3 +++ .../libretube/database/WatchHistoryDao.kt | 3 +++ .../libretube/database/WatchPositionDao.kt | 3 +++ .../libretube/preferences/HistorySettings.kt | 19 ++++++++++++++----- .../libretube/preferences/InstanceSettings.kt | 13 ++++++------- 6 files changed, 32 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/github/libretube/database/CustomInstanceDao.kt b/app/src/main/java/com/github/libretube/database/CustomInstanceDao.kt index 972a74ad1..287abf699 100644 --- a/app/src/main/java/com/github/libretube/database/CustomInstanceDao.kt +++ b/app/src/main/java/com/github/libretube/database/CustomInstanceDao.kt @@ -17,4 +17,7 @@ interface CustomInstanceDao { @Delete fun delete(customInstance: CustomInstance) + + @Query("DELETE FROM customInstance") + fun deleteAll() } diff --git a/app/src/main/java/com/github/libretube/database/SearchHistoryDao.kt b/app/src/main/java/com/github/libretube/database/SearchHistoryDao.kt index 2befbe618..865d670c8 100644 --- a/app/src/main/java/com/github/libretube/database/SearchHistoryDao.kt +++ b/app/src/main/java/com/github/libretube/database/SearchHistoryDao.kt @@ -17,4 +17,7 @@ interface SearchHistoryDao { @Delete fun delete(searchHistoryItem: SearchHistoryItem) + + @Query("DELETE FROM searchHistoryItem") + fun deleteAll() } diff --git a/app/src/main/java/com/github/libretube/database/WatchHistoryDao.kt b/app/src/main/java/com/github/libretube/database/WatchHistoryDao.kt index 5ff9f9c2d..6ac076fd4 100644 --- a/app/src/main/java/com/github/libretube/database/WatchHistoryDao.kt +++ b/app/src/main/java/com/github/libretube/database/WatchHistoryDao.kt @@ -20,4 +20,7 @@ interface WatchHistoryDao { @Delete fun delete(watchHistoryItem: WatchHistoryItem) + + @Query("DELETE FROM watchHistoryItem") + fun deleteAll() } diff --git a/app/src/main/java/com/github/libretube/database/WatchPositionDao.kt b/app/src/main/java/com/github/libretube/database/WatchPositionDao.kt index 999d89e43..d48e79bd1 100644 --- a/app/src/main/java/com/github/libretube/database/WatchPositionDao.kt +++ b/app/src/main/java/com/github/libretube/database/WatchPositionDao.kt @@ -20,4 +20,7 @@ interface WatchPositionDao { @Delete fun delete(watchPosition: WatchPosition) + + @Query("DELETE FROM watchPosition") + fun deleteAll() } diff --git a/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt b/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt index 12c57e1e5..699e89cc5 100644 --- a/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/HistorySettings.kt @@ -4,6 +4,7 @@ import android.os.Bundle import androidx.preference.Preference import com.github.libretube.R import com.github.libretube.activities.SettingsActivity +import com.github.libretube.database.DatabaseHolder import com.github.libretube.views.MaterialPreferenceFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder @@ -18,33 +19,41 @@ class HistorySettings : MaterialPreferenceFragment() { // clear search history val clearHistory = findPreference(PreferenceKeys.CLEAR_SEARCH_HISTORY) clearHistory?.setOnPreferenceClickListener { - showClearDialog(R.string.clear_history, "search_history") + showClearDialog(R.string.clear_history) { + DatabaseHolder.database.searchHistoryDao().deleteAll() + } true } // clear watch history and positions val clearWatchHistory = findPreference(PreferenceKeys.CLEAR_WATCH_HISTORY) clearWatchHistory?.setOnPreferenceClickListener { - showClearDialog(R.string.clear_history, "watch_history") + showClearDialog(R.string.clear_history) { + DatabaseHolder.database.watchHistoryDao().deleteAll() + } true } // clear watch positions val clearWatchPositions = findPreference(PreferenceKeys.CLEAR_WATCH_POSITIONS) clearWatchPositions?.setOnPreferenceClickListener { - showClearDialog(R.string.reset_watch_positions, "watch_positions") + showClearDialog(R.string.reset_watch_positions) { + DatabaseHolder.database.watchPositionDao().deleteAll() + } true } } - private fun showClearDialog(title: Int, preferenceKey: String) { + private fun showClearDialog(title: Int, action: () -> Unit) { MaterialAlertDialogBuilder(requireContext()) .setTitle(title) .setMessage(R.string.irreversible) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.okay) { _, _ -> // clear the selected preference preferences - PreferenceHelper.removePreference(preferenceKey) + Thread { + action() + }.start() } .show() } diff --git a/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt b/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt index 6be7e15ea..86982242a 100644 --- a/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt +++ b/app/src/main/java/com/github/libretube/preferences/InstanceSettings.kt @@ -18,6 +18,7 @@ import com.github.libretube.dialogs.CustomInstanceDialog import com.github.libretube.dialogs.DeleteAccountDialog import com.github.libretube.dialogs.LoginDialog import com.github.libretube.dialogs.LogoutDialog +import com.github.libretube.extensions.await import com.github.libretube.obj.CustomInstance import com.github.libretube.util.ImportHelper import com.github.libretube.util.PermissionHelper @@ -106,9 +107,10 @@ class InstanceSettings : MaterialPreferenceFragment() { val clearCustomInstances = findPreference(PreferenceKeys.CLEAR_CUSTOM_INSTANCES) clearCustomInstances?.setOnPreferenceClickListener { - PreferenceHelper.removePreference("customInstances") - val intent = Intent(context, SettingsActivity::class.java) - startActivity(intent) + Thread { + DatabaseHolder.database.customInstanceDao().deleteAll() + }.await() + activity?.recreate() true } @@ -162,10 +164,7 @@ class InstanceSettings : MaterialPreferenceFragment() { var customInstances = listOf() Thread { customInstances = DatabaseHolder.database.customInstanceDao().getAll() - }.apply { - start() - join() - } + }.await() val instanceNames = arrayListOf() val instanceValues = arrayListOf()