Skip to content
Snippets Groups Projects
custom-route-serializer.ts 1.19 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     * 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 };
        }