{ "version": 3, "sources": ["apps/partner-center-client/src/app/core/business-center.service.ts"], "sourcesContent": ["import { Inject, Injectable } from '@angular/core';\nimport { WhitelabelService } from '@galaxy/partner';\nimport { newPartnerServiceContext, SSOService } from '@vendasta/sso';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\n\nexport interface VBCEntryInfo {\n url: string;\n name: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BusinessCenterService {\n private entryUrl$: Observable;\n private vbcName$: Observable = this.partnerId$.pipe(\n switchMap((partnerId) => this.whitelabelService.getBranding(partnerId)),\n map((branding) => branding.apps['VBC'].name),\n shareReplay(1),\n );\n private multiLocationName$: Observable;\n\n constructor(\n private ssoService: SSOService,\n @Inject('PARTNER_ID') private readonly partnerId$: Observable,\n private whitelabelService: WhitelabelService,\n ) {\n // Whitelabelled entry URL\n this.entryUrl$ = this.partnerId$.pipe(\n switchMap((partnerId) => {\n return this.ssoService.getEntryUrl('VBC', newPartnerServiceContext(partnerId));\n }),\n shareReplay(1),\n );\n }\n\n getVBCEntryUrl(accountGroupId?: string, page = 'dashboard'): Observable {\n if (accountGroupId) {\n // Entry URL with nextUrl to go to location's dashboard\n return combineLatest([this.entryUrl$, this.vbcName$]).pipe(\n map(([entryUrl, vbcName]) => {\n return {\n url: addNextUrl(entryUrl, `/account/location/${accountGroupId}/${page}`),\n name: vbcName,\n };\n }),\n );\n }\n // if no account group chosen, just redirect to /entry, and let business app\n // handle looking up default account group\n return combineLatest([this.entryUrl$, this.vbcName$]).pipe(\n map(([entryUrl, vbcName]) => {\n return {\n url: entryUrl,\n name: vbcName,\n };\n }),\n );\n }\n\n getMultiLocationEntryUrl(brandName: string): Observable {\n // Entry URL with nextUrl to go to location's dashboard\n return combineLatest([this.entryUrl$, this.vbcName$]).pipe(\n map(([entryUrl, name]) => {\n // Manually replace any slash with a '%2f'\n brandName = decodeURIComponent(brandName).replace(/\\//g, '%2F');\n return {\n url: addNextUrl(entryUrl, `/account/brands/${brandName}/dashboard`),\n name: `${name}`,\n };\n }),\n );\n }\n}\n\nexport function addNextUrl(entryUrl: string, nextUrl: string): string {\n if (!('URL' in window)) {\n return entryUrl + `?nextUrl=${encodeURIComponent(nextUrl)}`;\n }\n const urlObj = new URL(entryUrl);\n const params = new URLSearchParams(urlObj.search);\n params.append('nextUrl', nextUrl);\n urlObj.search = params.toString();\n return urlObj.toString();\n}\n"], "mappings": "6JAcA,IAAaA,GAAqB,IAAA,CAA5B,IAAOA,EAAP,MAAOA,CAAqB,CAShCC,YACUC,EAC+BC,EAC/BC,EAAoC,CAFpC,KAAAF,WAAAA,EAC+B,KAAAC,WAAAA,EAC/B,KAAAC,kBAAAA,EAVF,KAAAC,SAA+B,KAAKF,WAAWG,KACrDC,EAAWC,GAAc,KAAKJ,kBAAkBK,YAAYD,CAAS,CAAC,EACtEE,EAAKC,GAAaA,EAASC,KAAK,IAAOC,IAAI,EAC3CC,EAAY,CAAC,CAAC,EAUd,KAAKC,UAAY,KAAKZ,WAAWG,KAC/BC,EAAWC,GACF,KAAKN,WAAWc,YAAY,MAAOC,EAAyBT,CAAS,CAAC,CAC9E,EACDM,EAAY,CAAC,CAAC,CAElB,CAEAI,eAAeC,EAAyBC,EAAO,YAAW,CACxD,OAAID,EAEKE,EAAc,CAAC,KAAKN,UAAW,KAAKV,QAAQ,CAAC,EAAEC,KACpDI,EAAI,CAAC,CAACY,EAAUC,CAAO,KACd,CACLC,IAAKC,EAAWH,EAAU,qBAAqBH,CAAc,IAAIC,CAAI,EAAE,EACvEP,KAAMU,GAET,CAAC,EAKCF,EAAc,CAAC,KAAKN,UAAW,KAAKV,QAAQ,CAAC,EAAEC,KACpDI,EAAI,CAAC,CAACY,EAAUC,CAAO,KACd,CACLC,IAAKF,EACLT,KAAMU,GAET,CAAC,CAEN,CAEAG,yBAAyBC,EAAiB,CAExC,OAAON,EAAc,CAAC,KAAKN,UAAW,KAAKV,QAAQ,CAAC,EAAEC,KACpDI,EAAI,CAAC,CAACY,EAAUT,CAAI,KAElBc,EAAYC,mBAAmBD,CAAS,EAAEE,QAAQ,MAAO,KAAK,EACvD,CACLL,IAAKC,EAAWH,EAAU,mBAAmBK,CAAS,YAAY,EAClEd,KAAM,GAAGA,CAAI,IAEhB,CAAC,CAEN,yCA3DWb,GAAqB8B,EAAAC,CAAA,EAAAD,EAWtB,YAAY,EAAAA,EAAAE,CAAA,CAAA,CAAA,wBAXXhC,EAAqBiC,QAArBjC,EAAqBkC,UAAAC,WAFpB,MAAM,CAAA,EAEd,IAAOnC,EAAPoC,SAAOpC,CAAqB,GAAA,EA8D5B,SAAUyB,EAAWH,EAAkBe,EAAe,CAC1D,GAAI,EAAE,QAASC,QACb,OAAOhB,EAAW,YAAYiB,mBAAmBF,CAAO,CAAC,GAE3D,IAAMG,EAAS,IAAIC,IAAInB,CAAQ,EACzBoB,EAAS,IAAIC,gBAAgBH,EAAOI,MAAM,EAChDF,OAAAA,EAAOG,OAAO,UAAWR,CAAO,EAChCG,EAAOI,OAASF,EAAOI,SAAQ,EACxBN,EAAOM,SAAQ,CACxB", "names": ["BusinessCenterService", "constructor", "ssoService", "partnerId$", "whitelabelService", "vbcName$", "pipe", "switchMap", "partnerId", "getBranding", "map", "branding", "apps", "name", "shareReplay", "entryUrl$", "getEntryUrl", "newPartnerServiceContext", "getVBCEntryUrl", "accountGroupId", "page", "combineLatest", "entryUrl", "vbcName", "url", "addNextUrl", "getMultiLocationEntryUrl", "brandName", "decodeURIComponent", "replace", "\u0275\u0275inject", "SSOService", "WhitelabelService", "factory", "\u0275fac", "providedIn", "_BusinessCenterService", "nextUrl", "window", "encodeURIComponent", "urlObj", "URL", "params", "URLSearchParams", "search", "append", "toString"] }