@spartacus/user
Version:
User feature library for Spartacus
61 lines • 9.58 kB
JavaScript
import { Injectable } from '@angular/core';
import { CommandStrategy, LanguageSetEvent, } from '@spartacus/core';
import { UserAccountChangedEvent, } from '@spartacus/user/account/root';
import { map, switchMap, tap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@spartacus/user/account/root";
import * as i2 from "@spartacus/core";
import * as i3 from "../connectors/user-profile.connector";
export class UserProfileService {
constructor(userAccountService, authService, userProfileConnector, eventService, userIdService, query, command) {
this.userAccountService = userAccountService;
this.authService = authService;
this.userProfileConnector = userProfileConnector;
this.eventService = eventService;
this.userIdService = userIdService;
this.query = query;
this.command = command;
this.updateCommand = this.command.create((payload) => this.userIdService.takeUserId(true).pipe(switchMap((uid) => this.userProfileConnector.update(uid, payload.details).pipe(tap(() => {
this.eventService.dispatch({ user: payload.details }, UserAccountChangedEvent);
})))), {
strategy: CommandStrategy.Queue,
});
this.closeCommand = this.command.create(() => this.userIdService
.takeUserId(true)
.pipe(switchMap((uid) => this.userProfileConnector
.remove(uid)
.pipe(tap(() => this.authService.logout())))));
this.titleQuery = this.query.create(() => this.userProfileConnector.getTitles(), {
reloadOn: [LanguageSetEvent],
});
}
get() {
return this.userAccountService.get();
}
/**
* Updates the user's details.
*
* @param details User details to be updated.
*/
update(details) {
return this.updateCommand.execute({ details });
}
/**
* Closes the user account.
*/
close() {
return this.closeCommand.execute(undefined);
}
/**
* Returns titles that can be used for the user profiles.
*/
getTitles() {
return this.titleQuery.get().pipe(map((titles) => titles !== null && titles !== void 0 ? titles : []));
}
}
UserProfileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UserProfileService, deps: [{ token: i1.UserAccountFacade }, { token: i2.AuthService }, { token: i3.UserProfileConnector }, { token: i2.EventService }, { token: i2.UserIdService }, { token: i2.QueryService }, { token: i2.CommandService }], target: i0.ɵɵFactoryTarget.Injectable });
UserProfileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UserProfileService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: UserProfileService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.UserAccountFacade }, { type: i2.AuthService }, { type: i3.UserProfileConnector }, { type: i2.EventService }, { type: i2.UserIdService }, { type: i2.QueryService }, { type: i2.CommandService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcm9maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9mZWF0dXJlLWxpYnMvdXNlci9wcm9maWxlL2NvcmUvZmFjYWRlL3VzZXItcHJvZmlsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUlMLGVBQWUsRUFFZixnQkFBZ0IsR0FJakIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBRUwsdUJBQXVCLEdBRXhCLE1BQU0sOEJBQThCLENBQUM7QUFJdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBR3JELE1BQU0sT0FBTyxrQkFBa0I7SUF1QzdCLFlBQ1ksa0JBQXFDLEVBQ3JDLFdBQXdCLEVBQ3hCLG9CQUEwQyxFQUMxQyxZQUEwQixFQUMxQixhQUE0QixFQUM1QixLQUFtQixFQUNuQixPQUF1QjtRQU52Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQTdDekIsa0JBQWEsR0FBK0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3ZFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDVixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ3RDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ2hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDeEIsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUN6Qix1QkFBdUIsQ0FDeEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FDRixFQUNIO1lBQ0UsUUFBUSxFQUFFLGVBQWUsQ0FBQyxLQUFLO1NBQ2hDLENBQ0YsQ0FBQztRQUVRLGlCQUFZLEdBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQ3pELElBQUksQ0FBQyxhQUFhO2FBQ2YsVUFBVSxDQUFDLElBQUksQ0FBQzthQUNoQixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDaEIsSUFBSSxDQUFDLG9CQUFvQjthQUN0QixNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FDOUMsQ0FDRixDQUNKLENBQUM7UUFFUSxlQUFVLEdBQW1CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUN0RCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLEVBQzNDO1lBQ0UsUUFBUSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7U0FDN0IsQ0FDRixDQUFDO0lBVUMsQ0FBQztJQUVKLEdBQUc7UUFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxPQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxhQUFOLE1BQU0sY0FBTixNQUFNLEdBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDOzsrR0ExRVUsa0JBQWtCO21IQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF1dGhTZXJ2aWNlLFxuICBDb21tYW5kLFxuICBDb21tYW5kU2VydmljZSxcbiAgQ29tbWFuZFN0cmF0ZWd5LFxuICBFdmVudFNlcnZpY2UsXG4gIExhbmd1YWdlU2V0RXZlbnQsXG4gIFF1ZXJ5LFxuICBRdWVyeVNlcnZpY2UsXG4gIFVzZXJJZFNlcnZpY2UsXG59IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XG5pbXBvcnQge1xuICBVc2VyLFxuICBVc2VyQWNjb3VudENoYW5nZWRFdmVudCxcbiAgVXNlckFjY291bnRGYWNhZGUsXG59IGZyb20gJ0BzcGFydGFjdXMvdXNlci9hY2NvdW50L3Jvb3QnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGl0bGUsIFVzZXJQcm9maWxlRmFjYWRlIH0gZnJvbSAnQHNwYXJ0YWN1cy91c2VyL3Byb2ZpbGUvcm9vdCc7XG5pbXBvcnQgeyBVc2VyUHJvZmlsZUNvbm5lY3RvciB9IGZyb20gJy4uL2Nvbm5lY3RvcnMvdXNlci1wcm9maWxlLmNvbm5lY3Rvcic7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVXNlclByb2ZpbGVTZXJ2aWNlIGltcGxlbWVudHMgVXNlclByb2ZpbGVGYWNhZGUge1xuICBwcm90ZWN0ZWQgdXBkYXRlQ29tbWFuZDogQ29tbWFuZDx7IGRldGFpbHM6IFVzZXIgfT4gPSB0aGlzLmNvbW1hbmQuY3JlYXRlKFxuICAgIChwYXlsb2FkKSA9PlxuICAgICAgdGhpcy51c2VySWRTZXJ2aWNlLnRha2VVc2VySWQodHJ1ZSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh1aWQpID0+XG4gICAgICAgICAgdGhpcy51c2VyUHJvZmlsZUNvbm5lY3Rvci51cGRhdGUodWlkLCBwYXlsb2FkLmRldGFpbHMpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5kaXNwYXRjaChcbiAgICAgICAgICAgICAgICB7IHVzZXI6IHBheWxvYWQuZGV0YWlscyB9LFxuICAgICAgICAgICAgICAgIFVzZXJBY2NvdW50Q2hhbmdlZEV2ZW50XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICB7XG4gICAgICBzdHJhdGVneTogQ29tbWFuZFN0cmF0ZWd5LlF1ZXVlLFxuICAgIH1cbiAgKTtcblxuICBwcm90ZWN0ZWQgY2xvc2VDb21tYW5kOiBDb21tYW5kID0gdGhpcy5jb21tYW5kLmNyZWF0ZSgoKSA9PlxuICAgIHRoaXMudXNlcklkU2VydmljZVxuICAgICAgLnRha2VVc2VySWQodHJ1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHVpZCkgPT5cbiAgICAgICAgICB0aGlzLnVzZXJQcm9maWxlQ29ubmVjdG9yXG4gICAgICAgICAgICAucmVtb3ZlKHVpZClcbiAgICAgICAgICAgIC5waXBlKHRhcCgoKSA9PiB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCgpKSlcbiAgICAgICAgKVxuICAgICAgKVxuICApO1xuXG4gIHByb3RlY3RlZCB0aXRsZVF1ZXJ5OiBRdWVyeTxUaXRsZVtdPiA9IHRoaXMucXVlcnkuY3JlYXRlKFxuICAgICgpID0+IHRoaXMudXNlclByb2ZpbGVDb25uZWN0b3IuZ2V0VGl0bGVzKCksXG4gICAge1xuICAgICAgcmVsb2FkT246IFtMYW5ndWFnZVNldEV2ZW50XSxcbiAgICB9XG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHVzZXJBY2NvdW50U2VydmljZTogVXNlckFjY291bnRGYWNhZGUsXG4gICAgcHJvdGVjdGVkIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlclByb2ZpbGVDb25uZWN0b3I6IFVzZXJQcm9maWxlQ29ubmVjdG9yLFxuICAgIHByb3RlY3RlZCBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgdXNlcklkU2VydmljZTogVXNlcklkU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcXVlcnk6IFF1ZXJ5U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29tbWFuZDogQ29tbWFuZFNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldCgpOiBPYnNlcnZhYmxlPFVzZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy51c2VyQWNjb3VudFNlcnZpY2UuZ2V0KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgdXNlcidzIGRldGFpbHMuXG4gICAqXG4gICAqIEBwYXJhbSBkZXRhaWxzIFVzZXIgZGV0YWlscyB0byBiZSB1cGRhdGVkLlxuICAgKi9cbiAgdXBkYXRlKGRldGFpbHM6IFVzZXIpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGVDb21tYW5kLmV4ZWN1dGUoeyBkZXRhaWxzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgdXNlciBhY2NvdW50LlxuICAgKi9cbiAgY2xvc2UoKTogT2JzZXJ2YWJsZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VDb21tYW5kLmV4ZWN1dGUodW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRpdGxlcyB0aGF0IGNhbiBiZSB1c2VkIGZvciB0aGUgdXNlciBwcm9maWxlcy5cbiAgICovXG4gIGdldFRpdGxlcygpOiBPYnNlcnZhYmxlPFRpdGxlW10+IHtcbiAgICByZXR1cm4gdGhpcy50aXRsZVF1ZXJ5LmdldCgpLnBpcGUobWFwKCh0aXRsZXMpID0+IHRpdGxlcyA/PyBbXSkpO1xuICB9XG59XG4iXX0=