Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

For #3967 - Invokes pending deletion with more bookmark actions #4522

Merged
merged 1 commit into from
Aug 21, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ class DefaultBookmarkController(
private val context: Context,
private val navController: NavController,
private val snackbarPresenter: FenixSnackbarPresenter,
private val deleteBookmarkNodes: (Set<BookmarkNode>, Event) -> Unit
private val deleteBookmarkNodes: (Set<BookmarkNode>, Event) -> Unit,
private val invokePendingDeletion: () -> Unit
) : BookmarkController {

private val activity: HomeActivity = context as HomeActivity
Expand Down Expand Up @@ -77,7 +78,8 @@ class DefaultBookmarkController(
}

override fun handleBookmarkSharing(item: BookmarkNode) {
navigate(BookmarkFragmentDirections.actionBookmarkFragmentToShareFragment(
navigate(
BookmarkFragmentDirections.actionBookmarkFragmentToShareFragment(
url = item.url!!,
title = item.title
)
Expand All @@ -93,10 +95,12 @@ class DefaultBookmarkController(
}

override fun handleBackPressed() {
invokePendingDeletion.invoke()
navController.popBackStack()
}

override fun handleSigningIn() {
invokePendingDeletion.invoke()
services.launchPairingSignIn(context, navController)
}

Expand All @@ -106,13 +110,15 @@ class DefaultBookmarkController(
from: BrowserDirection,
mode: BrowsingMode
) {
invokePendingDeletion.invoke()
with(activity) {
browsingModeManager.mode = mode
openToBrowserAndLoad(searchTermOrURL, newTab, from)
}
}

private fun navigate(directions: NavDirections) {
invokePendingDeletion.invoke()
navController.nav(R.id.bookmarkFragment, directions)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import androidx.fragment.app.activityViewModels
import androidx.lifecycle.Observer
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.NavDirections
import androidx.navigation.fragment.findNavController
import kotlinx.android.synthetic.main.fragment_bookmark.view.*
import kotlinx.coroutines.Dispatchers.IO
Expand Down Expand Up @@ -91,7 +92,8 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), BackHandler, Accou
context = context!!,
navController = findNavController(),
snackbarPresenter = FenixSnackbarPresenter(view),
deleteBookmarkNodes = ::deleteMulti
deleteBookmarkNodes = ::deleteMulti,
invokePendingDeletion = ::invokePendingDeletion
),
metrics = metrics!!
)
Expand Down Expand Up @@ -185,12 +187,12 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), BackHandler, Accou
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.libraryClose -> {
invokePendingDeletion()
close()
true
}
R.id.add_bookmark_folder -> {
nav(
R.id.bookmarkFragment,
navigate(
BookmarkFragmentDirections
.actionBookmarkFragmentToBookmarkAddFolderFragment()
)
Expand All @@ -199,23 +201,23 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), BackHandler, Accou
R.id.open_bookmarks_in_new_tabs_multi_select -> {
openItemsInNewTab { node -> node.url }

nav(R.id.bookmarkFragment, BookmarkFragmentDirections.actionBookmarkFragmentToHomeFragment())
navigate(BookmarkFragmentDirections.actionBookmarkFragmentToHomeFragment())
metrics?.track(Event.OpenedBookmarksInNewTabs)
true
}
R.id.open_bookmarks_in_private_tabs_multi_select -> {
openItemsInNewTab(private = true) { node -> node.url }

nav(R.id.bookmarkFragment, BookmarkFragmentDirections.actionBookmarkFragmentToHomeFragment())
navigate(BookmarkFragmentDirections.actionBookmarkFragmentToHomeFragment())
metrics?.track(Event.OpenedBookmarksInPrivateTabs)
true
}
R.id.edit_bookmark_multi_select -> {
val bookmark = bookmarkStore.state.mode.selectedItems.first()
nav(
R.id.bookmarkFragment,
BookmarkFragmentDirections
.actionBookmarkFragmentToBookmarkEditFragment(bookmark.guid)
navigate(
BookmarkFragmentDirections.actionBookmarkFragmentToBookmarkEditFragment(
bookmark.guid
)
)
true
}
Expand All @@ -227,6 +229,11 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), BackHandler, Accou
}
}

private fun navigate(directions: NavDirections) {
invokePendingDeletion()
nav(R.id.bookmarkFragment, directions)
}

override fun onBackPressed(): Boolean = bookmarkView.onBackPressed()

override fun onAuthenticated(account: OAuthAccount, newAccount: Boolean) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class BookmarkControllerTest {
private val navController: NavController = mockk(relaxed = true)
private val snackbarPresenter: FenixSnackbarPresenter = mockk(relaxed = true)
private val deleteBookmarkNodes: (Set<BookmarkNode>, Event) -> Unit = mockk(relaxed = true)
private val invokePendingDeletion: () -> Unit = mockk(relaxed = true)

private val homeActivity: HomeActivity = mockk(relaxed = true)
private val services: Services = mockk(relaxed = true)
Expand All @@ -63,13 +64,16 @@ class BookmarkControllerTest {
)

every { homeActivity.components.services } returns services
every { navController.currentDestination } returns NavDestination("").apply { id = R.id.bookmarkFragment }
every { navController.currentDestination } returns NavDestination("").apply {
id = R.id.bookmarkFragment
}

controller = DefaultBookmarkController(
context = homeActivity,
navController = navController,
snackbarPresenter = snackbarPresenter,
deleteBookmarkNodes = deleteBookmarkNodes
deleteBookmarkNodes = deleteBookmarkNodes,
invokePendingDeletion = invokePendingDeletion
)
}

Expand All @@ -78,6 +82,7 @@ class BookmarkControllerTest {
controller.handleBookmarkTapped(item)

verifyOrder {
invokePendingDeletion.invoke()
homeActivity.browsingModeManager.mode = BrowsingMode.Normal
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
}
Expand All @@ -88,6 +93,7 @@ class BookmarkControllerTest {
controller.handleBookmarkExpand(tree)

verify {
invokePendingDeletion.invoke()
navController.navigate(BookmarkFragmentDirections.actionBookmarkFragmentSelf(tree.guid))
}
}
Expand All @@ -106,6 +112,7 @@ class BookmarkControllerTest {
controller.handleBookmarkEdit(item)

verify {
invokePendingDeletion.invoke()
navController.navigate(BookmarkFragmentDirections.actionBookmarkFragmentToBookmarkEditFragment(item.guid))
}
}
Expand Down Expand Up @@ -141,6 +148,7 @@ class BookmarkControllerTest {
controller.handleBookmarkSharing(item)

verify {
invokePendingDeletion.invoke()
navController.navigate(
BookmarkFragmentDirections.actionBookmarkFragmentToShareFragment(
item.url,
Expand All @@ -155,6 +163,7 @@ class BookmarkControllerTest {
controller.handleOpeningBookmark(item, BrowsingMode.Normal)

verifyOrder {
invokePendingDeletion.invoke()
homeActivity.browsingModeManager.mode = BrowsingMode.Normal
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
}
Expand All @@ -165,6 +174,7 @@ class BookmarkControllerTest {
controller.handleOpeningBookmark(item, BrowsingMode.Private)

verifyOrder {
invokePendingDeletion.invoke()
homeActivity.browsingModeManager.mode = BrowsingMode.Private
homeActivity.openToBrowserAndLoad(item.url!!, true, BrowserDirection.FromBookmarks)
}
Expand Down Expand Up @@ -202,6 +212,7 @@ class BookmarkControllerTest {
controller.handleBackPressed()

verify {
invokePendingDeletion.invoke()
navController.popBackStack()
}
}
Expand All @@ -211,6 +222,7 @@ class BookmarkControllerTest {
controller.handleSigningIn()

verify {
invokePendingDeletion.invoke()
services.launchPairingSignIn(homeActivity, navController)
}
}
Expand Down