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.SaveCollectionStep
|
||||||
import org.mozilla.fenix.collections.Tab
|
import org.mozilla.fenix.collections.Tab
|
||||||
import org.mozilla.fenix.components.metrics.Event
|
import org.mozilla.fenix.components.metrics.Event
|
||||||
|
import org.mozilla.fenix.ext.allowUndo
|
||||||
import org.mozilla.fenix.ext.requireComponents
|
import org.mozilla.fenix.ext.requireComponents
|
||||||
import org.mozilla.fenix.ext.share
|
import org.mozilla.fenix.ext.share
|
||||||
import org.mozilla.fenix.ext.urlToHost
|
import org.mozilla.fenix.ext.urlToHost
|
||||||
|
@ -202,10 +203,7 @@ class HomeFragment : Fragment(), CoroutineScope {
|
||||||
(activity as HomeActivity).openToBrowser(BrowserDirection.FromHome)
|
(activity as HomeActivity).openToBrowser(BrowserDirection.FromHome)
|
||||||
}
|
}
|
||||||
is TabAction.Close -> {
|
is TabAction.Close -> {
|
||||||
requireComponents.core.sessionManager.findSessionById(action.sessionId)
|
removeTabWithUndo(action.sessionId)
|
||||||
?.let { session ->
|
|
||||||
requireComponents.core.sessionManager.remove(session)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
is TabAction.Share -> {
|
is TabAction.Share -> {
|
||||||
requireComponents.core.sessionManager.findSessionById(action.sessionId)
|
requireComponents.core.sessionManager.findSessionById(action.sessionId)
|
||||||
|
@ -303,6 +301,39 @@ class HomeFragment : Fragment(), CoroutineScope {
|
||||||
return observer
|
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() {
|
private fun emitSessionChanges() {
|
||||||
val sessionManager = requireComponents.core.sessionManager
|
val sessionManager = requireComponents.core.sessionManager
|
||||||
getManagedEmitter<SessionControlChange>().onNext(
|
getManagedEmitter<SessionControlChange>().onNext(
|
||||||
|
|
Loading…
Reference in New Issue