From ee62297b4c51321ac90a30876f76daf1f833920c Mon Sep 17 00:00:00 2001 From: Juan Goncalves Date: Wed, 15 Apr 2020 10:08:09 -0400 Subject: [PATCH] For #7854 - Update the views only if the bookmark node has changed As the bookmark node data is loaded from storage every time the fragment's view is created, when the user navigates to the SelectFolderFragment and returns, the bookmark is loaded once again from storage, replacing the EditText's content (title and URL) which causes the loss of user input. Validating that the loaded bookmark is different from the one that is already referenced in the fragment avoids unnecessarily replacing the `EditText`s values. --- .../fenix/library/bookmarks/edit/EditBookmarkFragment.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/edit/EditBookmarkFragment.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/edit/EditBookmarkFragment.kt index 494887489..1c2ece81c 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/edit/EditBookmarkFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/edit/EditBookmarkFragment.kt @@ -67,6 +67,7 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) { viewLifecycleOwner.lifecycleScope.launch(Main) { val context = requireContext() + val bookmarkNodeBeforeReload = bookmarkNode withContext(IO) { val bookmarksStorage = context.components.core.bookmarksStorage @@ -89,9 +90,10 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) { else -> throw IllegalArgumentException() } - bookmarkNode?.let { bookmarkNode -> - bookmarkNameEdit.setText(bookmarkNode.title) - bookmarkUrlEdit.setText(bookmarkNode.url) + val currentBookmarkNode = bookmarkNode + if (currentBookmarkNode != null && currentBookmarkNode != bookmarkNodeBeforeReload) { + bookmarkNameEdit.setText(currentBookmarkNode.title) + bookmarkUrlEdit.setText(currentBookmarkNode.url) } bookmarkParent?.let { node ->