/** * This file is part of Anis Client. * * @copyright Laboratoire d'Astrophysique de Marseille / CNRS * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ import { Params, RouterStateSnapshot } from '@angular/router'; import { RouterStateSerializer } from '@ngrx/router-store'; export interface RouterReducerState { state: RouterStateUrl, navigationId: number } export interface RouterStateUrl { url: string; params: Params; queryParams: Params; } export class CustomSerializer implements RouterStateSerializer<RouterStateUrl> { serialize(routerState: RouterStateSnapshot): RouterStateUrl { let route = routerState.root; let params: Params = {}; while (route.firstChild) { route = route.firstChild; params = { ...params, ...route.params, }; } const { url, root: { queryParams }, } = routerState; // Only return an object including the URL, params and query params // instead of the entire snapshot return { url, params, queryParams }; } }