For #673 - Trigger session overflow menu on session item menu
parent
1aa3d7e1ad
commit
22c915b5a4
|
@ -54,6 +54,7 @@ fun SessionBundleStorage.archive(sessionManager: SessionManager) {
|
|||
new()
|
||||
}
|
||||
|
||||
@SuppressWarnings("TooManyFunctions")
|
||||
class HomeFragment : Fragment() {
|
||||
private val bus = ActionBusFactory.get(this)
|
||||
private var sessionObserver: SessionManager.Observer? = null
|
||||
|
@ -210,6 +211,7 @@ class HomeFragment : Fragment() {
|
|||
is SessionsAction.Delete -> {
|
||||
requireComponents.core.sessionStorage.remove(it.archivedSession.bundle)
|
||||
}
|
||||
is SessionsAction.MenuTapped -> openSessionMenu()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
/* 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/. */
|
||||
|
||||
package org.mozilla.fenix.home.sessions
|
||||
|
||||
import android.content.Context
|
||||
import mozilla.components.browser.menu.BrowserMenuBuilder
|
||||
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
|
||||
import org.mozilla.fenix.R
|
||||
|
||||
class SessionItemMenu(
|
||||
private val context: Context,
|
||||
private val onItemTapped: (Item) -> Unit = {}
|
||||
) {
|
||||
sealed class Item {
|
||||
object Delete : Item()
|
||||
}
|
||||
|
||||
val menuBuilder by lazy { BrowserMenuBuilder(menuItems) }
|
||||
|
||||
private val menuItems by lazy {
|
||||
listOf(
|
||||
SimpleBrowserMenuItem(
|
||||
context.getString(R.string.session_item_delete)
|
||||
) {
|
||||
onItemTapped.invoke(Item.Delete)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
|
@ -94,17 +94,14 @@ class SessionsAdapter(
|
|||
override val containerView: View? = view
|
||||
) : RecyclerView.ViewHolder(view), LayoutContainer {
|
||||
private var session: ArchivedSession? = null
|
||||
private lateinit var sessionMenu: SessionItemMenu
|
||||
|
||||
init {
|
||||
setupMenu()
|
||||
|
||||
session_item.setOnClickListener {
|
||||
session?.apply { actionEmitter.onNext(SessionsAction.Select(this)) }
|
||||
}
|
||||
|
||||
session_card_overflow_button.setOnClickListener {
|
||||
sessionMenu.menuBuilder.build(itemView.context).show(it)
|
||||
session?.apply { actionEmitter.onNext(SessionsAction.MenuTapped(this)) }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -122,16 +119,6 @@ class SessionsAdapter(
|
|||
} else { "" }
|
||||
}
|
||||
|
||||
private fun setupMenu() {
|
||||
sessionMenu = SessionItemMenu(itemView.context) {
|
||||
if (it is SessionItemMenu.Item.Delete) {
|
||||
session?.apply {
|
||||
actionEmitter.onNext(SessionsAction.Delete(this))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val availableColors = listOf(
|
||||
R.color.photonBlue40, R.color.photonGreen50, R.color.photonYellow50, R.color.photonOrange50,
|
||||
|
|
|
@ -115,6 +115,7 @@ data class SessionsState(val archivedSessions: List<ArchivedSession>) : ViewStat
|
|||
sealed class SessionsAction : Action {
|
||||
data class Select(val archivedSession: ArchivedSession) : SessionsAction()
|
||||
data class Delete(val archivedSession: ArchivedSession) : SessionsAction()
|
||||
data class MenuTapped(val archivedSession: ArchivedSession) : SessionsAction()
|
||||
}
|
||||
|
||||
sealed class SessionsChange : Change {
|
||||
|
|
Loading…
Reference in New Issue