UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

78 lines 11.6 kB
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