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

View File

@ -9,7 +9,6 @@ import androidx.lifecycle.ViewModel
class HomeScreenViewModel : ViewModel() { class HomeScreenViewModel : ViewModel() {
var layoutManagerState: Parcelable? = null 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 * 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.os.Build
import android.view.View import android.view.View
import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -164,6 +164,7 @@ class SessionControlView(
private val homeFragmentStore: HomeFragmentStore, private val homeFragmentStore: HomeFragmentStore,
override val containerView: View?, override val containerView: View?,
interactor: SessionControlInteractor, interactor: SessionControlInteractor,
private val viewLifecycleOwner: LifecycleOwner,
private var homeScreenViewModel: HomeScreenViewModel private var homeScreenViewModel: HomeScreenViewModel
) : LayoutContainer { ) : LayoutContainer {
@ -183,7 +184,7 @@ class SessionControlView(
) )
itemTouchHelper.attachToRecyclerView(this) itemTouchHelper.attachToRecyclerView(this)
view.consumeFrom(homeFragmentStore, ProcessLifecycleOwner.get()) { view.consumeFrom(homeFragmentStore, viewLifecycleOwner) {
update(it) update(it)
} }
} }

View File

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

View File

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

View File

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