{ "version": 3, "sources": ["apps/partner-center-client/src/app/manage_accounts/salespeople.service.ts"], "sourcesContent": ["import { Inject, Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Salesperson, SalespersonService } from '@vendasta/sales';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, ReplaySubject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { PARTNER_ID_INJECTION_TOKEN } from '../core/constants';\n\nconst SALESPEOPLE_PAGE_SIZE = 200;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SalespeopleService {\n private readonly salespeople$$ = new ReplaySubject(1);\n readonly salespeople$: Observable;\n\n private readonly loading$$ = new BehaviorSubject(false);\n readonly loading$ = this.loading$$.asObservable();\n\n private currentMarketId: string;\n private currentPartnerId: string;\n\n constructor(\n private readonly salespersonService: SalespersonService,\n private readonly translateService: TranslateService,\n @Inject(PARTNER_ID_INJECTION_TOKEN) private readonly partnerId$: Observable,\n ) {\n this.salespeople$ = this.salespeople$$.asObservable().pipe(startWith([]));\n }\n\n // Could cause a performance hit if a partner has a lot of salespeople\n async loadSalespeople(partnerId: string, marketId: string, cursor: string): Promise {\n if (this.currentPartnerId !== partnerId || this.currentMarketId !== marketId) {\n if (this.currentPartnerId !== undefined && this.currentMarketId !== undefined) {\n this.salespeople$$.next([]);\n }\n this.currentPartnerId = partnerId;\n this.currentMarketId = marketId;\n }\n\n this.loading$$.next(true);\n await firstValueFrom(\n combineLatest([\n this.salespersonService.listSalespersons(\n { partnerId: partnerId, marketId: marketId },\n cursor,\n SALESPEOPLE_PAGE_SIZE,\n ),\n this.salespeople$,\n ]),\n )\n .then(([response, curr]) => {\n this.salespeople$$.next(curr.concat(response.results));\n if (response.nextCursor) {\n this.loadSalespeople(partnerId, marketId, response.nextCursor);\n } else {\n this.loading$$.next(false);\n }\n })\n .catch(() => {\n this.translateService.instant('MANAGE_ACCOUNTS.ERROR_LOADING_SALESPEOPLE');\n this.loading$$.next(false);\n });\n }\n}\n"], "mappings": "qPAOA,IAAMA,EAAwB,IAKjBC,GAAkB,IAAA,CAAzB,IAAOA,EAAP,MAAOA,CAAkB,CAU7BC,YACmBC,EACAC,EACoCC,EAA8B,CAFlE,KAAAF,mBAAAA,EACA,KAAAC,iBAAAA,EACoC,KAAAC,WAAAA,EAZtC,KAAAC,cAAgB,IAAIC,EAA6B,CAAC,EAGlD,KAAAC,UAAY,IAAIC,EAAyB,EAAK,EACtD,KAAAC,SAAW,KAAKF,UAAUG,aAAY,EAU7C,KAAKC,aAAe,KAAKN,cAAcK,aAAY,EAAGE,KAAKC,EAAU,CAAA,CAAE,CAAC,CAC1E,CAGMC,gBAAgBC,EAAmBC,EAAkBC,EAAc,QAAAC,EAAA,uBACnE,KAAKC,mBAAqBJ,GAAa,KAAKK,kBAAoBJ,KAC9D,KAAKG,mBAAqBE,QAAa,KAAKD,kBAAoBC,QAClE,KAAKhB,cAAciB,KAAK,CAAA,CAAE,EAE5B,KAAKH,iBAAmBJ,EACxB,KAAKK,gBAAkBJ,GAGzB,KAAKT,UAAUe,KAAK,EAAI,EACxB,MAAMC,EACJC,EAAc,CACZ,KAAKtB,mBAAmBuB,iBACtB,CAAEV,UAAWA,EAAWC,SAAUA,CAAQ,EAC1CC,EACAlB,CAAqB,EAEvB,KAAKY,YAAY,CAClB,CAAC,EAEDe,KAAK,CAAC,CAACC,EAAUC,CAAI,IAAK,CACzB,KAAKvB,cAAciB,KAAKM,EAAKC,OAAOF,EAASG,OAAO,CAAC,EACjDH,EAASI,WACX,KAAKjB,gBAAgBC,EAAWC,EAAUW,EAASI,UAAU,EAE7D,KAAKxB,UAAUe,KAAK,EAAK,CAE7B,CAAC,EACAU,MAAM,IAAK,CACV,KAAK7B,iBAAiB8B,QAAQ,2CAA2C,EACzE,KAAK1B,UAAUe,KAAK,EAAK,CAC3B,CAAC,CACL,2CAnDWtB,GAAkBkC,EAAAC,CAAA,EAAAD,EAAAE,CAAA,EAAAF,EAanBG,CAA0B,CAAA,CAAA,wBAbzBrC,EAAkBsC,QAAlBtC,EAAkBuC,UAAAC,WAFjB,MAAM,CAAA,EAEd,IAAOxC,EAAPyC,SAAOzC,CAAkB,GAAA", "names": ["SALESPEOPLE_PAGE_SIZE", "SalespeopleService", "constructor", "salespersonService", "translateService", "partnerId$", "salespeople$$", "ReplaySubject", "loading$$", "BehaviorSubject", "loading$", "asObservable", "salespeople$", "pipe", "startWith", "loadSalespeople", "partnerId", "marketId", "cursor", "__async", "currentPartnerId", "currentMarketId", "undefined", "next", "firstValueFrom", "combineLatest", "listSalespersons", "then", "response", "curr", "concat", "results", "nextCursor", "catch", "instant", "\u0275\u0275inject", "SalespersonService", "TranslateService", "PARTNER_ID_INJECTION_TOKEN", "factory", "\u0275fac", "providedIn", "_SalespeopleService"] }