{ "version": 3, "sources": ["apps/partner-center-client/src/app/core/markets/constants.ts", "apps/partner-center-client/src/app/core/markets/market.ts", "apps/partner-center-client/src/app/core/markets/markets.service.ts"], "sourcesContent": ["export const MARKET_ID_PARAM = 'marketId';\n", "export class Market {\n name: string;\n partner_id: string;\n market_id: string;\n\n constructor(data: any) {\n Object.assign(this, data);\n if (data.pid) {\n this.partner_id = data.pid;\n }\n }\n}\n", "import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { combineLatest, merge, Observable, ReplaySubject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { ApiService } from '../../api-service/api.service';\nimport { AppConfigProvider, AppConfigService } from '../../app-config.service';\nimport { AccessService, Feature, StubAccessService } from '../access';\nimport { MARKET_ID_PARAM } from './constants';\nimport { Market } from './market';\n\n@Injectable({ providedIn: 'root' })\nexport class MarketsService {\n public readonly markets$ = this.appConfig.config$.pipe(\n switchMap(() => this.api.get('/_ajax/v1/marketplace/market/list')),\n map((markets) => markets.map((market) => new Market(market)) as Market[]),\n map((markets) =>\n markets.sort((a, b) => {\n const aName = a.name.toLowerCase(),\n bName = b.name.toLowerCase();\n\n return aName < bName ? -1 : 1;\n }),\n ),\n shareReplay({ refCount: false, bufferSize: 1 }),\n );\n\n private defaultMarket$ = this.markets$.pipe(\n map((markets) => {\n let defaultMarket = markets.find((market) => market.market_id === 'default');\n if (!defaultMarket) {\n defaultMarket = markets[0];\n }\n return defaultMarket;\n }),\n );\n\n private userSelectedMarketId$$ = new ReplaySubject(1);\n private appSelectedMarketId$$ = this.defaultMarket$.pipe(\n map((defaultMarket) => {\n const params = this.route.snapshot.queryParams;\n // tslint:disable-next-line:no-string-literal\n let marketIdQueryParam = params['marketID'] || params[MARKET_ID_PARAM];\n if (marketIdQueryParam) {\n if (marketIdQueryParam === 'null') {\n marketIdQueryParam = null;\n }\n return marketIdQueryParam;\n } else {\n return defaultMarket?.market_id;\n }\n }),\n );\n\n private selectedMarketId$ = merge(this.appSelectedMarketId$$, this.userSelectedMarketId$$).pipe(shareReplay(1));\n\n private selectedMarket$ = combineLatest([this.markets$, this.selectedMarketId$]).pipe(\n map(([markets, selectedMarketId]) => markets.find((market) => market.market_id === selectedMarketId)),\n filter((market) => !!market),\n );\n\n public readonly hasAccessToAllMarkets$ = this.accessService\n .hasAccessToFeature(Feature.markets)\n .pipe(distinctUntilChanged());\n\n public readonly adminCanAccessAllPartnerMarkets$ = this.appConfig.config$.pipe(\n map((config) => config.accessibleMarketIds.length === 0),\n );\n\n public readonly userAccessibleMarkets$ = combineLatest([\n this.appConfig.config$.pipe(map((config) => config.accessibleMarketIds)),\n this.markets$,\n ]).pipe(\n map(([accessibleMarketIds, markets]) => {\n if (accessibleMarketIds?.length || 0 > 0) {\n return markets.filter((m: Market) => accessibleMarketIds.indexOf(m.market_id) >= 0);\n }\n return markets;\n }),\n );\n\n // if the partner does not have the default market, we will use the first marketId in their list\n public defaultMarketId = 'default';\n\n constructor(\n private api: ApiService,\n private route: ActivatedRoute,\n @Inject(StubAccessService) private accessService: AccessService,\n @Inject(AppConfigService) private appConfig: AppConfigProvider,\n ) {}\n\n get markets(): Observable {\n return this.markets$;\n }\n\n get currentMarket$(): Observable {\n return this.selectedMarket$;\n }\n\n selectMarket(market: Market): void {\n if (!market) {\n return;\n }\n this.selectMarketByID(market.market_id);\n }\n\n selectMarketByID(marketId: string): void {\n this.userSelectedMarketId$$.next(marketId);\n }\n\n selectDefaultMarket(): void {\n this.selectMarketByID(this.defaultMarketId);\n }\n\n getMarkets(): Observable {\n return this.markets$;\n }\n\n getMarket(marketId: string): Observable {\n return this.markets$.pipe(\n map((markets) => {\n return markets.find((market) => (market.market_id ? market.market_id : '') === marketId);\n }),\n );\n }\n}\n"], "mappings": "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", "names": ["MARKET_ID_PARAM", "Market", "constructor", "data", "Object", "assign", "pid", "partner_id", "MarketsService", "constructor", "api", "route", "accessService", "appConfig", "markets$", "config$", "pipe", "switchMap", "get", "map", "markets", "market", "Market", "sort", "a", "b", "aName", "name", "toLowerCase", "bName", "shareReplay", "refCount", "bufferSize", "defaultMarket$", "defaultMarket", "find", "market_id", "userSelectedMarketId$$", "ReplaySubject", "appSelectedMarketId$$", "params", "snapshot", "queryParams", "marketIdQueryParam", "MARKET_ID_PARAM", "selectedMarketId$", "merge", "selectedMarket$", "combineLatest", "selectedMarketId", "filter", "hasAccessToAllMarkets$", "hasAccessToFeature", "distinctUntilChanged", "adminCanAccessAllPartnerMarkets$", "config", "accessibleMarketIds", "length", "userAccessibleMarkets$", "m", "indexOf", "defaultMarketId", "currentMarket$", "selectMarket", "selectMarketByID", "marketId", "next", "selectDefaultMarket", "getMarkets", "getMarket", "\u0275\u0275inject", "ApiService", "ActivatedRoute", "StubAccessService", "AppConfigService", "factory", "\u0275fac", "providedIn", "_MarketsService"] }