parent
0d82431195
commit
e5e448ac8f
|
@ -40,6 +40,7 @@ import org.mozilla.fenix.collections.CreateCollectionViewModel
|
|||
import org.mozilla.fenix.collections.SaveCollectionStep
|
||||
import org.mozilla.fenix.collections.Tab
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.allowUndo
|
||||
import org.mozilla.fenix.ext.requireComponents
|
||||
import org.mozilla.fenix.ext.share
|
||||
import org.mozilla.fenix.ext.urlToHost
|
||||
|
@ -202,10 +203,7 @@ class HomeFragment : Fragment(), CoroutineScope {
|
|||
(activity as HomeActivity).openToBrowser(BrowserDirection.FromHome)
|
||||
}
|
||||
is TabAction.Close -> {
|
||||
requireComponents.core.sessionManager.findSessionById(action.sessionId)
|
||||
?.let { session ->
|
||||
requireComponents.core.sessionManager.remove(session)
|
||||
}
|
||||
removeTabWithUndo(action.sessionId)
|
||||
}
|
||||
is TabAction.Share -> {
|
||||
requireComponents.core.sessionManager.findSessionById(action.sessionId)
|
||||
|
@ -303,6 +301,39 @@ class HomeFragment : Fragment(), CoroutineScope {
|
|||
return observer
|
||||
}
|
||||
|
||||
private fun removeTabWithUndo(sessionId: String) {
|
||||
val sessionManager = requireComponents.core.sessionManager
|
||||
getManagedEmitter<SessionControlChange>().onNext(
|
||||
SessionControlChange.TabsChange(
|
||||
sessionManager.sessions
|
||||
.filter { (activity as HomeActivity).browsingModeManager.isPrivate == it.private }
|
||||
.filter { it.id != sessionId }
|
||||
.map {
|
||||
val selected =
|
||||
it == sessionManager.selectedSession
|
||||
org.mozilla.fenix.home.sessioncontrol.Tab(
|
||||
it.id,
|
||||
it.url,
|
||||
it.url.urlToHost(),
|
||||
it.title,
|
||||
selected,
|
||||
it.thumbnail
|
||||
)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
CoroutineScope(Dispatchers.Main).allowUndo(
|
||||
view!!, getString(R.string.snackbar_tab_deleted),
|
||||
getString(R.string.snackbar_deleted_undo), { emitSessionChanges() }
|
||||
) {
|
||||
sessionManager.findSessionById(sessionId)
|
||||
?.let { session ->
|
||||
sessionManager.remove(session)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun emitSessionChanges() {
|
||||
val sessionManager = requireComponents.core.sessionManager
|
||||
getManagedEmitter<SessionControlChange>().onNext(
|
||||
|
|
Loading…
Reference in New Issue