Fixes #1517 - Filter private sessions when updating the tab counter

nightly-build-test
Vlad Baicu 5 years ago committed by Emily Kager
parent 22eba72f8f
commit b3977a5785

@ -11,9 +11,7 @@ import android.view.ViewGroup
import mozilla.components.browser.session.Session import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager import mozilla.components.browser.session.SessionManager
import mozilla.components.concept.toolbar.Toolbar import mozilla.components.concept.toolbar.Toolbar
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.asActivity
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
/** /**
@ -21,7 +19,8 @@ import java.lang.ref.WeakReference
*/ */
class TabCounterToolbarButton( class TabCounterToolbarButton(
private val sessionManager: SessionManager, private val sessionManager: SessionManager,
private val showTabs: () -> Unit private val showTabs: () -> Unit,
private val isPrivate: Boolean
) : Toolbar.Action { ) : Toolbar.Action {
private var reference: WeakReference<TabCounter> = WeakReference<TabCounter>(null) private var reference: WeakReference<TabCounter> = WeakReference<TabCounter>(null)
@ -30,12 +29,9 @@ class TabCounterToolbarButton(
val view = TabCounter(parent.context).apply { val view = TabCounter(parent.context).apply {
reference = WeakReference(this) reference = WeakReference(this)
setCount( setCount(sessionManager.sessions.count {
(sessionManager.sessions it.private == isPrivate
.filter { })
(context.asActivity() as? HomeActivity)?.browsingModeManager?.isPrivate == it.private
}).size
)
setOnClickListener { setOnClickListener {
it.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS) it.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
showTabs.invoke() showTabs.invoke()
@ -58,7 +54,9 @@ class TabCounterToolbarButton(
override fun bind(view: View) = Unit override fun bind(view: View) = Unit
private fun updateCount() { private fun updateCount() {
reference.get()?.setCountWithAnimation(sessionManager.sessions.size) reference.get()?.setCountWithAnimation(sessionManager.sessions.count {
it.private == isPrivate
})
} }
private val sessionManagerObserver = object : SessionManager.Observer { private val sessionManagerObserver = object : SessionManager.Observer {

@ -39,10 +39,11 @@ class ToolbarIntegration(
val tabsAction = TabCounterToolbarButton( val tabsAction = TabCounterToolbarButton(
sessionManager, sessionManager,
showTabs = { {
Navigation.findNavController(toolbar) Navigation.findNavController(toolbar)
.navigate(BrowserFragmentDirections.actionBrowserFragmentToHomeFragment()) .navigate(BrowserFragmentDirections.actionBrowserFragmentToHomeFragment())
} },
isPrivate
) )
toolbar.addBrowserAction(tabsAction) toolbar.addBrowserAction(tabsAction)
} }

Loading…
Cancel
Save