diff options
Diffstat (limited to 'mobile/android/fenix/docs/architectureexample/HistoryNavigationMiddlewareExample.kt')
-rw-r--r-- | mobile/android/fenix/docs/architectureexample/HistoryNavigationMiddlewareExample.kt | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/mobile/android/fenix/docs/architectureexample/HistoryNavigationMiddlewareExample.kt b/mobile/android/fenix/docs/architectureexample/HistoryNavigationMiddlewareExample.kt new file mode 100644 index 0000000000..49f3d42f2b --- /dev/null +++ b/mobile/android/fenix/docs/architectureexample/HistoryNavigationMiddlewareExample.kt @@ -0,0 +1,29 @@ +/* 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/. */ + +// This is example code for the 'Simplified Example' section of +// /docs/architecture-overview.md +class HistoryNavigationMiddleware( + private val navController: NavController, +) : Middleware<HistoryState, HistoryAction> { + override fun invoke( + context: MiddlewareContext<HistoryState, HistoryAction>, + next: (HistoryAction) -> Unit, + action: HistoryAction, + ) { + // This middleware won't need to manipulate the action, so the action can be passed through + // the middleware chain before the side-effects are initiated + next(action) + when(action) { + is HistoryAction.OpenItem -> { + navController.openToBrowserAndLoad( + searchTermOrURL = item.url, + newTab = true, + from = BrowserDirection.FromHistory, + ) + } + else -> Unit + } + } +} |