Skip to content

Instantly share code, notes, and snippets.

@boek
Created March 18, 2020 20:17
Show Gist options
  • Select an option

  • Save boek/7f067cf198baaeae6e549cbb7f088f5a to your computer and use it in GitHub Desktop.

Select an option

Save boek/7f067cf198baaeae6e549cbb7f088f5a to your computer and use it in GitHub Desktop.
diff --git a/app/src/main/java/org/mozilla/fenix/library/LibraryPageView.kt b/app/src/main/java/org/mozilla/fenix/library/LibraryPageView.kt
index 3f5eecfb..bc51ba84 100644
--- a/app/src/main/java/org/mozilla/fenix/library/LibraryPageView.kt
+++ b/app/src/main/java/org/mozilla/fenix/library/LibraryPageView.kt
@@ -22,27 +22,23 @@ open class LibraryPageView(
protected val activity = context.asActivity()
protected fun setUiForNormalMode(
- title: String?,
- libraryItemsList: RecyclerView
+ title: String?
) {
updateToolbar(
title = title,
foregroundColor = context.getColorFromAttr(R.attr.primaryText),
backgroundColor = context.getColorFromAttr(R.attr.foundation)
)
- libraryItemsList.adapter?.notifyDataSetChanged()
}
protected fun setUiForSelectingMode(
- title: String?,
- libraryItemsList: RecyclerView
+ title: String?
) {
updateToolbar(
title = title,
foregroundColor = ContextCompat.getColor(context, R.color.white_color),
backgroundColor = context.getColorFromAttr(R.attr.accentHighContrast)
)
- libraryItemsList.adapter?.notifyDataSetChanged()
}
private fun updateToolbar(title: String?, foregroundColor: Int, backgroundColor: Int) {
diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt
index c71dcedb..bccfd2a5 100644
--- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt
+++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkView.kt
@@ -127,8 +127,7 @@ class BookmarkView(
setUiForNormalMode(state.tree)
is BookmarkFragmentState.Mode.Selecting ->
setUiForSelectingMode(
- context.getString(R.string.bookmarks_multi_select_title, mode.selectedItems.size),
- view.bookmark_list
+ context.getString(R.string.bookmarks_multi_select_title, mode.selectedItems.size)
)
}
view.bookmarks_progress_bar.isVisible = state.isLoading
@@ -150,8 +149,7 @@ class BookmarkView(
private fun setUiForNormalMode(root: BookmarkNode?) {
super.setUiForNormalMode(
- if (BookmarkRoot.Mobile.id == root?.guid) context.getString(R.string.library_bookmarks) else root?.title,
- view.bookmark_list
+ if (BookmarkRoot.Mobile.id == root?.guid) context.getString(R.string.library_bookmarks) else root?.title
)
}
diff --git a/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt b/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt
index 9c3097e4..ca3fce72 100644
--- a/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt
+++ b/app/src/main/java/org/mozilla/fenix/library/history/HistoryView.kt
@@ -78,14 +78,14 @@ class HistoryView(
items = state.items
mode = state.mode
- if (state.mode != oldMode) {
- interactor.onModeSwitched()
- historyAdapter.updateMode(state.mode)
+ historyAdapter.updateMode(state.mode)
+ val first = layoutManager.findFirstVisibleItemPosition()
+ val last = layoutManager.findLastCompletelyVisibleItemPosition()
+ historyAdapter.notifyItemRangeChanged(first, last - first)
- // Deselect all the previously selected items
- oldMode.selectedItems.forEach {
- historyAdapter.notifyItemChanged(it.id)
- }
+
+ if (state.mode::class != oldMode::class) {
+ interactor.onModeSwitched()
}
if (state.mode is HistoryFragmentState.Mode.Editing) {
@@ -99,12 +99,10 @@ class HistoryView(
when (val mode = state.mode) {
is HistoryFragmentState.Mode.Normal ->
setUiForNormalMode(
- context.getString(R.string.library_history),
- view.history_list)
+ context.getString(R.string.library_history))
is HistoryFragmentState.Mode.Editing ->
setUiForSelectingMode(
- context.getString(R.string.history_multi_select_title, mode.selectedItems.size),
- view.history_list)
+ context.getString(R.string.history_multi_select_title, mode.selectedItems.size))
}
}
diff --git a/app/src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt b/app/src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt
index 526144d1..8545d5dc 100644
--- a/app/src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt
+++ b/app/src/main/java/org/mozilla/fenix/library/history/viewholders/HistoryListItemViewHolder.kt
@@ -45,8 +45,6 @@ class HistoryListItemViewHolder(
showDeleteButton: Boolean,
mode: HistoryFragmentState.Mode
) {
- this.item = item
-
itemView.history_layout.titleView.text = item.title
itemView.history_layout.urlView.text = item.url
@@ -57,12 +55,18 @@ class HistoryListItemViewHolder(
itemView.history_layout.setSelectionInteractor(item, selectionHolder, historyInteractor)
itemView.history_layout.changeSelected(item in selectionHolder.selectedItems)
- itemView.history_layout.loadFavicon(item.url)
+
+ if (this.item?.url != item.url) {
+ itemView.history_layout.loadFavicon(item.url)
+ }
+
if (mode === HistoryFragmentState.Mode.Normal) {
itemView.overflow_menu.showAndEnable()
} else {
itemView.overflow_menu.hideAndDisable()
}
+
+ this.item = item
}
private fun toggleHeader(headerText: String?) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment