1
0
Fork 0

Don't use ProcessLifecycleOwner for view-tied consume

master
ekager 2020-04-18 13:03:57 -07:00 committed by Emily Kager
parent f801f32027
commit 5d51c4f059
6 changed files with 25 additions and 23 deletions

View File

@ -222,7 +222,7 @@ class HomeFragment : Fragment() {
showDeleteCollectionPrompt = ::showDeleteCollectionPrompt,
openSettingsScreen = ::openSettingsScreen,
openSearchScreen = ::navigateToSearch,
openWhatsNewLink = { openCustomTab(SupportUtils.getWhatsNewUrl(view.context)) },
openWhatsNewLink = { openCustomTab(SupportUtils.getWhatsNewUrl(activity)) },
openPrivacyNotice = { openCustomTab(SupportUtils.getPrivacyNoticeUrl()) }
)
)
@ -230,7 +230,9 @@ class HomeFragment : Fragment() {
setOffset(view)
sessionControlView = SessionControlView(
homeFragmentStore,
view.sessionControlRecyclerView, sessionControlInteractor,
view.sessionControlRecyclerView,
sessionControlInteractor,
viewLifecycleOwner,
homeViewModel
)
activity.themeManager.applyStatusBarTheme(activity)

View File

@ -9,7 +9,6 @@ import androidx.lifecycle.ViewModel
class HomeScreenViewModel : ViewModel() {
var layoutManagerState: Parcelable? = null
var motionLayoutProgress = 0F
/**
* Used to remember if we need to scroll to top of the homeFragment's recycleView (top sites) see #8561

View File

@ -6,7 +6,7 @@ package org.mozilla.fenix.home.sessioncontrol
import android.os.Build
import android.view.View
import androidx.lifecycle.ProcessLifecycleOwner
import androidx.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@ -164,6 +164,7 @@ class SessionControlView(
private val homeFragmentStore: HomeFragmentStore,
override val containerView: View?,
interactor: SessionControlInteractor,
private val viewLifecycleOwner: LifecycleOwner,
private var homeScreenViewModel: HomeScreenViewModel
) : LayoutContainer {
@ -183,7 +184,7 @@ class SessionControlView(
)
itemTouchHelper.attachToRecyclerView(this)
view.consumeFrom(homeFragmentStore, ProcessLifecycleOwner.get()) {
view.consumeFrom(homeFragmentStore, viewLifecycleOwner) {
update(it)
}
}

View File

@ -17,7 +17,6 @@ import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.nav
@ -43,7 +42,7 @@ interface BookmarkController {
class DefaultBookmarkController(
private val context: Context,
private val navController: NavController,
private val snackbar: FenixSnackbar,
private val showSnackbar: (String) -> Unit,
private val deleteBookmarkNodes: (Set<BookmarkNode>, Event) -> Unit,
private val invokePendingDeletion: () -> Unit
) : BookmarkController {
@ -68,15 +67,13 @@ class DefaultBookmarkController(
}
override fun handleBookmarkSelected(node: BookmarkNode) {
snackbar.setText(resources.getString(R.string.bookmark_cannot_edit_root))
snackbar.show()
showSnackbar(resources.getString(R.string.bookmark_cannot_edit_root))
}
override fun handleCopyUrl(item: BookmarkNode) {
val urlClipData = ClipData.newPlainText(item.url, item.url)
context.getSystemService<ClipboardManager>()?.primaryClip = urlClipData
snackbar.setText(resources.getString(R.string.url_copied))
snackbar.show()
showSnackbar(resources.getString(R.string.url_copied))
}
override fun handleBookmarkSharing(item: BookmarkNode) {

View File

@ -83,11 +83,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
bookmarksController = DefaultBookmarkController(
context = context!!,
navController = findNavController(),
snackbar = FenixSnackbar.make(
view = view,
duration = FenixSnackbar.LENGTH_LONG,
isDisplayedWithBrowserToolbar = false
),
showSnackbar = ::showSnackBarWithText,
deleteBookmarkNodes = ::deleteMulti,
invokePendingDeletion = ::invokePendingDeletion
),
@ -107,6 +103,16 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
return view
}
private fun showSnackBarWithText(text: String) {
view?.let {
FenixSnackbar.make(
view = it,
duration = FenixSnackbar.LENGTH_LONG,
isDisplayedWithBrowserToolbar = false
).setText(text).show()
}
}
@ExperimentalCoroutinesApi
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

View File

@ -29,7 +29,6 @@ import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.Services
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.ext.components
@ -41,7 +40,7 @@ class BookmarkControllerTest {
private val context: Context = mockk(relaxed = true)
private val navController: NavController = mockk(relaxed = true)
private val snackbar: FenixSnackbar = mockk(relaxed = true)
private val showSnackbar: (String) -> Unit = mockk(relaxed = true)
private val deleteBookmarkNodes: (Set<BookmarkNode>, Event) -> Unit = mockk(relaxed = true)
private val invokePendingDeletion: () -> Unit = mockk(relaxed = true)
@ -91,7 +90,7 @@ class BookmarkControllerTest {
controller = DefaultBookmarkController(
context = homeActivity,
navController = navController,
snackbar = snackbar,
showSnackbar = showSnackbar,
deleteBookmarkNodes = deleteBookmarkNodes,
invokePendingDeletion = invokePendingDeletion
)
@ -166,8 +165,7 @@ class BookmarkControllerTest {
controller.handleBookmarkSelected(root)
verify {
snackbar.setText(errorMessage)
snackbar.show()
showSnackbar(errorMessage)
}
}
@ -182,8 +180,7 @@ class BookmarkControllerTest {
verifyOrder {
ClipData.newPlainText(item.url, item.url)
snackbar.setText(urlCopiedMessage)
snackbar.show()
showSnackbar(urlCopiedMessage)
}
}