{ "version": 3, "sources": ["apps/business-center-client/src/app/partner-market-config/partner-market-config.service.ts"], "sourcesContent": ["import { Injectable } from '@angular/core';\nimport { WhitelabelService } from '@galaxy/partner';\nimport { Observable } from 'rxjs';\nimport { map, share, shareReplay, switchMap } from 'rxjs/operators';\nimport { partnerId } from '../../globals';\nimport { LocationsService } from '../locations';\nimport { IPartnerMarketConfigService } from './interface';\nimport { ConfigurationInterface, TimeRange } from '@vendasta/partner';\nimport { BusinessAppConfig } from './features';\n\n// This Feature enum contains all of the features that partner center client needs to know about\nexport const enum Feature {\n contentLibrary = 'content-library',\n guides = 'guides',\n localMarketingIndex = 'local-marketing-index',\n recommendations = 'recommendations',\n executiveReport = 'vbc-executive-report',\n meetingScheduler = 'meeting_scheduler_business_app',\n marketplace = 'access-marketplace',\n sscAccess = 'ssc-access',\n brandsAccess = 'brands',\n whitelabel = 'white-labeling',\n multiLocationReport = 'multi-location-report',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PartnerMarketConfigService implements IPartnerMarketConfigService {\n private readonly config$: Observable = this.locationService.marketId$.pipe(\n switchMap((marketId) => this.whitelabelService.getConfiguration(partnerId, marketId)),\n shareReplay(1),\n );\n\n // partnerFeatures are features that a partner has access to via their subscription\n private readonly partnerFeatures$: Observable;\n // businessAppConfig holds the features that a partner has turned on and off for a market\n private readonly _businessAppConfig$: Observable;\n\n constructor(private whitelabelService: WhitelabelService, private locationService: LocationsService) {\n this._businessAppConfig$ = this.config$.pipe(\n map(\n (config) =>\n ({\n ...config.businessCenterConfiguration,\n singleLocationDefaultTimeRange: this.toTimeRangeKey(\n config.businessCenterConfiguration.singleLocationDefaultTimeRange,\n ),\n multiLocationDefaultTimeRange: this.toTimeRangeKey(\n config.businessCenterConfiguration.multiLocationDefaultTimeRange,\n ),\n showStore: config.hasProductMarketplace && config.businessCenterConfiguration.showStore,\n } as BusinessAppConfig),\n ),\n shareReplay(1),\n );\n\n this.partnerFeatures$ = this.config$.pipe(\n map((config) => config.enabledFeatures),\n map((enabled) => {\n if (enabled.indexOf(Feature.contentLibrary) > -1) {\n // Until we get actual \"Guides\" feature back from PC - Graham\n enabled.push(Feature.guides);\n }\n if (enabled.indexOf(Feature.localMarketingIndex) > -1) {\n // Until we get actual \"Recommendations\" feature back from PC - Graham\n enabled.push(Feature.recommendations);\n }\n return enabled;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n getFeatures(): Observable {\n return this.partnerFeatures$;\n }\n\n hasAccessToFeature(feature: Feature): Observable {\n return this.partnerFeatures$.pipe(map((features) => Boolean(features && features.includes(feature)))).pipe(share());\n }\n\n get businessAppConfig$(): Observable {\n return this._businessAppConfig$;\n }\n\n private toTimeRangeKey(timeRange: TimeRange): string {\n switch (timeRange) {\n case TimeRange.TIME_RANGE_SEVEN_DAYS:\n return '7days';\n case TimeRange.TIME_RANGE_THIRTY_DAYS:\n return '30days';\n case TimeRange.TIME_RANGE_NINETY_DAYS:\n return '90days';\n case TimeRange.TIME_RANGE_SIX_MONTHS:\n return '6months';\n case TimeRange.TIME_RANGE_TWELVE_MONTHS:\n return '12months';\n default:\n return '7days';\n }\n }\n}\n"], "mappings": "iTAAA,IA0BaA,EA1BbC,EAAAC,EAAA,KAGAC,IACAC,IAGAC,gBAmBaL,GAA0B,IAAA,CAAjC,IAAOA,EAAP,MAAOA,CAA0B,CAWrCM,YAAoBC,EAA8CC,EAAiC,CAA/E,KAAAD,kBAAAA,EAA8C,KAAAC,gBAAAA,EAVjD,KAAAC,QAA8C,KAAKD,gBAAgBE,UAAUC,KAC5FC,EAAWC,GAAa,KAAKN,kBAAkBO,iBAAiBC,EAAWF,CAAQ,CAAC,EACpFG,EAAY,CAAC,CAAC,EASd,KAAKC,oBAAsB,KAAKR,QAAQE,KACtCO,EACGC,GACEC,EAAAC,EAAA,GACIF,EAAOG,6BADX,CAECC,+BAAgC,KAAKC,eACnCL,EAAOG,4BAA4BC,8BAA8B,EAEnEE,8BAA+B,KAAKD,eAClCL,EAAOG,4BAA4BG,6BAA6B,EAElEC,UAAWP,EAAOQ,uBAAyBR,EAAOG,4BAA4BI,WACzD,EAE3BV,EAAY,CAAC,CAAC,EAGhB,KAAKY,iBAAmB,KAAKnB,QAAQE,KACnCO,EAAKC,GAAWA,EAAOU,eAAe,EACtCX,EAAKY,IACCA,EAAQC,QAAO,iBAAA,EAA2B,IAE5CD,EAAQE,KAAI,QAAA,EAEVF,EAAQC,QAAO,uBAAA,EAAgC,IAEjDD,EAAQE,KAAI,iBAAA,EAEPF,EACR,EACDd,EAAY,CAAEiB,SAAU,GAAMC,WAAY,CAAC,CAAE,CAAC,CAElD,CAEAC,aAAW,CACT,OAAO,KAAKP,gBACd,CAEAQ,mBAAmBC,EAAgB,CACjC,OAAO,KAAKT,iBAAiBjB,KAAKO,EAAKoB,GAAaC,GAAQD,GAAYA,EAASE,SAASH,CAAO,EAAE,CAAC,EAAE1B,KAAK8B,EAAK,CAAE,CACpH,CAEA,IAAIC,oBAAkB,CACpB,OAAO,KAAKzB,mBACd,CAEQO,eAAemB,EAAoB,CACzC,OAAQA,EAAS,CACf,KAAKC,EAAUC,sBACb,MAAO,QACT,KAAKD,EAAUE,uBACb,MAAO,SACT,KAAKF,EAAUG,uBACb,MAAO,SACT,KAAKH,EAAUI,sBACb,MAAO,UACT,KAAKJ,EAAUK,yBACb,MAAO,WACT,QACE,MAAO,OACX,CACF,yCAzEWjD,GAA0BkD,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,wBAA1BpD,EAA0BqD,QAA1BrD,EAA0BsD,UAAAC,WADb,MAAM,CAAA,EAC1B,IAAOvD,EAAPwD,SAAOxD,CAA0B,GAAA", "names": ["PartnerMarketConfigService", "init_partner_market_config_service", "__esmMin", "init_operators", "init_globals", "init_vendasta_partner", "constructor", "whitelabelService", "locationService", "config$", "marketId$", "pipe", "switchMap", "marketId", "getConfiguration", "partnerId", "shareReplay", "_businessAppConfig$", "map", "config", "__spreadProps", "__spreadValues", "businessCenterConfiguration", "singleLocationDefaultTimeRange", "toTimeRangeKey", "multiLocationDefaultTimeRange", "showStore", "hasProductMarketplace", "partnerFeatures$", "enabledFeatures", "enabled", "indexOf", "push", "refCount", "bufferSize", "getFeatures", "hasAccessToFeature", "feature", "features", "Boolean", "includes", "share", "businessAppConfig$", "timeRange", "TimeRange", "TIME_RANGE_SEVEN_DAYS", "TIME_RANGE_THIRTY_DAYS", "TIME_RANGE_NINETY_DAYS", "TIME_RANGE_SIX_MONTHS", "TIME_RANGE_TWELVE_MONTHS", "\u0275\u0275inject", "WhitelabelService", "LocationsService", "factory", "\u0275fac", "providedIn", "_PartnerMarketConfigService"] }