{ "version": 3, "sources": ["apps/vendor-center-client/src/app/features/spend-change-requests/spend-change-has-pending.service.ts"], "sourcesContent": ["import { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { MarketplaceApp, MarketplaceAppService, VendorService } from '@galaxy/marketplace-apps/v1';\nimport { ChangeSpendRequestStatus, OrderFulfillmentService } from '@vendasta/order-fulfillment';\nimport { BehaviorSubject, Observable, Subscription, combineLatest, interval, of } from 'rxjs';\nimport { catchError, filter, map, shareReplay, startWith, switchMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { AuthService } from '../../core/auth/auth.service';\nimport { PARTNER_ID } from '../../tokens';\n\nconst VENDOR_APP_LIST_EXPIRATION = 60000; // millisecond\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SpendChangeHasPendingService implements OnDestroy {\n private readonly hasPendingChangeRequests$: Observable;\n private vendorAppListNeedsRefresh$$: BehaviorSubject = new BehaviorSubject(true);\n private subscriptions = new Subscription();\n private refresh$$: BehaviorSubject = new BehaviorSubject(true);\n\n constructor(\n @Inject(PARTNER_ID) private partnerId$: Observable,\n private router: Router,\n private auth: AuthService,\n private vendorService: VendorService,\n private orderFulfillmentService: OrderFulfillmentService,\n private marketplaceAppService: MarketplaceAppService,\n ) {\n const ticker$ = interval(VENDOR_APP_LIST_EXPIRATION);\n this.subscriptions.add(\n ticker$.subscribe(() => {\n this.vendorAppListNeedsRefresh$$.next(true);\n }),\n );\n\n const userNavigates$ = this.router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n map(() => true),\n startWith(true),\n );\n\n const vendorApps$ = combineLatest([this.partnerId$, userNavigates$]).pipe(\n withLatestFrom(this.vendorAppListNeedsRefresh$$),\n filter(([partnerIdAndUserNavigates, vendorAppListNeedsRefresh]) => {\n return partnerIdAndUserNavigates && partnerIdAndUserNavigates[0] && vendorAppListNeedsRefresh;\n }),\n switchMap(([partnerIdAndUserNavigates]) => {\n return this.vendorService.getOwnedAppIdsByPartnerId(partnerIdAndUserNavigates[0]);\n }),\n tap(() => {\n this.vendorAppListNeedsRefresh$$.next(false);\n }),\n );\n\n this.hasPendingChangeRequests$ = combineLatest([vendorApps$, userNavigates$, this.refresh$$]).pipe(\n switchMap(([appIds]) => {\n return this.marketplaceAppService.getMultiApps(appIds);\n }),\n map((apps: MarketplaceApp[] | null) => {\n return apps?.reduce((acc, app) => {\n if (app.usesCustomPricing) {\n acc = acc.concat(app.appId);\n }\n return acc;\n }, []);\n }),\n switchMap((appIds) => {\n // should return here because querying `listChangeSpendRequests` without appId filter will return any pending change requests.\n if (!appIds || !appIds.length) {\n return of(null);\n }\n\n return this.orderFulfillmentService.listChangeSpendRequests(\n 1,\n '',\n appIds,\n [],\n [ChangeSpendRequestStatus.CHANGE_SPEND_REQUEST_STATUS_CREATED],\n );\n }),\n catchError(() => {\n return of(null);\n }),\n map((resp) => {\n return !!resp?.changeSpendRequests?.length;\n }),\n shareReplay(1),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.unsubscribe();\n }\n\n public get HasPendingChangeRequests(): Observable {\n return this.hasPendingChangeRequests$;\n }\n\n public Refresh(): void {\n this.refresh$$.next(true);\n }\n}\n"], "mappings": "8UASA,IAAMA,EAA6B,IAKtBC,GAA4B,IAAA,CAAnC,IAAOA,EAAP,MAAOA,CAA4B,CAMvCC,YAC8BC,EACpBC,EACAC,EACAC,EACAC,EACAC,EAA4C,CALxB,KAAAL,WAAAA,EACpB,KAAAC,OAAAA,EACA,KAAAC,KAAAA,EACA,KAAAC,cAAAA,EACA,KAAAC,wBAAAA,EACA,KAAAC,sBAAAA,EAVF,KAAAC,4BAAwD,IAAIC,EAAyB,EAAI,EACzF,KAAAC,cAAgB,IAAIC,EACpB,KAAAC,UAAsC,IAAIH,EAAyB,EAAI,EAU7E,IAAMI,EAAUC,EAASf,CAA0B,EACnD,KAAKW,cAAcK,IACjBF,EAAQG,UAAU,IAAK,CACrB,KAAKR,4BAA4BS,KAAK,EAAI,CAC5C,CAAC,CAAC,EAGJ,IAAMC,EAAiB,KAAKf,OAAOgB,OAAOC,KACxCC,EAAQC,GAAUA,aAAiBC,CAAa,EAChDC,EAAI,IAAM,EAAI,EACdC,EAAU,EAAI,CAAC,EAGXC,EAAcC,EAAc,CAAC,KAAKzB,WAAYgB,CAAc,CAAC,EAAEE,KACnEQ,EAAe,KAAKpB,2BAA2B,EAC/Ca,EAAO,CAAC,CAACQ,EAA2BC,CAAyB,IACpDD,GAA6BA,EAA0B,CAAC,GAAKC,CACrE,EACDC,EAAU,CAAC,CAACF,CAAyB,IAC5B,KAAKxB,cAAc2B,0BAA0BH,EAA0B,CAAC,CAAC,CACjF,EACDI,EAAI,IAAK,CACP,KAAKzB,4BAA4BS,KAAK,EAAK,CAC7C,CAAC,CAAC,EAGJ,KAAKiB,0BAA4BP,EAAc,CAACD,EAAaR,EAAgB,KAAKN,SAAS,CAAC,EAAEQ,KAC5FW,EAAU,CAAC,CAACI,CAAM,IACT,KAAK5B,sBAAsB6B,aAAaD,CAAM,CACtD,EACDX,EAAKa,GACIA,GAAMC,OAAO,CAACC,EAAKC,KACpBA,EAAIC,oBACNF,EAAMA,EAAIG,OAAOF,EAAIG,KAAK,GAErBJ,GACN,CAAA,CAAE,CACN,EACDR,EAAWI,GAEL,CAACA,GAAU,CAACA,EAAOS,OACdC,EAAG,IAAI,EAGT,KAAKvC,wBAAwBwC,wBAClC,EACA,GACAX,EACA,CAAA,EACA,CAACY,EAAyBC,mCAAmC,CAAC,CAEjE,EACDC,EAAW,IACFJ,EAAG,IAAI,CACf,EACDrB,EAAK0B,GACI,CAAC,CAACA,GAAMC,qBAAqBP,MACrC,EACDQ,EAAY,CAAC,CAAC,CAElB,CAEAC,aAAW,CACT,KAAK3C,cAAc4C,YAAW,CAChC,CAEA,IAAWC,0BAAwB,CACjC,OAAO,KAAKrB,yBACd,CAEOsB,SAAO,CACZ,KAAK5C,UAAUK,KAAK,EAAI,CAC1B,yCAtFWjB,GAA4ByD,EAO7BC,CAAU,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,CAAA,EAAAH,EAAAI,CAAA,EAAAJ,EAAAK,CAAA,EAAAL,EAAAM,CAAA,CAAA,CAAA,wBAPT/D,EAA4BgE,QAA5BhE,EAA4BiE,UAAAC,WAF3B,MAAM,CAAA,EAEd,IAAOlE,EAAPmE,SAAOnE,CAA4B,GAAA", "names": ["VENDOR_APP_LIST_EXPIRATION", "SpendChangeHasPendingService", "constructor", "partnerId$", "router", "auth", "vendorService", "orderFulfillmentService", "marketplaceAppService", "vendorAppListNeedsRefresh$$", "BehaviorSubject", "subscriptions", "Subscription", "refresh$$", "ticker$", "interval", "add", "subscribe", "next", "userNavigates$", "events", "pipe", "filter", "event", "NavigationEnd", "map", "startWith", "vendorApps$", "combineLatest", "withLatestFrom", "partnerIdAndUserNavigates", "vendorAppListNeedsRefresh", "switchMap", "getOwnedAppIdsByPartnerId", "tap", "hasPendingChangeRequests$", "appIds", "getMultiApps", "apps", "reduce", "acc", "app", "usesCustomPricing", "concat", "appId", "length", "of", "listChangeSpendRequests", "ChangeSpendRequestStatus", "CHANGE_SPEND_REQUEST_STATUS_CREATED", "catchError", "resp", "changeSpendRequests", "shareReplay", "ngOnDestroy", "unsubscribe", "HasPendingChangeRequests", "Refresh", "\u0275\u0275inject", "PARTNER_ID", "Router", "AuthService", "VendorService", "OrderFulfillmentService", "MarketplaceAppService", "factory", "\u0275fac", "providedIn", "_SpendChangeHasPendingService"] }