UNPKG

@spartacus/user

Version:

User feature library for Spartacus

74 lines 10.9 kB
import { Injectable } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { GlobalMessageType, } from '@spartacus/core'; import { CustomFormValidators } from '@spartacus/storefront'; import { BehaviorSubject } from 'rxjs'; import { tap } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/user/profile/root"; import * as i2 from "@spartacus/core"; export class UpdateEmailComponentService { constructor(userEmail, routingService, globalMessageService, authService, authRedirectService) { this.userEmail = userEmail; this.routingService = routingService; this.globalMessageService = globalMessageService; this.authService = authService; this.authRedirectService = authRedirectService; this.busy$ = new BehaviorSubject(false); this.isUpdating$ = this.busy$.pipe(tap((state) => (state === true ? this.form.disable() : this.form.enable()))); this.form = new FormGroup({ email: new FormControl('', [ Validators.required, CustomFormValidators.emailValidator, ]), confirmEmail: new FormControl('', [Validators.required]), password: new FormControl('', [Validators.required]), }, { validators: CustomFormValidators.emailsMustMatch('email', 'confirmEmail'), }); } save() { var _a, _b; if (!this.form.valid) { this.form.markAllAsTouched(); return; } this.busy$.next(true); const newEmail = (_a = this.form.get('confirmEmail')) === null || _a === void 0 ? void 0 : _a.value; const password = (_b = this.form.get('password')) === null || _b === void 0 ? void 0 : _b.value; this.userEmail.update(password, newEmail).subscribe({ next: () => this.onSuccess(newEmail), error: (error) => this.onError(error), }); } /** * Handles successful updating of the user email. */ onSuccess(newUid) { this.globalMessageService.add({ key: 'updateEmailForm.emailUpdateSuccess', params: { newUid }, }, GlobalMessageType.MSG_TYPE_CONFIRMATION); this.busy$.next(false); this.form.reset(); // sets the redirect url after login this.authRedirectService.setRedirectUrl(this.routingService.getUrl({ cxRoute: 'home' })); // TODO(#9638): Use logout route when it will support passing redirect url this.authService.coreLogout().then(() => { this.routingService.go({ cxRoute: 'login' }, { state: { newUid, }, }); }); } onError(_error) { this.busy$.next(false); } } UpdateEmailComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UpdateEmailComponentService, deps: [{ token: i1.UserEmailFacade }, { token: i2.RoutingService }, { token: i2.GlobalMessageService }, { token: i2.AuthService }, { token: i2.AuthRedirectService }], target: i0.ɵɵFactoryTarget.Injectable }); UpdateEmailComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UpdateEmailComponentService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UpdateEmailComponentService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.UserEmailFacade }, { type: i2.RoutingService }, { type: i2.GlobalMessageService }, { type: i2.AuthService }, { type: i2.AuthRedirectService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWVtYWlsLWNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZmVhdHVyZS1saWJzL3VzZXIvcHJvZmlsZS9jb21wb25lbnRzL3VwZGF0ZS1lbWFpbC91cGRhdGUtZW1haWwtY29tcG9uZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsaUJBQWlCLEdBRWxCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHckMsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxZQUNZLFNBQTBCLEVBQzFCLGNBQThCLEVBQzlCLG9CQUEwQyxFQUMxQyxXQUF3QixFQUN4QixtQkFBd0M7UUFKeEMsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUcxQyxVQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsZ0JBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDM0IsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FB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ci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBdXRoUmVkaXJlY3RTZXJ2aWNlLFxuICBBdXRoU2VydmljZSxcbiAgR2xvYmFsTWVzc2FnZVNlcnZpY2UsXG4gIEdsb2JhbE1lc3NhZ2VUeXBlLFxuICBSb3V0aW5nU2VydmljZSxcbn0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IEN1c3RvbUZvcm1WYWxpZGF0b3JzIH0gZnJvbSAnQHNwYXJ0YWN1cy9zdG9yZWZyb250JztcbmltcG9ydCB7IFVzZXJFbWFpbEZhY2FkZSB9IGZyb20gJ0BzcGFydGFjdXMvdXNlci9wcm9maWxlL3Jvb3QnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVcGRhdGVFbWFpbENvbXBvbmVudFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdXNlckVtYWlsOiBVc2VyRW1haWxGYWNhZGUsXG4gICAgcHJvdGVjdGVkIHJvdXRpbmdTZXJ2aWNlOiBSb3V0aW5nU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZ2xvYmFsTWVzc2FnZVNlcnZpY2U6IEdsb2JhbE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGF1dGhSZWRpcmVjdFNlcnZpY2U6IEF1dGhSZWRpcmVjdFNlcnZpY2VcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBidXN5JCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGlzVXBkYXRpbmckID0gdGhpcy5idXN5JC5waXBlKFxuICAgIHRhcCgoc3RhdGUpID0+IChzdGF0ZSA9PT0gdHJ1ZSA/IHRoaXMuZm9ybS5kaXNhYmxlKCkgOiB0aGlzLmZvcm0uZW5hYmxlKCkpKVxuICApO1xuXG4gIGZvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoXG4gICAge1xuICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbCgnJywgW1xuICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICBDdXN0b21Gb3JtVmFsaWRhdG9ycy5lbWFpbFZhbGlkYXRvcixcbiAgICAgIF0pLFxuICAgICAgY29uZmlybUVtYWlsOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBwYXNzd29yZDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsaWRhdG9yczogQ3VzdG9tRm9ybVZhbGlkYXRvcnMuZW1haWxzTXVzdE1hdGNoKCdlbWFpbCcsICdjb25maXJtRW1haWwnKSxcbiAgICB9XG4gICk7XG5cbiAgc2F2ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1c3kkLm5leHQodHJ1ZSk7XG5cbiAgICBjb25zdCBuZXdFbWFpbCA9IHRoaXMuZm9ybS5nZXQoJ2NvbmZpcm1FbWFpbCcpPy52YWx1ZTtcbiAgICBjb25zdCBwYXNzd29yZCA9IHRoaXMuZm9ybS5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlO1xuXG4gICAgdGhpcy51c2VyRW1haWwudXBkYXRlKHBhc3N3b3JkLCBuZXdFbWFpbCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHRoaXMub25TdWNjZXNzKG5ld0VtYWlsKSxcbiAgICAgIGVycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB0aGlzLm9uRXJyb3IoZXJyb3IpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgc3VjY2Vzc2Z1bCB1cGRhdGluZyBvZiB0aGUgdXNlciBlbWFpbC5cbiAgICovXG4gIHByb3RlY3RlZCBvblN1Y2Nlc3MobmV3VWlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmdsb2JhbE1lc3NhZ2VTZXJ2aWNlLmFkZChcbiAgICAgIHtcbiAgICAgICAga2V5OiAndXBkYXRlRW1haWxGb3JtLmVtYWlsVXBkYXRlU3VjY2VzcycsXG4gICAgICAgIHBhcmFtczogeyBuZXdVaWQgfSxcbiAgICAgIH0sXG4gICAgICBHbG9iYWxNZXNzYWdlVHlwZS5NU0dfVFlQRV9DT05GSVJNQVRJT05cbiAgICApO1xuICAgIHRoaXMuYnVzeSQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgLy8gc2V0cyB0aGUgcmVkaXJlY3QgdXJsIGFmdGVyIGxvZ2luXG4gICAgdGhpcy5hdXRoUmVkaXJlY3RTZXJ2aWNlLnNldFJlZGlyZWN0VXJsKFxuICAgICAgdGhpcy5yb3V0aW5nU2VydmljZS5nZXRVcmwoeyBjeFJvdXRlOiAnaG9tZScgfSlcbiAgICApO1xuICAgIC8vIFRPRE8oIzk2MzgpOiBVc2UgbG9nb3V0IHJvdXRlIHdoZW4gaXQgd2lsbCBzdXBwb3J0IHBhc3NpbmcgcmVkaXJlY3QgdXJsXG4gICAgdGhpcy5hdXRoU2VydmljZS5jb3JlTG9nb3V0KCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlLmdvKFxuICAgICAgICB7IGN4Um91dGU6ICdsb2dpbicgfSxcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICBuZXdVaWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkVycm9yKF9lcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICB0aGlzLmJ1c3kkLm5leHQoZmFsc2UpO1xuICB9XG59XG4iXX0=