UNPKG

@vendasta/store

Version:

Components and data for Store

94 lines 15.7 kB
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