@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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0LWRlYWN0aXZhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9jb3JlL3NlcnZpY2VzL2ludGVyY2VwdC1kZWFjdGl2YXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIsdUJBQXVCLEdBQ3hCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFHL0MsTUFBTSxPQUFPLDBCQUEwQjtJQUdyQyxZQUNtQixRQUFrQixFQUNsQixNQUFjLEVBQ2QsTUFBcUIsRUFDckIsU0FBMkI7UUFIM0IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQU45QyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVE5QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDZixJQUFJLENBQ0gsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLGFB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ekQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6QyxVQUFVLEVBQUUsSUFBSTtZQUNoQixRQUFRLEVBQUUsNEJBQTRCO1lBQ3RDLFdBQVcsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztTQUM5RCxDQUFDLENBQUM7SUFDTCxDQUFDOzJGQTdGVSwwQkFBMEI7dUVBQTFCLDBCQUEwQixXQUExQiwwQkFBMEIsbUJBRGIsTUFBTTs7aUZBQ25CLDBCQUEwQjtjQUR0QyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgZmlsdGVyLCB0YWtlVW50aWwsIGZyb20sIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtcbiAgQ1VSUl9FU0NBUEVfREVBQ1RJVkFURV9HVUFSRCxcbiAgRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkQsXG59IGZyb20gJy4uL2d1YXJkcy9pbnRlcmNlcHQtZGVhY3RpdmF0ZS5ndWFyZCc7XG5pbXBvcnQgeyBza2lwRXJyb3IgfSBmcm9tICcuLi91dGlscy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEludGVyY2VwdERlYWN0aXZhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgZGVzdHJveSQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoZXYgPT4gZXYgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMubG9jYXRpb24ucGF0aCh0cnVlKSwgd2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdXJsLmhhc2ggPT09ICcjJyArIEVTQ0FQRV9ERUFDVElWQVRFX0dVQVJEIHx8XG4gICAgICAgICAgdXJsLmhhc2ggPT09ICcjJyArIENVUlJfRVNDQVBFX0RFQUNUSVZBVEVfR1VBUkRcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5sb2NhdGlvbi5yZXBsYWNlU3RhdGUodXJsLnBhdGhuYW1lLCB1cmwuc2VhcmNoLnNsaWNlKDEpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGludGVyY2VwdCh7XG4gICAgdGl0bGUsXG4gICAgY29udGVudCxcbiAgICBjb250ZXh0LFxuICAgIGVycm9yRmFsbGJhY2ssXG4gIH06IHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBjb250ZW50Pzogc3RyaW5nO1xuICAgIGNvbnRleHQ/OiB1bmtub3duO1xuICAgIGVycm9yRmFsbGJhY2s/OiBib29sZWFuO1xuICB9ID0ge30pIHtcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIHRoaXMuZGlhbG9nLmNvbmZpcm0oe1xuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuZ2V0KFxuICAgICAgICAgIHRpdGxlIHx8ICdpbnRlcmNlcHRfZGVhY3RpdmF0ZV90aXRsZScsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgKSxcbiAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGUuZ2V0KFxuICAgICAgICAgIGNvbnRlbnQgfHwgJ2ludGVyY2VwdF9kZWFjdGl2YXRlX2NvbnRlbnQnLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICksXG4gICAgICAgIGNvbmZpcm1UZXh0OiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ2NvbmZpcm0nKSxcbiAgICAgICAgY2FuY2VsVGV4dDogdGhpcy50cmFuc2xhdGUuZ2V0KCdjYW5jZWwnKSxcbiAgICAgIH0pLFxuICAgICkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgIHNraXBFcnJvcihlcnJvckZhbGxiYWNrKSxcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgYmFjayhlc2NhcGU/OiBib29sZWFuKSB7XG4gICAgaWYgKGVzY2FwZSkge1xuICAgICAgYXdhaXQgdGhpcy5lc2NhcGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgfVxuXG4gIGFzeW5jIGZvcndhcmQoZXNjYXBlPzogYm9vbGVhbikge1xuICAgIGlmIChlc2NhcGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuZXNjYXBlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2NhdGlvbi5mb3J3YXJkKCk7XG4gIH1cblxuICBzZWFyY2hQYXJhbXNUb1F1ZXJ5UGFyYW1zKHNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zKSB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPiA9IHt9O1xuICAgIHNlYXJjaFBhcmFtcy5mb3JFYWNoKChfdmFsdWUsIGtleSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gc2VhcmNoUGFyYW1zLmdldEFsbChrZXkpO1xuICAgICAgcXVlcnlQYXJhbXNba2V5XSA9IHZhbHVlcy5sZW5ndGggPD0gMSA/IHZhbHVlc1swXSA6IHZhbHVlcztcbiAgICB9KTtcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XG4gIH1cblxuICBhc3luYyBlc2NhcGUoKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTCh0aGlzLmxvY2F0aW9uLnBhdGgoKSwgbG9jYXRpb24uaHJlZik7XG5cbiAgICBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdXJsLnBhdGhuYW1lXSwge1xuICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcbiAgICAgIGZyYWdtZW50OiBDVVJSX0VTQ0FQRV9ERUFDVElWQVRFX0dVQVJELFxuICAgICAgcXVlcnlQYXJhbXM6IHRoaXMuc2VhcmNoUGFyYW1zVG9RdWVyeVBhcmFtcyh1cmwuc2VhcmNoUGFyYW1zKSxcbiAgICB9KTtcbiAgfVxufVxuIl19