@vendasta/store
Version:
Components and data for Store
94 lines • 15.7 kB
JavaScript
import { Injectable } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router } from '@angular/router';
import { EditionsService, Release } from '@vendasta/marketplace-apps/v1';
import { AppKey, AppPartnerService } from '@vendasta/marketplace-apps';
import { combineLatest, of } from 'rxjs';
import { catchError, map, switchMap, tap } from 'rxjs/operators';
import { SelectedTab } from '../product-details-v2.interface';
import { EditionSelectorComponent, windowSize } from './edition-selector.component';
import { ResponseType } from './edition-selector.types';
import { FeatureFlagService } from '@vendasta/partner';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "@angular/material/dialog";
import * as i3 from "@vendasta/marketplace-apps";
import * as i4 from "@vendasta/marketplace-apps/v1";
import * as i5 from "@vendasta/partner";
const SM_HAS_UWM_EDITION = 'sm_has_uwm_edition';
const UWM_ONLY_EDITION_IDS = ['EDITION-VPJ86CQN', 'EDITION-WF4L747L'];
export class EditionSelectorService {
constructor(router, route, dialog, partnerAppService, editionsService, featureFlagService) {
this.router = router;
this.route = route;
this.dialog = dialog;
this.partnerAppService = partnerAppService;
this.editionsService = editionsService;
this.featureFlagService = featureFlagService;
}
openEditionSelector(input) {
this.featureFlags$ = this.featureFlagService.batchGetStatus(input.partnerId, input.marketId, [SM_HAS_UWM_EDITION]);
const appKeys = [new AppKey({ appId: input.productId })];
if (input.childId) {
appKeys.push(new AppKey({ appId: input.childId }));
}
return combineLatest([
this.partnerAppService
.getMulti(appKeys, input.partnerId, input.marketId, null, true)
.pipe(catchError(() => of([]))),
this.editionsService.listEditionsMarketingForApp(input.productId, Release.RELEASE_PUBLISH).pipe(map((editionsMarketing) => editionsMarketing || []), catchError(() => of([]))),
this.featureFlags$,
]).pipe(switchMap(([apps, editionsMarketing, features]) => {
if (!features[SM_HAS_UWM_EDITION]) {
UWM_ONLY_EDITION_IDS.forEach((uoe) => {
const index = editionsMarketing.findIndex((ed) => ed.editionId === uoe);
if (index !== -1) {
editionsMarketing.splice(index, 1);
}
});
}
const product = apps[0];
const child = apps.length > 1 ? apps[1] : null;
if (editionsMarketing?.length === 1) {
return of({
type: ResponseType.EditionSelected,
productId: product?.key?.appId,
editionId: editionsMarketing[0]?.editionId,
});
}
else if (editionsMarketing?.length > 1) {
const multiplier = editionsMarketing.length >= windowSize ? 0 : (windowSize - editionsMarketing.length) / windowSize;
return this.dialog
.open(EditionSelectorComponent, {
id: 'edition-selector-dialog',
maxWidth: `calc(55vw - (55vw * ${multiplier})`,
data: {
...input,
editionsMarketing: editionsMarketing,
translationArgs: {
productName: product.sharedMarketingInformation.name,
childName: child?.sharedMarketingInformation?.name,
},
},
})
.afterClosed();
}
return of({ type: ResponseType.EditionsUnsupported, productId: product?.key?.appId });
}), tap((resp) => {
if (resp?.type === ResponseType.CompareEditions) {
return this.router.navigate([input.appURL], {
queryParams: {
tab: SelectedTab.EditionsAndPricing,
},
});
}
}));
}
}
EditionSelectorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: EditionSelectorService, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.MatDialog }, { token: i3.AppPartnerService }, { token: i4.EditionsService }, { token: i5.FeatureFlagService }], target: i0.ɵɵFactoryTarget.Injectable });
EditionSelectorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: EditionSelectorService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.2", ngImport: i0, type: EditionSelectorService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.MatDialog }, { type: i3.AppPartnerService }, { type: i4.EditionsService }, { type: i5.FeatureFlagService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGlvbi1zZWxlY3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zdG9yZS9zcmMvbGliL3Byb2R1Y3QtZGV0YWlscy12Mi9lZGl0aW9uLXNlbGVjdG9yL2VkaXRpb24tc2VsZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BGLE9BQU8sRUFBa0IsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7QUFjdkQsTUFBTSxrQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLG9CQUFvQixHQUFHLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztBQUd0RSxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFlBQ1UsTUFBYyxF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O0lBQ0osQ0FBQzs7bUhBM0VVLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRFQsTUFBTTsyRkFDbkIsc0JBQXNCO2tCQURsQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEVkaXRpb25zU2VydmljZSwgUmVsZWFzZSB9IGZyb20gJ0B2ZW5kYXN0YS9tYXJrZXRwbGFjZS1hcHBzL3YxJztcbmltcG9ydCB7IEFwcEtleSwgQXBwUGFydG5lclNlcnZpY2UgfSBmcm9tICdAdmVuZGFzdGEvbWFya2V0cGxhY2UtYXBwcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNlbGVjdGVkVGFiIH0gZnJvbSAnLi4vcHJvZHVjdC1kZXRhaWxzLXYyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFZGl0aW9uU2VsZWN0b3JDb21wb25lbnQsIHdpbmRvd1NpemUgfSBmcm9tICcuL2VkaXRpb24tc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ1Jlc3BvbnNlLCBSZXNwb25zZVR5cGUgfSBmcm9tICcuL2VkaXRpb24tc2VsZWN0b3IudHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnQHZlbmRhc3RhL3BhcnRuZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0lucHV0IHtcbiAgcGFydG5lcklkOiBzdHJpbmc7XG4gIG1hcmtldElkOiBzdHJpbmc7XG4gIHByb2R1Y3RJZDogc3RyaW5nO1xuICBjaGlsZElkPzogc3RyaW5nO1xuICB0cmFuc2xhdGlvbktleXM6IHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIGV4cGxhbmF0aW9uPzogc3RyaW5nO1xuICB9O1xuICBhcHBVUkw6IHN0cmluZztcbn1cblxuY29uc3QgU01fSEFTX1VXTV9FRElUSU9OID0gJ3NtX2hhc191d21fZWRpdGlvbic7XG5jb25zdCBVV01fT05MWV9FRElUSU9OX0lEUyA9IFsnRURJVElPTi1WUEo4NkNRTicsICdFRElUSU9OLVdGNEw3NDdMJ107XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRWRpdGlvblNlbGVjdG9yU2VydmljZSB7XG4gIGZlYXR1cmVGbGFncyQ6IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBwYXJ0bmVyQXBwU2VydmljZTogQXBwUGFydG5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlZGl0aW9uc1NlcnZpY2U6IEVkaXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGZlYXR1cmVGbGFnU2VydmljZTogRmVhdHVyZUZsYWdTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIG9wZW5FZGl0aW9uU2VsZWN0b3IoaW5wdXQ6IERpYWxvZ0lucHV0KTogT2JzZXJ2YWJsZTxEaWFsb2dSZXNwb25zZT4ge1xuICAgIHRoaXMuZmVhdHVyZUZsYWdzJCA9IHRoaXMuZmVhdHVyZUZsYWdTZXJ2aWNlLmJhdGNoR2V0U3RhdHVzKGlucHV0LnBhcnRuZXJJZCwgaW5wdXQubWFya2V0SWQsIFtTTV9IQVNfVVdNX0VESVRJT05dKTtcbiAgICBjb25zdCBhcHBLZXlzID0gW25ldyBBcHBLZXkoeyBhcHBJZDogaW5wdXQucHJvZHVjdElkIH0pXTtcbiAgICBpZiAoaW5wdXQuY2hpbGRJZCkge1xuICAgICAgYXBwS2V5cy5wdXNoKG5ldyBBcHBLZXkoeyBhcHBJZDogaW5wdXQuY2hpbGRJZCB9KSk7XG4gICAgfVxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMucGFydG5lckFwcFNlcnZpY2VcbiAgICAgICAgLmdldE11bHRpKGFwcEtleXMsIGlucHV0LnBhcnRuZXJJZCwgaW5wdXQubWFya2V0SWQsIG51bGwsIHRydWUpXG4gICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSksXG4gICAgICB0aGlzLmVkaXRpb25zU2VydmljZS5saXN0RWRpdGlvbnNNYXJrZXRpbmdGb3JBcHAoaW5wdXQucHJvZHVjdElkLCBSZWxlYXNlLlJFTEVBU0VfUFVCTElTSCkucGlwZShcbiAgICAgICAgbWFwKChlZGl0aW9uc01hcmtldGluZykgPT4gZWRpdGlvbnNNYXJrZXRpbmcgfHwgW10pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKFtdKSksXG4gICAgICApLFxuICAgICAgdGhpcy5mZWF0dXJlRmxhZ3MkLFxuICAgIF0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFthcHBzLCBlZGl0aW9uc01hcmtldGluZywgZmVhdHVyZXNdKSA9PiB7XG4gICAgICAgIGlmICghZmVhdHVyZXNbU01fSEFTX1VXTV9FRElUSU9OXSkge1xuICAgICAgICAgIFVXTV9PTkxZX0VESVRJT05fSURTLmZvckVhY2goKHVvZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBlZGl0aW9uc01hcmtldGluZy5maW5kSW5kZXgoKGVkKSA9PiBlZC5lZGl0aW9uSWQgPT09IHVvZSk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIGVkaXRpb25zTWFya2V0aW5nLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvZHVjdCA9IGFwcHNbMF07XG4gICAgICAgIGNvbnN0IGNoaWxkID0gYXBwcy5sZW5ndGggPiAxID8gYXBwc1sxXSA6IG51bGw7XG4gICAgICAgIGlmIChlZGl0aW9uc01hcmtldGluZz8ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgIHR5cGU6IFJlc3BvbnNlVHlwZS5FZGl0aW9uU2VsZWN0ZWQsXG4gICAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3Q/LmtleT8uYXBwSWQsXG4gICAgICAgICAgICBlZGl0aW9uSWQ6IGVkaXRpb25zTWFya2V0aW5nWzBdPy5lZGl0aW9uSWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWRpdGlvbnNNYXJrZXRpbmc/Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID1cbiAgICAgICAgICAgIGVkaXRpb25zTWFya2V0aW5nLmxlbmd0aCA+PSB3aW5kb3dTaXplID8gMCA6ICh3aW5kb3dTaXplIC0gZWRpdGlvbnNNYXJrZXRpbmcubGVuZ3RoKSAvIHdpbmRvd1NpemU7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGlhbG9nXG4gICAgICAgICAgICAub3BlbihFZGl0aW9uU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgaWQ6ICdlZGl0aW9uLXNlbGVjdG9yLWRpYWxvZycsXG4gICAgICAgICAgICAgIG1heFdpZHRoOiBgY2FsYyg1NXZ3IC0gKDU1dncgKiAke211bHRpcGxpZXJ9KWAsXG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgICAgICBlZGl0aW9uc01hcmtldGluZzogZWRpdGlvbnNNYXJrZXRpbmcsXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25BcmdzOiB7XG4gICAgICAgICAgICAgICAgICBwcm9kdWN0TmFtZTogcHJvZHVjdC5zaGFyZWRNYXJrZXRpbmdJbmZvcm1hdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgICAgY2hpbGROYW1lOiBjaGlsZD8uc2hhcmVkTWFya2V0aW5nSW5mb3JtYXRpb24/Lm5hbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YoeyB0eXBlOiBSZXNwb25zZVR5cGUuRWRpdGlvbnNVbnN1cHBvcnRlZCwgcHJvZHVjdElkOiBwcm9kdWN0Py5rZXk/LmFwcElkIH0pO1xuICAgICAgfSksXG4gICAgICB0YXAoKHJlc3ApID0+IHtcbiAgICAgICAgaWYgKHJlc3A/LnR5cGUgPT09IFJlc3BvbnNlVHlwZS5Db21wYXJlRWRpdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2lucHV0LmFwcFVSTF0sIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgIHRhYjogU2VsZWN0ZWRUYWIuRWRpdGlvbnNBbmRQcmljaW5nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxufVxuIl19