RecentlyClosedReducer.kt
/* 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 mozilla.components.browser.state.reducer
import mozilla.components.browser.state.action.RecentlyClosedAction
import mozilla.components.browser.state.state.BrowserState
internal object RecentlyClosedReducer {
fun reduce(state: BrowserState, action: RecentlyClosedAction): BrowserState {
return when (action) {
is RecentlyClosedAction.AddClosedTabsAction -> {
state.copy(
closedTabs = state.closedTabs + action.tabs.map { it.state },
)
}
is RecentlyClosedAction.PruneClosedTabsAction -> {
state.copy(
closedTabs = state.closedTabs.sortedByDescending { it.lastAccess }
.take(action.maxTabs),
)
}
is RecentlyClosedAction.ReplaceTabsAction -> state.copy(closedTabs = action.tabs)
is RecentlyClosedAction.RemoveClosedTabAction -> {
state.copy(
closedTabs = state.closedTabs - action.tab,
)
}
is RecentlyClosedAction.RemoveAllClosedTabAction -> {
state.copy(closedTabs = listOf())
}
}
}
}