1
0
Fork 0

For #1877: Crash on edit or delete the default bookmark folders

master
Colin Lee 2019-04-25 08:09:19 -07:00 committed by Emily Kager
parent 9e9b6f98f9
commit 688cae33c3
1 changed files with 14 additions and 11 deletions

View File

@ -53,13 +53,13 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
val view = LayoutInflater.from(parent.context).inflate(R.layout.bookmark_row, parent, false)
return when (viewType) {
BookmarkItemViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkItemViewHolder(
BookmarkItemViewHolder.viewType.ordinal -> BookmarkItemViewHolder(
view, actionEmitter, job
)
BookmarkFolderViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkFolderViewHolder(
BookmarkFolderViewHolder.viewType.ordinal -> BookmarkFolderViewHolder(
view, actionEmitter, job
)
BookmarkSeparatorViewHolder.viewType.ordinal -> BookmarkAdapter.BookmarkSeparatorViewHolder(
BookmarkSeparatorViewHolder.viewType.ordinal -> BookmarkSeparatorViewHolder(
view, actionEmitter, job
)
else -> throw IllegalStateException("ViewType $viewType does not match to a ViewHolder")
@ -91,17 +91,17 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (holder) {
is BookmarkAdapter.BookmarkItemViewHolder -> holder.bind(
is BookmarkItemViewHolder -> holder.bind(
tree[position],
mode,
tree[position] in selected
)
is BookmarkAdapter.BookmarkFolderViewHolder -> holder.bind(
is BookmarkFolderViewHolder -> holder.bind(
tree[position],
mode,
tree[position] in selected
)
is BookmarkAdapter.BookmarkSeparatorViewHolder -> holder.bind(
is BookmarkSeparatorViewHolder -> holder.bind(
tree[position], mode,
tree[position] in selected
)
@ -230,7 +230,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
}
companion object {
val viewType = BookmarkAdapter.ViewType.ITEM
val viewType = ViewType.ITEM
}
}
@ -290,7 +290,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
}
}
if (enumValues<BookmarkRoot>().all { it.id != item.guid }) {
if (!item.inRoots()) {
bookmark_overflow.increaseTapArea(bookmarkOverflowExtraDips)
bookmark_overflow.setOnClickListener {
bookmarkItemMenu.menuBuilder.build(containerView.context).show(
@ -298,6 +298,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
orientation = BrowserMenu.Orientation.DOWN
)
}
bookmark_layout.setOnLongClickListener(null)
} else {
bookmark_overflow.visibility = View.GONE
}
@ -319,7 +320,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
}
bookmark_layout.setOnLongClickListener {
if (mode == BookmarkState.Mode.Normal) {
if (mode == BookmarkState.Mode.Normal && !item.inRoots()) {
if (selected) actionEmitter.onNext(BookmarkAction.Deselect(item)) else actionEmitter.onNext(
BookmarkAction.Select(item)
)
@ -329,7 +330,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
}
companion object {
val viewType = BookmarkAdapter.ViewType.FOLDER
val viewType = ViewType.FOLDER
}
}
@ -366,7 +367,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
}
companion object {
val viewType = BookmarkAdapter.ViewType.SEPARATOR
val viewType = ViewType.SEPARATOR
}
}
@ -378,3 +379,5 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer<BookmarkA
ITEM, FOLDER, SEPARATOR
}
}
fun BookmarkNode.inRoots() = enumValues<BookmarkRoot>().any { it.id == guid }