parent
da59e36c1b
commit
33e881ca8a
|
@ -203,7 +203,6 @@ class BookmarkAdapter(val emptyView: View, val interactor: BookmarkViewInteracto
|
|||
|
||||
if (!item.inRoots()) {
|
||||
setupMenu(item)
|
||||
view.setOnLongClickListener(null)
|
||||
} else {
|
||||
view.overflowView.visibility = View.GONE
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import kotlinx.coroutines.isActive
|
|||
import kotlinx.coroutines.launch
|
||||
import mozilla.appservices.places.BookmarkRoot
|
||||
import mozilla.components.concept.storage.BookmarkNode
|
||||
import mozilla.components.concept.storage.BookmarkNodeType
|
||||
import mozilla.components.concept.sync.AccountObserver
|
||||
import mozilla.components.concept.sync.OAuthAccount
|
||||
import mozilla.components.concept.sync.Profile
|
||||
|
@ -158,7 +159,11 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), BackHandler, Accou
|
|||
inflater.inflate(R.menu.bookmarks_menu, menu)
|
||||
}
|
||||
is BookmarkState.Mode.Selecting -> {
|
||||
inflater.inflate(R.menu.bookmarks_select_multi, menu)
|
||||
if (mode.selectedItems.any { it.type != BookmarkNodeType.ITEM }) {
|
||||
inflater.inflate(R.menu.bookmarks_select_multi_not_item, menu)
|
||||
} else {
|
||||
inflater.inflate(R.menu.bookmarks_select_multi, menu)
|
||||
}
|
||||
menu.findItem(R.id.edit_bookmark_multi_select)?.run {
|
||||
isVisible = mode.selectedItems.size == 1
|
||||
icon.colorFilter = PorterDuffColorFilter(
|
||||
|
|
|
@ -84,6 +84,10 @@ class BookmarkFragmentInteractor(
|
|||
}
|
||||
|
||||
override fun select(node: BookmarkNode) {
|
||||
if (node.inRoots()) {
|
||||
snackbarPresenter.present(context.getString(R.string.bookmark_cannot_edit_root))
|
||||
return
|
||||
}
|
||||
bookmarkStore.dispatch(BookmarkAction.Select(node))
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<item
|
||||
android:id="@+id/delete_bookmarks_multi_select"
|
||||
android:icon="@drawable/mozac_ic_delete"
|
||||
android:iconTint="?primaryText"
|
||||
android:title="@string/bookmark_menu_delete_button"
|
||||
app:showAsAction="ifRoom"
|
||||
tools:targetApi="o" />
|
||||
</menu>
|
|
@ -709,4 +709,6 @@
|
|||
<string name="sign_out_disconnect">Disconnect</string>
|
||||
<!-- Option to cancel signing out shown in confirmation dialog to sign out of account -->
|
||||
<string name="sign_out_cancel">Cancel</string>
|
||||
<!-- Error message snackbar shown after the user tried to select a default folder which cannot be altered -->
|
||||
<string name="bookmark_cannot_edit_root">Can’t edit default folders</string>
|
||||
</resources>
|
||||
|
|
|
@ -10,12 +10,14 @@ import android.content.Context
|
|||
import androidx.core.content.getSystemService
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.NavDestination
|
||||
import io.mockk.called
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.spyk
|
||||
import io.mockk.verify
|
||||
import io.mockk.verifyOrder
|
||||
import mozilla.appservices.places.BookmarkRoot
|
||||
import mozilla.components.concept.storage.BookmarkNode
|
||||
import mozilla.components.concept.storage.BookmarkNodeType
|
||||
import org.junit.Before
|
||||
|
@ -61,6 +63,9 @@ class BookmarkFragmentInteractorTest {
|
|||
private val tree = BookmarkNode(
|
||||
BookmarkNodeType.FOLDER, "123", null, 0, "Mobile", null, listOf(item, separator, childItem, subfolder)
|
||||
)
|
||||
private val root = BookmarkNode(
|
||||
BookmarkNodeType.FOLDER, BookmarkRoot.Root.id, null, 0, BookmarkRoot.Root.name, null, null
|
||||
)
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
|
@ -164,6 +169,13 @@ class BookmarkFragmentInteractorTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `cannot select bookmark roots`() {
|
||||
interactor.select(root)
|
||||
|
||||
verify { bookmarkStore wasNot called }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `copy a bookmark item`() {
|
||||
val clipboardManager: ClipboardManager = mockk(relaxed = true)
|
||||
|
|
Loading…
Reference in New Issue