diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt index 2843bc443..f6f6a368d 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt @@ -26,16 +26,30 @@ class BookmarkAdapter(private val emptyView: View, private val interactor: Bookm private var isFirstRun = true fun updateData(tree: BookmarkNode?, mode: BookmarkFragmentState.Mode) { + // Display folders above all other bookmarks. + val allNodes = tree?.children.orEmpty() + val folders: MutableList = mutableListOf() + val notFolders: MutableList = mutableListOf() + allNodes.forEach { + if (it.type == BookmarkNodeType.FOLDER) { + folders.add(it) + } else { + notFolders.add(it) + } + } + val newTree = folders + notFolders + val diffUtil = DiffUtil.calculateDiff( BookmarkDiffUtil( this.tree, - tree?.children.orEmpty(), + newTree, this.mode, mode ) ) - this.tree = tree?.children.orEmpty() + this.tree = newTree + isFirstRun = if (isFirstRun) false else { emptyView.isVisible = this.tree.isEmpty() false