For #13157: Filter out folder being edited from 'select folder' dialog

pull/149/head
Grisha Kruglov 4 years ago committed by Grisha Kruglov
parent fe288edb5d
commit 958474f9fb

@ -107,7 +107,12 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
R.id.bookmarkEditFragment,
EditBookmarkFragmentDirections
.actionBookmarkEditFragmentToBookmarkSelectFolderFragment(
allowCreatingNewFolder = false
allowCreatingNewFolder = false,
// Don't allow moving folders into themselves.
hideFolderGuid = when (bookmarkNode!!.type) {
BookmarkNodeType.FOLDER -> bookmarkNode!!.guid
else -> null
}
)
)
}

@ -24,12 +24,19 @@ import org.mozilla.fenix.library.bookmarks.selectfolder.SelectBookmarkFolderAdap
class SelectBookmarkFolderAdapter(private val sharedViewModel: BookmarksSharedViewModel) :
ListAdapter<BookmarkNodeWithDepth, BookmarkFolderViewHolder>(DiffCallback) {
fun updateData(tree: BookmarkNode?) {
fun updateData(tree: BookmarkNode?, hideFolderGuid: String?) {
val updatedData = tree
?.convertToFolderDepthTree()
?.drop(1)
.orEmpty()
submitList(updatedData)
val filteredData = if (hideFolderGuid != null && updatedData.isNotEmpty()) {
updatedData.filter { it.node.guid != hideFolderGuid }
} else {
updatedData
}
submitList(filteredData)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BookmarkFolderViewHolder {

@ -50,6 +50,8 @@ class SelectBookmarkFolderFragment : Fragment() {
super.onResume()
showToolbar(getString(R.string.bookmark_select_folder_fragment_label))
val args: SelectBookmarkFolderFragmentArgs by navArgs()
viewLifecycleOwner.lifecycleScope.launch(Main) {
bookmarkNode = withContext(IO) {
val context = requireContext()
@ -59,7 +61,7 @@ class SelectBookmarkFolderFragment : Fragment() {
}
val adapter = SelectBookmarkFolderAdapter(sharedViewModel)
recylerViewBookmarkFolders.adapter = adapter
adapter.updateData(bookmarkNode)
adapter.updateData(bookmarkNode, args.hideFolderGuid)
}
}

@ -308,6 +308,11 @@
android:name="allowCreatingNewFolder"
android:defaultValue="false"
app:argType="boolean" />
<argument
android:name="hideFolderGuid"
android:defaultValue="@null"
app:nullable="true"
app:argType="string" />
</fragment>
<fragment

Loading…
Cancel
Save