@versatiledatakit/shared
Version:
Versatile Data Kit Shared library enables reusability of shared features like: NgRx Redux, Error Handlers, Utils, Generic Components, etc.
59 lines • 9.93 kB
JavaScript
/*
* Copyright 2023-2025 Broadcom
* SPDX-License-Identifier: Apache-2.0
*/
import { Injectable } from '@angular/core';
import { of } from 'rxjs';
import { catchError, map, tap } from 'rxjs/operators';
import { createEffect, ofType } from '@ngrx/effects';
import { LOCATION_BACK, LOCATION_FORWARD, LOCATION_GO, ROUTER_NAVIGATE } from '../actions';
import * as i0 from "@angular/core";
import * as i1 from "@ngrx/effects";
import * as i2 from "@angular/router";
import * as i3 from "@angular/common";
/**
* ** Router Effects Service.
*/
export class RouterEffects {
/**
* ** Constructor.
*/
constructor(actions$, router, location) {
this.actions$ = actions$;
this.router = router;
this.location = location;
/**
* ** Effect for Router navigation.
*/
this.routerNavigate$ = createEffect(() => this.actions$.pipe(ofType(ROUTER_NAVIGATE), map((action) => action.payload), tap((payload) => this._navigate(payload)), catchError((error) => RouterEffects._handleError(error))), { dispatch: false });
/**
* ** Effect for Location go (navigate).
*/
this.locationGo$ = createEffect(() => this.actions$.pipe(ofType(LOCATION_GO), tap((payload) => this.location.go(payload.path, payload.query, payload.state)), catchError((error) => RouterEffects._handleError(error))), { dispatch: false });
/**
* ** Effect for pop Backward Browser state.
*/
this.locationBack$ = createEffect(() => this.actions$.pipe(ofType(LOCATION_BACK), tap(() => this.location.back()), catchError((error) => RouterEffects._handleError(error))), { dispatch: false });
/**
* ** Effect for push Forward Browser state.
*/
this.locationForward$ = createEffect(() => this.actions$.pipe(ofType(LOCATION_FORWARD), tap(() => this.location.forward()), catchError((error) => RouterEffects._handleError(error))), { dispatch: false });
}
static _handleError(error) {
console.error(error);
return of(true);
}
_navigate(payload) {
const extras = payload.extras ?? {};
// eslint-disable-next-line @typescript-eslint/no-floating-promises
this.router.navigate(payload.commands, extras).then(() => {
// No-op.
});
}
}
RouterEffects.ɵfac = function RouterEffects_Factory(t) { return new (t || RouterEffects)(i0.ɵɵinject(i1.Actions), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i3.Location)); };
RouterEffects.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: RouterEffects, factory: RouterEffects.ɵfac });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RouterEffects, [{
type: Injectable
}], function () { return [{ type: i1.Actions }, { type: i2.Router }, { type: i3.Location }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb3JlL3JvdXRlci9zdGF0ZS9lZmZlY3RzL3JvdXRlci5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQWEsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBbUIsZUFBZSxFQUFrQixNQUFNLFlBQVksQ0FBQzs7Ozs7QUFFdkk7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYTtJQXNEdEI7O09BRUc7SUFDSCxZQUNxQixRQUFpQixFQUNqQixNQUFjLEVBQ2QsUUFBa0I7UUFGbEIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTNEdkM7O1dBRUc7UUFDSCxvQkFBZSxHQUFHLFlBQVksQ0FDMUIsR0FBRyxFQUFFLENBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUN2QixHQUFHLENBQUMsQ0FBQyxNQUFzQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQy9DLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUN6QyxVQUFVLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDcEUsRUFDTCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDdEIsQ0FBQztRQUVGOztXQUVHO1FBQ0gsZ0JBQVcsR0FBRyxZQUFZLENBQ3RCLEdBQUcsRUFBRSxDQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNkLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFDbkIsR0FBRyxDQUFDLENBQUMsT0FBa0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUN6RixVQUFVLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDcEUsRUFDTCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDdEIsQ0FBQztRQUVGOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxZQUFZLENBQ3hCLEdBQUcsRUFBRSxDQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNkLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFDckIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDL0IsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3BFLEVBQ0wsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3RCLENBQUM7UUFFRjs7V0FFRztRQUNILHFCQUFnQixHQUFHLFlBQVksQ0FDM0IsR0FBRyxFQUFFLENBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2QsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQ3hCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQ2xDLFVBQVUsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNwRSxFQUNMLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUN0QixDQUFDO0lBU0MsQ0FBQztJQUVJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBYztRQUN0QyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTyxTQUFTLENBQUMsT0FBd0I7UUFDdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFFcEMsbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNyRCxTQUFTO1FBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzswRUE1RVEsYUFBYTttRUFBYixhQUFhLFdBQWIsYUFBYTt1RkFBYixhQUFhO2NBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjMtMjAyNSBCcm9hZGNvbVxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5cbmltcG9ydCB7IEdvUGF5bG9hZCwgTE9DQVRJT05fQkFDSywgTE9DQVRJT05fRk9SV0FSRCwgTE9DQVRJT05fR08sIE5hdmlnYXRlUGF5bG9hZCwgUk9VVEVSX05BVklHQVRFLCBSb3V0ZXJOYXZpZ2F0ZSB9IGZyb20gJy4uL2FjdGlvbnMnO1xuXG4vKipcbiAqICoqIFJvdXRlciBFZmZlY3RzIFNlcnZpY2UuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSb3V0ZXJFZmZlY3RzIHtcbiAgICAvKipcbiAgICAgKiAqKiBFZmZlY3QgZm9yIFJvdXRlciBuYXZpZ2F0aW9uLlxuICAgICAqL1xuICAgIHJvdXRlck5hdmlnYXRlJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgICAgICAgICBvZlR5cGUoUk9VVEVSX05BVklHQVRFKSxcbiAgICAgICAgICAgICAgICBtYXAoKGFjdGlvbjogUm91dGVyTmF2aWdhdGUpID0+IGFjdGlvbi5wYXlsb2FkKSxcbiAgICAgICAgICAgICAgICB0YXAoKHBheWxvYWQpID0+IHRoaXMuX25hdmlnYXRlKHBheWxvYWQpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4gUm91dGVyRWZmZWN0cy5faGFuZGxlRXJyb3IoZXJyb3IpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiAqKiBFZmZlY3QgZm9yIExvY2F0aW9uIGdvIChuYXZpZ2F0ZSkuXG4gICAgICovXG4gICAgbG9jYXRpb25HbyQgPSBjcmVhdGVFZmZlY3QoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgICAgICAgICAgb2ZUeXBlKExPQ0FUSU9OX0dPKSxcbiAgICAgICAgICAgICAgICB0YXAoKHBheWxvYWQ6IEdvUGF5bG9hZCkgPT4gdGhpcy5sb2NhdGlvbi5nbyhwYXlsb2FkLnBhdGgsIHBheWxvYWQucXVlcnksIHBheWxvYWQuc3RhdGUpKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4gUm91dGVyRWZmZWN0cy5faGFuZGxlRXJyb3IoZXJyb3IpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiAqKiBFZmZlY3QgZm9yIHBvcCBCYWNrd2FyZCBCcm93c2VyIHN0YXRlLlxuICAgICAqL1xuICAgIGxvY2F0aW9uQmFjayQgPSBjcmVhdGVFZmZlY3QoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgICAgICAgICAgb2ZUeXBlKExPQ0FUSU9OX0JBQ0spLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLmxvY2F0aW9uLmJhY2soKSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IFJvdXRlckVmZmVjdHMuX2hhbmRsZUVycm9yKGVycm9yKSlcbiAgICAgICAgICAgICksXG4gICAgICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogKiogRWZmZWN0IGZvciBwdXNoIEZvcndhcmQgQnJvd3NlciBzdGF0ZS5cbiAgICAgKi9cbiAgICBsb2NhdGlvbkZvcndhcmQkID0gY3JlYXRlRWZmZWN0KFxuICAgICAgICAoKSA9PlxuICAgICAgICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICAgICAgICAgIG9mVHlwZShMT0NBVElPTl9GT1JXQVJEKSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5sb2NhdGlvbi5mb3J3YXJkKCkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiBSb3V0ZXJFZmZlY3RzLl9oYW5kbGVFcnJvcihlcnJvcikpXG4gICAgICAgICAgICApLFxuICAgICAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqICoqIENvbnN0cnVjdG9yLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvblxuICAgICkge31cblxuICAgIHByaXZhdGUgc3RhdGljIF9oYW5kbGVFcnJvcihlcnJvcjogdW5rbm93bik6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcblxuICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbmF2aWdhdGUocGF5bG9hZDogTmF2aWdhdGVQYXlsb2FkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV4dHJhcyA9IHBheWxvYWQuZXh0cmFzID8/IHt9O1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUocGF5bG9hZC5jb21tYW5kcywgZXh0cmFzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIE5vLW9wLlxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=