@alauda-fe/common
Version:
Alauda frontend team common codes.
78 lines • 11.6 kB
JavaScript
import { DialogService } from '@alauda/ui';
import { Location } from '@angular/common';
import { Injectable } from '@angular/core';
import { NavigationEnd, Router } from '@angular/router';
import { Subject, filter, takeUntil, from, map } from 'rxjs';
import { TranslateService } from '../../translate/public-api';
import { CURR_ESCAPE_DEACTIVATE_GUARD, ESCAPE_DEACTIVATE_GUARD, } from '../guards/intercept-deactivate.guard';
import { skipError } from '../utils/operators';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "@angular/router";
import * as i3 from "@alauda/ui";
import * as i4 from "../../translate/public-api";
export class InterceptDeactivateService {
constructor(location, router, dialog, translate) {
this.location = location;
this.router = router;
this.dialog = dialog;
this.translate = translate;
this.destroy$$ = new Subject();
this.router.events
.pipe(filter(ev => ev instanceof NavigationEnd), takeUntil(this.destroy$$))
.subscribe(() => {
const url = new URL(this.location.path(true), window.location.href);
if (url.hash === '#' + ESCAPE_DEACTIVATE_GUARD ||
url.hash === '#' + CURR_ESCAPE_DEACTIVATE_GUARD) {
this.location.replaceState(url.pathname, url.search.slice(1));
}
});
}
ngOnDestroy() {
this.destroy$$.next();
this.destroy$$.complete();
}
intercept({ title, content, context, errorFallback, } = {}) {
return from(this.dialog.confirm({
title: this.translate.get(title || 'intercept_deactivate_title', context),
content: this.translate.get(content || 'intercept_deactivate_content', context),
confirmText: this.translate.get('confirm'),
cancelText: this.translate.get('cancel'),
})).pipe(map(() => true), skipError(errorFallback));
}
async back(escape) {
if (escape) {
await this.escape();
}
this.location.back();
}
async forward(escape) {
if (escape) {
await this.escape();
}
this.location.forward();
}
searchParamsToQueryParams(searchParams) {
const queryParams = {};
searchParams.forEach((_value, key) => {
const values = searchParams.getAll(key);
queryParams[key] = values.length <= 1 ? values[0] : values;
});
return queryParams;
}
async escape() {
const url = new URL(this.location.path(), location.href);
await this.router.navigate([url.pathname], {
replaceUrl: true,
fragment: CURR_ESCAPE_DEACTIVATE_GUARD,
queryParams: this.searchParamsToQueryParams(url.searchParams),
});
}
static { this.ɵfac = function InterceptDeactivateService_Factory(t) { return new (t || InterceptDeactivateService)(i0.ɵɵinject(i1.Location), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i3.DialogService), i0.ɵɵinject(i4.TranslateService)); }; }
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: InterceptDeactivateService, factory: InterceptDeactivateService.ɵfac, providedIn: 'root' }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InterceptDeactivateService, [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], () => [{ type: i1.Location }, { type: i2.Router }, { type: i3.DialogService }, { type: i4.TranslateService }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0LWRlYWN0aXZhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL3NlcnZpY2VzL2ludGVyY2VwdC1kZWFjdGl2YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHVCQUF1QixHQUN4QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBRy9DLE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFDbUIsUUFBa0IsRUFDbEIsTUFBYyxFQUNkLE1BQXFCLEVBQ3JCLFNBQTJCO1FBSDNCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFOOUMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFROUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2FBQ2YsSUFBSSxDQUNILE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxh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RXpELE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekMsVUFBVSxFQUFFLElBQUk7WUFDaEIsUUFBUSxFQUFFLDRCQUE0QjtZQUN0QyxXQUFXLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7U0FDOUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsyRkE3RlUsMEJBQTBCO3VFQUExQiwwQkFBMEIsV0FBMUIsMEJBQTBCLG1CQURiLE1BQU07O2lGQUNuQiwwQkFBMEI7Y0FEdEMsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIGZpbHRlciwgdGFrZVVudGlsLCBmcm9tLCBtYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVGVtcGxhdGVEYXRhIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtcbiAgQ1VSUl9FU0NBUEVfREVBQ1RJVkFURV9HVUFSRCxcbiAgRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkQsXG59IGZyb20gJy4uL2d1YXJkcy9pbnRlcmNlcHQtZGVhY3RpdmF0ZS5ndWFyZCc7XG5pbXBvcnQgeyBza2lwRXJyb3IgfSBmcm9tICcuLi91dGlscy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEludGVyY2VwdERlYWN0aXZhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoZXYgPT4gZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMubG9jYXRpb24ucGF0aCh0cnVlKSwgd2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdXJsLmhhc2ggPT09ICcjJyArIEVTQ0FQRV9ERUFDVElWQVRFX0dVQVJEIHx8XG4gICAgICAgICAgdXJsLmhhc2ggPT09ICcjJyArIENVUlJfRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodXJsLnBhdGhuYW1lLCB1cmwuc2VhcmNoLnNsaWNlKDEpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGludGVyY2VwdCh7XG4gICAgdGl0bGUsXG4gICAgY29udGVudCxcbiAgICBjb250ZXh0LFxuICAgIGVycm9yRmFsbGJhY2ssXG4gIH06IHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBjb250ZW50Pzogc3RyaW5nO1xuICAgIGNvbnRleHQ/OiBUZW1wbGF0ZURhdGE7XG4gICAgZXJyb3JGYWxsYmFjaz86IGJvb2xlYW47XG4gIH0gPSB7fSkge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5kaWFsb2cuY29uZmlybSh7XG4gICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZS5nZXQoXG4gICAgICAgICAgdGl0bGUgfHwgJ2ludGVyY2VwdF9kZWFjdGl2YXRlX3RpdGxlJyxcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICApLFxuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZS5nZXQoXG4gICAgICAgICAgY29udGVudCB8fCAnaW50ZXJjZXB0X2RlYWN0aXZhdGVfY29udGVudCcsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgKSxcbiAgICAgICAgY29uZmlybVRleHQ6IHRoaXMudHJhbnNsYXRlLmdldCgnY29uZmlybScpLFxuICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ2NhbmNlbCcpLFxuICAgICAgfSksXG4gICAgKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgc2tpcEVycm9yKGVycm9yRmFsbGJhY2spLFxuICAgICk7XG4gIH1cblxuICBhc3luYyBiYWNrKGVzY2FwZT86IGJvb2xlYW4pIHtcbiAgICBpZiAoZXNjYXBlKSB7XG4gICAgICBhd2FpdCB0aGlzLmVzY2FwZSgpO1xuICAgIH1cblxuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xuICB9XG5cbiAgYXN5bmMgZm9yd2FyZChlc2NhcGU/OiBib29sZWFuKSB7XG4gICAgaWYgKGVzY2FwZSkge1xuICAgICAgYXdhaXQgdGhpcy5lc2NhcGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2F0aW9uLmZvcndhcmQoKTtcbiAgfVxuXG4gIHNlYXJjaFBhcmFtc1RvUXVlcnlQYXJhbXMoc2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpIHtcbiAgICBjb25zdCBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+ID0ge307XG4gICAgc2VhcmNoUGFyYW1zLmZvckVhY2goKF92YWx1ZSwga2V5KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBzZWFyY2hQYXJhbXMuZ2V0QWxsKGtleSk7XG4gICAgICBxdWVyeVBhcmFtc1trZXldID0gdmFsdWVzLmxlbmd0aCA8PSAxID8gdmFsdWVzWzBdIDogdmFsdWVzO1xuICAgIH0pO1xuICAgIHJldHVybiBxdWVyeVBhcmFtcztcbiAgfVxuXG4gIGFzeW5jIGVzY2FwZSgpIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMubG9jYXRpb24ucGF0aCgpLCBsb2NhdGlvbi5ocmVmKTtcblxuICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmwucGF0aG5hbWVdLCB7XG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxuICAgICAgZnJhZ21lbnQ6IENVUlJfRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkQsXG4gICAgICBxdWVyeVBhcmFtczogdGhpcy5zZWFyY2hQYXJhbXNUb1F1ZXJ5UGFyYW1zKHVybC5zZWFyY2hQYXJhbXMpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=