From 907d96e39fad403eda204cac6e3eece2909089c4 Mon Sep 17 00:00:00 2001 From: mcarare Date: Mon, 16 Dec 2019 14:55:01 +0200 Subject: [PATCH] For #6709, for #6849 Handle default engine deletion and undo operation Uninstall engine immediately and allow reinstall in onCancel. Set previous list with default engine in onCancel. Keep default engine change in operation and remove now unnecessary view refresh. --- .../search/SearchEngineListPreference.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineListPreference.kt b/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineListPreference.kt index af1add500..cf19417b6 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineListPreference.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineListPreference.kt @@ -162,21 +162,28 @@ abstract class SearchEngineListPreference @JvmOverloads constructor( } private fun deleteSearchEngine(context: Context, engine: SearchEngine) { + val isDefaultEngine = engine == context.components.search.provider.getDefaultEngine(context) + val initialEngineList = searchEngineList.copy() + val initialDefaultEngine = searchEngineList.default + + context.components.search.provider.uninstallSearchEngine(context, engine) + MainScope().allowUndo( view = context.getRootView()!!, message = context .getString(R.string.search_delete_search_engine_success_message, engine.name), undoActionTitle = context.getString(R.string.snackbar_deleted_undo), onCancel = { - searchEngineList = context.components.search.provider.installedSearchEngines(context) + context.components.search.provider.installSearchEngine(context, engine) + + searchEngineList = initialEngineList.copy( + default = initialDefaultEngine + ) refreshSearchEngineViews(context) }, operation = { - val defaultEngine = context.components.search.provider.getDefaultEngine(context) - context.components.search.provider.uninstallSearchEngine(context, engine) - - if (engine == defaultEngine) { + if (isDefaultEngine) { context.settings().defaultSearchEngineName = context .components .search @@ -184,7 +191,6 @@ abstract class SearchEngineListPreference @JvmOverloads constructor( .getDefaultEngine(context) .name } - refreshSearchEngineViews(context) } )