{ "version": 3, "sources": ["apps/vendor-center-client/src/app/core/marketplace-app-diff/marketplace-app-diff-model.ts", "apps/vendor-center-client/src/app/core/diff-utils.ts", "apps/vendor-center-client/src/app/core/marketplace-app-diff/marketplace-app-diff.service.ts", "apps/vendor-center-client/src/app/core/marketplace-app/marketplace-app.service.ts"], "sourcesContent": ["export const ChangeTypeAddition = 'A';\nexport const ChangeTypeDeletion = 'D';\n\nexport class MarketplaceAppDiffModel {\n appId: string;\n generalSettingsChanges: ChangedField[] = [];\n integrationChanges: ChangedField[] = [];\n endUserChanges: ChangedField[] = [];\n resellerChanges: ChangedField[] = [];\n orderFormChanges: ChangedField[] = [];\n dateChanged: Date;\n\n hasChanges(): boolean {\n let generalSettingsChanges;\n if (this.generalSettingsChanges) {\n // Don't count the version differences.\n generalSettingsChanges = this.generalSettingsChanges.filter((changeField) => {\n return changeField.fieldName.toLowerCase() !== 'version';\n });\n } else {\n generalSettingsChanges = this.generalSettingsChanges;\n }\n return !!(\n generalSettingsChanges.length ||\n this.integrationChanges.length ||\n this.endUserChanges.length ||\n this.resellerChanges.length ||\n this.orderFormChanges.length\n );\n }\n}\n\nexport class ChangedField {\n fieldName: string;\n displayType: MpAppFieldDisplayType;\n oldValue: any;\n newValue: any;\n changeType: any;\n\n constructor(fieldName: string, displayType: MpAppFieldDisplayType, oldValue: any, newValue: any, changeType: string) {\n this.fieldName = fieldName;\n this.displayType = displayType;\n this.oldValue = oldValue;\n this.newValue = newValue;\n this.changeType = changeType;\n }\n}\n\nexport enum MpAppFieldDisplayType {\n Text = 1,\n Money,\n Image,\n DateTime,\n Url,\n Email,\n File,\n Faq,\n OrderForm,\n CommonFormRequiredFields,\n lmiCategories,\n restrictions,\n}\n", "export function createEmptyValue(diffValue: any): any {\n if (diffValue) {\n if (Array.isArray(diffValue)) {\n // Arrays new to have the same number of elements but contain only empty strings.\n return Array(diffValue.length).fill('');\n }\n if (typeof diffValue === 'string' || diffValue instanceof String) {\n return ' ';\n }\n // if object is empty display it as a blank line\n if (diffValue !== null && typeof diffValue === 'object') {\n return ' ';\n }\n // Empty boolean is by default false\n if (typeof diffValue === 'boolean') {\n return false;\n }\n }\n return null;\n}\n", "import { Injectable } from '@angular/core';\nimport { MarketplaceApp } from '@galaxy/marketplace-apps/v1';\nimport { createEmptyValue } from '../diff-utils';\nimport {\n ChangeTypeAddition,\n ChangeTypeDeletion,\n ChangedField,\n MarketplaceAppDiffModel,\n MpAppFieldDisplayType,\n} from './marketplace-app-diff-model';\n\n@Injectable()\nexport class MarketplaceAppDiffService {\n private INTEGRATION_SETTINGS_FIELD = 'integration';\n private END_USER_SETTINGS_FIED = 'endUserMarketing';\n private RESELLER_SETTINGS_FIELD = 'resellerMarketing';\n private ORDER_FORM_SETTINGS_FIELD = 'orderForm';\n private UPDATED_FIELD = 'updated';\n private COST_FIELD = 'cost';\n\n private fieldDisplayTypeMapping: Map = new Map([\n ['partnerContactRecipients', MpAppFieldDisplayType.Text],\n ['price', MpAppFieldDisplayType.Money],\n ['managementFee', MpAppFieldDisplayType.Money],\n ['suggestedRetailSetupFee', MpAppFieldDisplayType.Money],\n ['icon', MpAppFieldDisplayType.Image],\n ['screenshot', MpAppFieldDisplayType.Image],\n ['headerImage', MpAppFieldDisplayType.Image],\n ['created', MpAppFieldDisplayType.DateTime],\n ['dateChanged', MpAppFieldDisplayType.DateTime],\n ['signInUrl', MpAppFieldDisplayType.Url],\n ['websiteUrl', MpAppFieldDisplayType.Url],\n ['purchaseWebhookUrl', MpAppFieldDisplayType.Url],\n ['addonPurchaseWebhookUrl', MpAppFieldDisplayType.Url],\n ['userModWebhookUrl', MpAppFieldDisplayType.Url],\n ['salestoolWebhookUrl', MpAppFieldDisplayType.Url],\n ['accountModWebhookUrl', MpAppFieldDisplayType.Url],\n ['contactWebhookUrl', MpAppFieldDisplayType.Url],\n ['logoutWebhookUrl', MpAppFieldDisplayType.Url],\n ['entryUrl', MpAppFieldDisplayType.Url],\n ['sessionUrl', MpAppFieldDisplayType.Url],\n ['settingsUrl', MpAppFieldDisplayType.Url],\n ['serviceChangeWebhookUrl', MpAppFieldDisplayType.Url],\n ['contactEmail', MpAppFieldDisplayType.Email],\n ['fulfillmentEmail', MpAppFieldDisplayType.Email],\n ['files', MpAppFieldDisplayType.File],\n ['faqs', MpAppFieldDisplayType.Faq],\n ['orderForm', MpAppFieldDisplayType.OrderForm],\n ['commonFormRequiredFields', MpAppFieldDisplayType.CommonFormRequiredFields],\n ['lmiCategories', MpAppFieldDisplayType.lmiCategories],\n ['restrictions', MpAppFieldDisplayType.restrictions],\n ]);\n\n /**\n * Calculates the differences between two Marketplace Apps. Intended to be used with draft and\n * published versions of the same app.\n * @param draft A version of the app that has unpublished changes pending (the \"new\" version).\n * @param published The version of the app that is currently published to the store (the \"old\"\n * version).\n * @param draftSuggestedRetailSetupFee The suggested retail setup fee for the draft version of the app.\n * @param publishedSuggestedRetailSetupFee The suggested retail setup fee for the published version of the app.\n * @returns {MarketplaceAppDiffModel} An object containing several arrays with the categorized differences between the\n * two versions.\n */\n getMarketPlaceAppDiffs(\n draft: MarketplaceApp,\n published: MarketplaceApp,\n draftSuggestedRetailSetupFee?: number,\n publishedSuggestedRetailSetupFee?: number,\n ): MarketplaceAppDiffModel {\n const diffModel = new MarketplaceAppDiffModel();\n const allFields: string[] = [];\n for (const field in published) {\n if (Object.prototype.hasOwnProperty.call(published, field)) {\n allFields.push(field);\n }\n }\n for (const field in draft) {\n if (Object.prototype.hasOwnProperty.call(draft, field) && allFields.indexOf(field) < 0) {\n allFields.push(field);\n }\n }\n for (let i = 0; i < allFields.length; i++) {\n const field = allFields[i];\n if (Object.prototype.hasOwnProperty.call(published, field)) {\n if (Object.prototype.hasOwnProperty.call(draft, field)) {\n if (field === this.INTEGRATION_SETTINGS_FIELD) {\n this.diffIntegrationFields(published[field], draft[field], field, diffModel);\n } else if (field === this.END_USER_SETTINGS_FIED) {\n this.diffEndUserFields(published[field], draft[field], field, diffModel);\n } else if (field === this.RESELLER_SETTINGS_FIELD) {\n this.diffResellerFields(published[field], draft[field], field, diffModel);\n } else if (field === this.ORDER_FORM_SETTINGS_FIELD) {\n this.diffOrderFormFields(published[field], draft[field], field, diffModel);\n } else if (field === this.UPDATED_FIELD) {\n // Just set the dateChanged date on the model using the date from the Draft - don't diff\n // it.\n diffModel.dateChanged = new Date(draft.updated);\n } else if (field === this.COST_FIELD) {\n this.diffCostFields(published[field], draft[field], field, diffModel);\n } else {\n const change = this.diffField(published[field], draft[field], field);\n if (change) {\n diffModel.generalSettingsChanges.push(change);\n }\n }\n } else {\n if (field !== 'inDevelopment') {\n // Field exists in published but not draft.\n const change = new ChangedField(\n field,\n this.getDisplayType(field),\n published[field],\n createEmptyValue(published[field]),\n ChangeTypeAddition,\n );\n if (field === 'trialSupport') {\n diffModel.integrationChanges.push(change);\n } else {\n diffModel.generalSettingsChanges.push(change);\n }\n }\n }\n } else {\n if (field !== 'inDevelopment') {\n // Field exists in draft but not published.\n const change = new ChangedField(\n field,\n this.getDisplayType(field),\n createEmptyValue(draft[field]),\n draft[field],\n ChangeTypeAddition,\n );\n if (field === 'trialSupport') {\n diffModel.integrationChanges.push(change);\n } else {\n diffModel.generalSettingsChanges.push(change);\n }\n }\n }\n }\n // Suggested retail setup fee is not part of the MarketplaceApp object so it needs to be compared separately.\n if (draftSuggestedRetailSetupFee !== publishedSuggestedRetailSetupFee) {\n const change = new ChangedField(\n 'suggestedRetailSetupFee',\n MpAppFieldDisplayType.Text,\n publishedSuggestedRetailSetupFee || 0,\n draftSuggestedRetailSetupFee || 0,\n // Changes made to a primitive type field are considers additions\n ChangeTypeAddition,\n );\n diffModel.generalSettingsChanges.push(change);\n console.log('diffModel', diffModel);\n }\n return diffModel;\n }\n\n private diffIntegrationFields(\n oldObject: any,\n newObject: any,\n fieldName: string,\n diffModel: MarketplaceAppDiffModel,\n ): void {\n const changes = this.diffObject(oldObject, newObject);\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n if (change.fieldName !== 'approved') {\n diffModel.integrationChanges.push(change);\n }\n }\n }\n\n private diffOrderFormFields(\n oldObject: any,\n newObject: any,\n fieldName: string,\n diffModel: MarketplaceAppDiffModel,\n ): void {\n // if (oldObject[key])\n const changes = this.diffObject(oldObject, newObject);\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n if (change.fieldName === 'activationMessage') {\n diffModel.resellerChanges.push(change);\n } else {\n diffModel.orderFormChanges.push(change);\n }\n }\n }\n\n private diffResellerFields(\n oldObject: any,\n newObject: any,\n fieldName: string,\n diffModel: MarketplaceAppDiffModel,\n ): void {\n const changes = this.diffObject(oldObject, newObject);\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n diffModel.resellerChanges.push(change);\n }\n }\n\n private diffEndUserFields(\n oldObject: any,\n newObject: any,\n fieldName: string,\n diffModel: MarketplaceAppDiffModel,\n ): void {\n const changes = this.diffObject(oldObject, newObject);\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n diffModel.endUserChanges.push(change);\n }\n }\n\n private diffCostFields(oldObject: any, newObject: any, fieldName: string, diffModel: MarketplaceAppDiffModel): void {\n const changes = this.diffObject(oldObject, newObject);\n for (let i = 0; i < changes.length; i++) {\n const change = changes[i];\n diffModel.generalSettingsChanges.push(change);\n }\n }\n\n private getDisplayType(fieldName: string): MpAppFieldDisplayType {\n if (this.fieldDisplayTypeMapping.has(fieldName)) {\n return this.fieldDisplayTypeMapping.get(fieldName);\n }\n\n return MpAppFieldDisplayType.Text;\n }\n\n protected diffObject(oldObject: any, newObject: any): ChangedField[] {\n const changes = [];\n for (const field in oldObject) {\n if (Object.prototype.hasOwnProperty.call(oldObject, field)) {\n if (Object.prototype.hasOwnProperty.call(newObject, field)) {\n // If the object has a nested array check each field in it for changes.\n if (oldObject[field] !== null && typeof oldObject[field] === 'object') {\n const oldField: Array = oldObject[field];\n const newField: Array = newObject[field];\n // Arrays should be considered equal if they are the same length and have the same items\n // in the same order.\n let length = 0;\n if (oldField.length === newField.length) {\n length = oldField.length;\n } else if (oldField.length > newField.length) {\n length = oldField.length;\n } else {\n length = newField.length;\n }\n for (let i = 0; i < length; i++) {\n // compare all values in the oldValues to all values in new values if it's array of\n // strings\n if (\n !(oldField[i] !== null && typeof oldField[i] === 'object') &&\n !(newField[i] !== null && typeof newField[i] === 'object')\n ) {\n if (newField[i]) {\n if (!oldField.includes(newField[i])) {\n let value = ' ';\n if (oldField[i]) {\n value = oldField[i];\n }\n changes.push(\n new ChangedField(field, this.getDisplayType(field), value, newField[i], ChangeTypeAddition),\n );\n continue;\n }\n }\n if (oldField[i]) {\n if (!newField.includes(oldField[i])) {\n let value = ' ';\n if (newField[i]) {\n value = newField[i];\n }\n changes.push(\n new ChangedField(field, this.getDisplayType(field), oldField[i], value, ChangeTypeDeletion),\n );\n }\n }\n } else {\n const change = this.diffField(oldField[i], newField[i], field);\n if (change) {\n changes.push(change);\n }\n }\n }\n } else {\n const change = this.diffField(oldObject[field], newObject[field], field);\n if (change) {\n changes.push(change);\n }\n }\n } else {\n // Field exists on oldObject but not newObject.\n if (Array.isArray(oldObject[field])) {\n newObject[field] = [];\n for (let i = 0; i < oldObject[field].length; i++) {\n const change = this.diffField(oldObject[field][i], newObject[field][i], field);\n if (change) {\n changes.push(change);\n }\n }\n } else {\n const change = this.diffField(oldObject[field], '', field);\n if (change) {\n changes.push(change);\n }\n }\n }\n }\n }\n\n for (const field in newObject) {\n if (Object.prototype.hasOwnProperty.call(newObject, field)) {\n if (!Object.prototype.hasOwnProperty.call(oldObject, field)) {\n // Field exists on newObject but not oldObject.\n if (Array.isArray(newObject[field])) {\n oldObject[field] = [''];\n } else {\n oldObject[field] = '';\n }\n const change = this.diffField(oldObject[field], newObject[field], field);\n if (change) {\n changes.push(change);\n }\n }\n }\n }\n\n return changes;\n }\n\n /**\n * Compares two fields and returns a ChangedField object if they are different.\n * @param oldField: The field from the published version of the app.\n * @param newField: The field from the draft version of the app.\n * @param fieldName: The name of the field being compared.\n */\n private diffField(oldField: any, newField: any, fieldName: string): ChangedField {\n if (!oldField && !newField) {\n return null;\n }\n if (oldField && !newField) {\n return new ChangedField(\n fieldName,\n this.getDisplayType(fieldName),\n oldField,\n createEmptyValue(oldField),\n ChangeTypeDeletion,\n );\n }\n if (newField && !oldField) {\n return new ChangedField(\n fieldName,\n this.getDisplayType(fieldName),\n createEmptyValue(newField),\n newField,\n ChangeTypeAddition,\n );\n }\n\n let areSame = true;\n let change = '';\n if (Array.isArray(oldField)) {\n // Arrays should be considered equal if they are the same length and have the same items in\n // the same order.\n let length = 0;\n if (oldField.length === newField.length) {\n length = oldField.length;\n } else if (oldField.length > newField.length) {\n length = oldField.length;\n } else {\n length = newField.length;\n }\n for (let i = 0; i < length && areSame; i++) {\n // Call itself recursively to compare each item in the array.\n const arrayChange = this.diffField(oldField[i], newField[i], fieldName);\n if (arrayChange) {\n areSame = false;\n change = arrayChange.changeType;\n }\n }\n } else if (oldField !== null && typeof oldField === 'object') {\n // Objects should be considered not equal if their JSON representations are not the same.\n if (JSON.stringify(oldField) === JSON.stringify(newField)) {\n areSame = true;\n } else if (JSON.stringify(oldField) > JSON.stringify(newField)) {\n change = ChangeTypeDeletion;\n areSame = false;\n } else {\n change = ChangeTypeAddition;\n areSame = false;\n }\n for (const field in oldField) {\n if (field !== 'toApiJson') {\n if (!Object.prototype.hasOwnProperty.call(newField, field)) {\n change = ChangeTypeDeletion;\n areSame = false;\n newField[field] = createEmptyValue(oldField[field]);\n }\n }\n }\n for (const field in newField) {\n if (!Object.prototype.hasOwnProperty.call(oldField, field)) {\n if (field !== 'toApiJson') {\n change = ChangeTypeAddition;\n areSame = false;\n oldField[field] = createEmptyValue(newField[field]);\n }\n }\n }\n } else {\n // Primitive types should be considered equal if they are the same value.\n // Will consider the change to be an addition if the values are different.\n if (oldField !== newField) {\n change = ChangeTypeAddition;\n areSame = false;\n }\n }\n if (!areSame) {\n return new ChangedField(fieldName, this.getDisplayType(fieldName), oldField, newField, change);\n }\n\n return null;\n }\n}\n", "import { HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport {\n AppRequirement,\n AppResponse,\n MarketplaceAppService as AppService,\n AppVendor,\n ApprovalProcess,\n ApproveAppRequest,\n BillingProcess,\n CreateAppRequest,\n DeleteAppRequest,\n DistributionSetting,\n EndOfTrialActions,\n FieldMask,\n MarketingInformation,\n MarketplaceApp,\n MarketplaceAppsApiService,\n OrderForm,\n PublishAppRequest,\n RequestAppReviewRequest,\n Restrictions,\n Rule,\n SuspendAppRequest,\n UnapproveAppRequest,\n UnsuspendAppRequest,\n UpdateAppApprovalAndBillingSettingsRequest,\n UpdateAppGeneralInformationRequest,\n UpdateAppIntegrationRequest,\n UpdateAppMarketingInformationRequest,\n UpdateAppOrderFormRequest,\n UpdateAppSSOIntegrationRequest,\n UpdateAppTrialConfigurationRequest,\n VendorService,\n} from '@galaxy/marketplace-apps/v1';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { FulfillmentOrderConfig, FulfillmentOrderConfigApiService, ReleaseType } from '@vendasta/marketplace-apps';\nimport { AreAppsDistributedToPartnerResponse, MarketplacePackagesApiService } from '@vendasta/marketplace-packages';\nimport { retryer } from '@vendasta/rx-utils';\nimport { BehaviorSubject, Observable, combineLatest as observableCombineLatest, of } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, map, shareReplay, skipWhile, switchMap, tap } from 'rxjs/operators';\nimport { AuthService } from '../auth/auth.service';\nimport { MarketplaceAppDiffService } from '../marketplace-app-diff/marketplace-app-diff.service';\n\n@Injectable()\nexport class MarketplaceAppService {\n constructor(\n private authService: AuthService,\n private apiService: MarketplaceAppsApiService,\n private marketplacePackagesApiService: MarketplacePackagesApiService,\n private appService: AppService,\n private vendorService: VendorService,\n private marketplaceAppDiffService: MarketplaceAppDiffService,\n private snackbarService: SnackbarService,\n private fufillmentOrderConfigApiService: FulfillmentOrderConfigApiService,\n ) {\n this.currentAppId$\n .pipe(\n switchMap((appId) => {\n return this.getDraft(appId)\n .pipe(this.errorStrategy$)\n .pipe(\n catchError(() => {\n this.snackbarService.openErrorSnack('Unable to load app. Please try again.');\n return of(null);\n }),\n );\n }),\n )\n .subscribe((app: MarketplaceApp) => {\n this.currentDraft$$.next(app);\n });\n\n this.currentAppId$\n .pipe(\n filter((appId) => !!appId),\n switchMap((appId) => {\n return this.marketplacePackagesApiService.areAppsDistributedToPartner({ appIds: [appId] }).pipe(\n catchError(() => {\n this.snackbarService.openErrorSnack('Unable to load all app details. Please try again.');\n return of(null);\n }),\n );\n }),\n )\n .subscribe((resp: AreAppsDistributedToPartnerResponse) => {\n if (resp && !!resp.areAppsDistributed && resp.areAppsDistributed.length > 0) {\n const isDistributed =\n resp.areAppsDistributed[0]?.isDistributed && !resp.areAppsDistributed[0].isSolelyDistributedToPartner;\n this.currentAppIsDistributed$$.next(isDistributed);\n }\n });\n\n this.currentPublished$ = this.currentApp$.pipe(\n filter((app) => !!app),\n switchMap((app) =>\n this.getPublished(app.appId).pipe(\n this.errorStrategy$,\n catchError((err: HttpErrorResponse) => {\n if (err.status === 404) {\n return of({});\n }\n }),\n ),\n ),\n shareReplay(1),\n ) as Observable;\n\n this.currentAppHasUnpublishedChanges$ = observableCombineLatest(this.currentApp$, this.currentPublished$).pipe(\n map(([draft, published]) => {\n const diffModel = this.marketplaceAppDiffService.getMarketPlaceAppDiffs(draft, published);\n return diffModel.hasChanges();\n }),\n );\n\n this.currentAppId$\n .pipe(switchMap((currentAppId) => this.getFulfillmentOrderConfig(currentAppId)))\n .subscribe((foConfig) => this.fulfillmentOrderConfig$$.next(foConfig));\n }\n\n get currentAppId$(): Observable {\n return this.currentAppId$$.asObservable().pipe(\n distinctUntilChanged(),\n filter((id) => !!id),\n );\n }\n\n // The current published app\n get currentPublishedApp(): Observable {\n return this.currentPublished$;\n }\n\n // The Current App in its draft form.\n get currentApp$(): Observable {\n return this.currentDraft$$.asObservable().pipe(skipWhile((a) => !a));\n }\n\n get currentApp(): MarketplaceApp {\n return this.currentDraft$$.getValue();\n }\n\n set currentApp(app: MarketplaceApp) {\n this.currentDraft$$.next(app);\n }\n\n // The vendor of the current draft app.\n get currentAppVendor$(): Observable {\n return this.currentApp$.pipe(\n switchMap((app) => this.vendorService.getMulti([app.vendorId])),\n map((resp) => (resp?.length > 0 ? resp[0] : null)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n // The partner ID of the vendor of the current draft app.\n get currentAppVendorPartnerId$(): Observable {\n return this.currentAppVendor$.pipe(\n map((vendor) => vendor.partnerId),\n filter((partnerId) => !!partnerId),\n distinctUntilChanged(),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n get currentAppIsDistributed$(): Observable {\n return this.currentAppIsDistributed$$.asObservable().pipe(\n skipWhile((x) => x === null),\n shareReplay(1),\n );\n }\n currentAppId$$: BehaviorSubject = new BehaviorSubject(null);\n private currentDraft$$: BehaviorSubject = new BehaviorSubject(null);\n private currentPublished$: Observable;\n private currentAppHasUnpublishedChanges$: Observable;\n private currentAppIsDistributed$$: BehaviorSubject = new BehaviorSubject(null);\n\n private fulfillmentOrderConfig$$: BehaviorSubject = new BehaviorSubject(null);\n public readonly fulfillmentOrderConfig$: Observable =\n this.fulfillmentOrderConfig$$.asObservable();\n\n private errorStrategy$: any = retryer({\n maxAttempts: 3,\n retryDelay: 200,\n timeoutMilliseconds: 10000,\n customRetryChecker: (errResp: HttpErrorResponse) => errResp.status === 503 || errResp.status === 504,\n });\n\n static createUpdateAppMarketingInformationRequest(\n appId: string,\n marketingInfo: MarketingInformation,\n usesMarketingInfo?: boolean,\n ): UpdateAppMarketingInformationRequest {\n const request = new UpdateAppMarketingInformationRequest();\n request.appId = appId;\n if (marketingInfo) {\n request.marketingInfo = marketingInfo;\n request.usesMarketingInformation = usesMarketingInfo;\n }\n return request;\n }\n\n static createUpdateAppGeneralSettingsRequest(\n app: MarketplaceApp,\n suggestedRetailSetupFee: number,\n fm: FieldMask,\n ): UpdateAppGeneralInformationRequest {\n const request = new UpdateAppGeneralInformationRequest({ fieldMask: fm });\n request.appId = app.appId;\n request.allowPriceNegotiation = app.allowPriceNegotiation;\n request.billingFrequency = app.billingFrequency;\n request.currency = app.currency;\n request.headerImage = app.headerImage;\n request.icon = app.icon;\n request.lmiCategories = app.lmiCategories;\n request.categories = app.categories;\n request.serviceModel = app.serviceModel;\n request.name = app.name;\n request.deliveryMethod = app.deliveryMethod;\n request.price = app.price;\n request.cost = app.cost;\n request.fees = app['Fees'];\n request.setupFee = app.setupFee;\n request.suggestedRetailSetupFee = suggestedRetailSetupFee;\n request.usesCustomPricing = app.usesCustomPricing;\n request.screenshot = app.screenshot;\n request.tagline = app.tagline;\n if (app.restrictions) {\n request.country = app.restrictions.country;\n }\n request.preventPriceConversionBetweenCurrencies = app.preventPriceConversionBetweenCurrencies;\n request.suggestedRetailPrice = app.suggestedRetailPrice;\n request.commitment = app.commitment;\n request.multipleActivations = app.multipleActivations;\n request.discoverable = app.discoverable;\n request.restrictions = app.restrictions;\n request.editionIds = app.editionIds;\n request.state = app.state;\n request.usesEditions = app.usesEditions;\n return request;\n }\n\n static createUpdateAppSSOUrlsRequest(app: MarketplaceApp): UpdateAppSSOIntegrationRequest {\n const request = new UpdateAppSSOIntegrationRequest();\n request.appId = app.appId;\n if (app.integration) {\n request.entryUrl = app.integration.entryUrl;\n request.logoutUrl = app.integration.logoutWebhookUrl;\n request.sessionUrl = app.integration.sessionUrl;\n }\n request.usesSsoIntegration = app.usesSsoIntegration;\n return request;\n }\n\n static createUpdateAppIntegrationRequest(app: MarketplaceApp): UpdateAppIntegrationRequest {\n const request = new UpdateAppIntegrationRequest();\n request.appId = app.appId;\n if (app.integration) {\n request.accountModWebhookUrl = app.integration.accountModWebhookUrl;\n request.activationRequiresApproval = app.integration.activationRequiresApproval;\n request.addonPurchaseWebhookUrl = app.integration.addonPurchaseWebhookUrl;\n request.contactWebhookUrl = app.integration.contactWebhookUrl;\n request.cancellationWebhookUrl = app.integration.cancellationWehookUrl;\n request.fulfillmentEmail = app.integration.fulfillmentEmail;\n request.partnerContactRecipients = app.integration.partnerContactRecipients;\n request.publicKey = app.integration.publicKey;\n request.purchaseWebhookUrl = app.integration.purchaseWebhookUrl;\n request.userModWebhookUrl = app.integration.userModWebhookUrl;\n request.partnerSettingsWebhookUrl = app.integration.partnerSettingsWebhookUrl;\n request.allowWhiteLabeling = app.integration.allowWhiteLabeling;\n request.sendCancelationNotifications = app.integration.sendCancelationNotifications;\n request.serviceChangeWebhookUrl = app.integration.serviceChangeWebhookUrl;\n request.appLevelHasAdminDashboard = app.integration.appLevelHasAdminDashboard;\n }\n request.usesIntegration = app.usesIntegration;\n return request;\n }\n\n static createUpdateAppOrderFormRequest(\n appId: string,\n usesOrderForm: boolean,\n usesActivationSpecificEntryUrl: boolean,\n orderForm: OrderForm,\n applicationUrl: string,\n ): UpdateAppOrderFormRequest {\n const request = new UpdateAppOrderFormRequest();\n request.appId = appId;\n request.usesOrderForm = usesOrderForm;\n request.usesActivationSpecificEntryUrl = usesActivationSpecificEntryUrl;\n request.applicationUrl = applicationUrl;\n if (orderForm) {\n request.orderForm = orderForm;\n }\n return request;\n }\n\n public clearApp(): void {\n this.currentDraft$$.next(null);\n this.currentAppId$$.next(null);\n this.currentAppIsDistributed$$.next(null);\n }\n\n public publishApp(appId: string): Observable {\n const request = new PublishAppRequest();\n request.appId = appId;\n return this.apiService.publishApp(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public requestAppReview(appId: string): Observable> {\n const request = new RequestAppReviewRequest();\n request.appId = appId;\n return this.apiService.requestAppReview(request);\n }\n\n getCurrentAppId(): string {\n return this.currentAppId$$.getValue();\n }\n\n setCurrentAppId(appId: string): void {\n this.currentAppId$$.next(appId);\n }\n\n getPublished(appId: string): Observable {\n return this.appService.getApp(appId);\n }\n\n getDraft(appId: string): Observable {\n return this.appService.getAppDraft(appId);\n }\n\n public approve(appId: string): Observable {\n const request = new ApproveAppRequest();\n request.appId = appId;\n\n return this.apiService.approveApp(request).pipe(map((resp) => resp.app));\n }\n\n public unapprove(appId: string): Observable {\n const request = new UnapproveAppRequest();\n request.appId = appId;\n\n return this.apiService.unapproveApp(request).pipe(map((resp) => resp.app));\n }\n\n public openAppToMarketplace(appId: string): Observable {\n const request = new UpdateAppApprovalAndBillingSettingsRequest();\n request.appId = appId;\n request.approvalProcess = ApprovalProcess.APPROVAL_PROCESS_VENDASTA;\n request.billingProcess = BillingProcess.BILLING_PROCESS_VENDASTA_BILLING;\n\n return this.apiService.updateAppApprovalAndBillingSettings(request).pipe(map((resp) => resp.app));\n }\n\n public suspend(appId: string): Observable> {\n const request = new SuspendAppRequest();\n request.appId = appId;\n return this.apiService.suspendApp(request);\n }\n\n public unsuspend(appId: string): Observable> {\n const request = new UnsuspendAppRequest();\n request.appId = appId;\n return this.apiService.unsuspendApp(request);\n }\n\n public create(app: MarketplaceApp, partnerId: string, parentId?: string): Observable {\n const request = this._buildCreateAppRequest(app, partnerId, parentId);\n return this.apiService.createApp(request).pipe(\n tap(() => {\n // This is to fix the eventual consistency with sql secondary index\n // Remove once we on longer use sql for getting partners apps\n }),\n );\n }\n\n _buildCreateAppRequest(app: MarketplaceApp, partnerId: string, parentId: string): CreateAppRequest {\n const request = new CreateAppRequest();\n if (app.integration) {\n request.accountModWebhookUrl = app.integration.accountModWebhookUrl;\n request.activationRequiresApproval = app.integration.activationRequiresApproval;\n request.addonPurchaseWebhookUrl = app.integration.addonPurchaseWebhookUrl;\n request.contactWebhookUrl = app.integration.contactWebhookUrl;\n request.fulfillmentEmail = app.integration.fulfillmentEmail;\n request.logoutUrl = app.integration.logoutWebhookUrl;\n request.purchaseWebhookUrl = app.integration.purchaseWebhookUrl;\n request.partnerSettingsWebhookUrl = app.integration.partnerSettingsWebhookUrl;\n request.userModWebhookUrl = app.integration.userModWebhookUrl;\n request.sessionUrl = app.integration.sessionUrl;\n request.entryUrl = app.integration.entryUrl;\n request.publicKey = app.integration.publicKey;\n request.allowWhiteLabeling = app.integration.allowWhiteLabeling;\n }\n request.multipleActivations = app.multipleActivations;\n request.allowPriceNegotiation = app.allowPriceNegotiation;\n request.billingFrequency = app.billingFrequency;\n request.currency = app.currency;\n request.endUserMarketing = app.endUserMarketing;\n request.headerImage = app.headerImage;\n request.icon = app.icon;\n request.lmiCategories = app.lmiCategories;\n request.name = app.name;\n request.deliveryMethod = app.deliveryMethod;\n request.orderForm = app.orderForm;\n request.price = app.price;\n request.suggestedRetailPrice = app.suggestedRetailPrice;\n request.preventPriceConversionBetweenCurrencies = app.preventPriceConversionBetweenCurrencies;\n request.resellerMarketing = app.resellerMarketing;\n\n request.restrictions = new Restrictions({});\n\n if (app.restrictions) {\n request.country = app.restrictions.country;\n request.restrictions.country = app.restrictions.country;\n }\n\n if (parentId) {\n request.restrictions.appRequirement = new AppRequirement({\n rules: [new Rule({ appIds: [parentId] })],\n });\n }\n\n request.screenshot = app.screenshot;\n request.tagline = app.tagline;\n request.usesOrderForm = app.usesOrderForm;\n request.usesActivationSpecificEntryUrl = app.usesActivationSpecificEntryUrl;\n request.usesResellerMarketing = app.usesResellerMarketing;\n request.usesIntegration = app.usesIntegration;\n request.commitment = app.commitment;\n request.usesSsoIntegration = app.usesSsoIntegration;\n request.discoverable = app.discoverable;\n request.applicationUrl = app.applicationUrl;\n\n if (app.appId) {\n request.customAppId = app.appId;\n }\n if (partnerId) {\n request.partnerId = partnerId;\n }\n request.distributionSetting = DistributionSetting.DISTRIBUTION_SETTING_SELF;\n\n return request;\n }\n\n public updateGeneralSettings(\n app: MarketplaceApp,\n suggestedRetailSetupFee: number,\n fieldMask?: FieldMask,\n ): Observable {\n if (!fieldMask) {\n fieldMask = new FieldMask({\n paths: ['Discoverable'],\n });\n }\n const request = MarketplaceAppService.createUpdateAppGeneralSettingsRequest(\n app,\n suggestedRetailSetupFee,\n fieldMask,\n );\n return this.apiService.updateAppGeneralSettings(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public updateRequiredBusinessData(app: MarketplaceApp, fieldMask?: FieldMask): Observable {\n if (!fieldMask) {\n fieldMask = new FieldMask({\n paths: [\n 'Restrictions.RequiredBusinessData.DescriptionShort',\n 'Restrictions.RequiredBusinessData.DescriptionLong',\n 'Restrictions.RequiredBusinessData.Hours',\n 'Restrictions.RequiredBusinessData.Services',\n 'Restrictions.RequiredBusinessData.Brands',\n ],\n });\n }\n const request = MarketplaceAppService.createUpdateAppGeneralSettingsRequest(app, 0, fieldMask);\n return this.apiService.updateAppGeneralSettings(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public updateEndUserMarketingInformation(app: MarketplaceApp): Observable {\n const request = MarketplaceAppService.createUpdateAppMarketingInformationRequest(app.appId, app.endUserMarketing);\n return this.apiService.updateAppEndUserMarketingInformation(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public updateResellerMarketingInformation(app: MarketplaceApp): Observable {\n const request = MarketplaceAppService.createUpdateAppMarketingInformationRequest(\n app.appId,\n app.resellerMarketing,\n app.usesResellerMarketing,\n );\n return this.apiService.updateAppResellerMarketingInformation(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public updateSSOIntegration(app: MarketplaceApp): Observable {\n const request = MarketplaceAppService.createUpdateAppSSOUrlsRequest(app);\n return this.apiService.updateAppSsoIntegration(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public updateIntegration(app: MarketplaceApp): Observable {\n const request = MarketplaceAppService.createUpdateAppIntegrationRequest(app);\n return this.apiService.updateAppIntegration(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public updateOrderForm(app: MarketplaceApp): Observable {\n const request = MarketplaceAppService.createUpdateAppOrderFormRequest(\n app.appId,\n app.usesOrderForm,\n app.usesActivationSpecificEntryUrl,\n app.orderForm,\n app.applicationUrl,\n );\n return this.apiService.updateAppOrderForm(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public deleteApp(appId: string): Observable> {\n const request = new DeleteAppRequest();\n request.appId = appId;\n return this.apiService.deleteApp(request);\n }\n\n public updateAppTrialConfiguration(app: MarketplaceApp): Observable {\n const request = new UpdateAppTrialConfigurationRequest();\n\n request.appId = app.appId;\n request.trialsEnabled = app.trialConfiguration.trialEnabled;\n request.duration = app.trialConfiguration.trialDuration;\n request.endOfTrialAction = EndOfTrialActions.DO_NOTHING;\n\n return this.apiService.updateAppTrialConfiguration(request).pipe(map((resp: AppResponse) => resp.app));\n }\n\n public isAppEnabled(appId: string): Observable {\n return this.marketplacePackagesApiService\n .getMultiIsAppEnabled({ appIds: [appId] })\n .pipe(map((response) => response.appEnablement[0].enabled));\n }\n\n public getFulfillmentOrderConfig(appId: string): Observable {\n return this.fufillmentOrderConfigApiService\n .getFulfillmentOrderConfig({\n appId: appId,\n release: ReleaseType.RELEASE_TYPE_DRAFT,\n projectionFilter: {\n includeFormConfig: true,\n },\n })\n .pipe(map((response) => response.config));\n }\n}\n"], "mappings": "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", "names": ["ChangeTypeAddition", "ChangeTypeDeletion", "MarketplaceAppDiffModel", "constructor", "generalSettingsChanges", "integrationChanges", "endUserChanges", "resellerChanges", "orderFormChanges", "hasChanges", "filter", "changeField", "fieldName", "toLowerCase", "length", "ChangedField", "displayType", "oldValue", "newValue", "changeType", "MpAppFieldDisplayType", "createEmptyValue", "diffValue", "Array", "isArray", "length", "fill", "String", "MarketplaceAppDiffService", "constructor", "INTEGRATION_SETTINGS_FIELD", "END_USER_SETTINGS_FIED", "RESELLER_SETTINGS_FIELD", "ORDER_FORM_SETTINGS_FIELD", "UPDATED_FIELD", "COST_FIELD", "fieldDisplayTypeMapping", "Map", "MpAppFieldDisplayType", "Text", "Money", "Image", "DateTime", "Url", "Email", "File", "Faq", "OrderForm", "CommonFormRequiredFields", "lmiCategories", "restrictions", "getMarketPlaceAppDiffs", "draft", "published", "draftSuggestedRetailSetupFee", "publishedSuggestedRetailSetupFee", "diffModel", "MarketplaceAppDiffModel", "allFields", "field", "Object", "prototype", "hasOwnProperty", "call", "push", "indexOf", "i", "length", "diffIntegrationFields", "diffEndUserFields", "diffResellerFields", "diffOrderFormFields", "dateChanged", "Date", "updated", "diffCostFields", "change", "diffField", "generalSettingsChanges", "ChangedField", "getDisplayType", "createEmptyValue", "ChangeTypeAddition", "integrationChanges", "console", "log", "oldObject", "newObject", "fieldName", "changes", "diffObject", "resellerChanges", "orderFormChanges", "endUserChanges", "has", "get", "oldField", "newField", "includes", "value", "ChangeTypeDeletion", "Array", "isArray", "areSame", "arrayChange", "changeType", "JSON", "stringify", "factory", "\u0275fac", "_MarketplaceAppDiffService", "MarketplaceAppService", "constructor", "authService", "apiService", "marketplacePackagesApiService", "appService", "vendorService", "marketplaceAppDiffService", "snackbarService", "fufillmentOrderConfigApiService", "currentAppId$$", "BehaviorSubject", "currentDraft$$", "currentAppIsDistributed$$", "fulfillmentOrderConfig$$", "fulfillmentOrderConfig$", "asObservable", "errorStrategy$", "retryer", "maxAttempts", "retryDelay", "timeoutMilliseconds", "customRetryChecker", "errResp", "status", "currentAppId$", "pipe", "switchMap", "appId", "getDraft", "catchError", "openErrorSnack", "of", "subscribe", "app", "next", "filter", "areAppsDistributedToPartner", "appIds", "resp", "areAppsDistributed", "length", "isDistributed", "isSolelyDistributedToPartner", "currentPublished$", "currentApp$", "getPublished", "err", "shareReplay", "currentAppHasUnpublishedChanges$", "observableCombineLatest", "map", "draft", "published", "getMarketPlaceAppDiffs", "hasChanges", "currentAppId", "getFulfillmentOrderConfig", "foConfig", "distinctUntilChanged", "id", "currentPublishedApp", "skipWhile", "a", "currentApp", "getValue", "currentAppVendor$", "getMulti", "vendorId", "refCount", "bufferSize", "currentAppVendorPartnerId$", "vendor", "partnerId", "currentAppIsDistributed$", "x", "createUpdateAppMarketingInformationRequest", "marketingInfo", "usesMarketingInfo", "request", "UpdateAppMarketingInformationRequest", "usesMarketingInformation", "createUpdateAppGeneralSettingsRequest", "suggestedRetailSetupFee", "fm", "UpdateAppGeneralInformationRequest", "fieldMask", "allowPriceNegotiation", "billingFrequency", "currency", "headerImage", "icon", "lmiCategories", "categories", "serviceModel", "name", "deliveryMethod", "price", "cost", "fees", "setupFee", "usesCustomPricing", "screenshot", "tagline", "restrictions", "country", "preventPriceConversionBetweenCurrencies", "suggestedRetailPrice", "commitment", "multipleActivations", "discoverable", "editionIds", "state", "usesEditions", "createUpdateAppSSOUrlsRequest", "UpdateAppSSOIntegrationRequest", "integration", "entryUrl", "logoutUrl", "logoutWebhookUrl", "sessionUrl", "usesSsoIntegration", "createUpdateAppIntegrationRequest", "UpdateAppIntegrationRequest", "accountModWebhookUrl", "activationRequiresApproval", "addonPurchaseWebhookUrl", "contactWebhookUrl", "cancellationWebhookUrl", "cancellationWehookUrl", "fulfillmentEmail", "partnerContactRecipients", "publicKey", "purchaseWebhookUrl", "userModWebhookUrl", "partnerSettingsWebhookUrl", "allowWhiteLabeling", "sendCancelationNotifications", "serviceChangeWebhookUrl", "appLevelHasAdminDashboard", "usesIntegration", "createUpdateAppOrderFormRequest", "usesOrderForm", "usesActivationSpecificEntryUrl", "orderForm", "applicationUrl", "UpdateAppOrderFormRequest", "clearApp", "publishApp", "PublishAppRequest", "requestAppReview", "RequestAppReviewRequest", "getCurrentAppId", "setCurrentAppId", "getApp", "getAppDraft", "approve", "ApproveAppRequest", "approveApp", "unapprove", "UnapproveAppRequest", "unapproveApp", "openAppToMarketplace", "UpdateAppApprovalAndBillingSettingsRequest", "approvalProcess", "ApprovalProcess", "APPROVAL_PROCESS_VENDASTA", "billingProcess", "BillingProcess", "BILLING_PROCESS_VENDASTA_BILLING", "updateAppApprovalAndBillingSettings", "suspend", "SuspendAppRequest", "suspendApp", "unsuspend", "UnsuspendAppRequest", "unsuspendApp", "create", "parentId", "_buildCreateAppRequest", "createApp", "tap", "CreateAppRequest", "endUserMarketing", "resellerMarketing", "Restrictions", "appRequirement", "AppRequirement", "rules", "Rule", "usesResellerMarketing", "customAppId", "distributionSetting", "DistributionSetting", "DISTRIBUTION_SETTING_SELF", "updateGeneralSettings", "FieldMask", "paths", "updateAppGeneralSettings", "updateRequiredBusinessData", "updateEndUserMarketingInformation", "updateAppEndUserMarketingInformation", "updateResellerMarketingInformation", "updateAppResellerMarketingInformation", "updateSSOIntegration", "updateAppSsoIntegration", "updateIntegration", "updateAppIntegration", "updateOrderForm", "updateAppOrderForm", "deleteApp", "DeleteAppRequest", "updateAppTrialConfiguration", "UpdateAppTrialConfigurationRequest", "trialsEnabled", "trialConfiguration", "trialEnabled", "duration", "trialDuration", "endOfTrialAction", "EndOfTrialActions", "DO_NOTHING", "isAppEnabled", "getMultiIsAppEnabled", "response", "appEnablement", "enabled", "release", "ReleaseType", "RELEASE_TYPE_DRAFT", "projectionFilter", "includeFormConfig", "config", "\u0275\u0275inject", "AuthService", "MarketplaceAppsApiService", "MarketplacePackagesApiService", "VendorService", "MarketplaceAppDiffService", "SnackbarService", "FulfillmentOrderConfigApiService", "factory", "\u0275fac", "_MarketplaceAppService"] }