{"version":3,"file":"chunk-n408xv87.js","sources":["packages/vanilla/lib/shared/offers/src/offers-resource.service.ts","packages/vanilla/lib/shared/offers/src/offers.service.ts","packages/vanilla/lib/shared/offers/src/offers.models.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SharedFeaturesApiService } from '@frontend/vanilla/core';\nimport { Observable } from 'rxjs';\n\nimport { KeyValue, OfferResponse } from './offers.models';\n\n/**\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class OffersResourceService {\n constructor(private api: SharedFeaturesApiService) {}\n\n getCount(): Observable {\n return this.api.get('offers/count');\n }\n\n getStatus(offerType: string, offerId: string): Observable {\n return this.api.get(`offers/${offerType}/${offerId}`);\n }\n\n updateStatus(offerType: string, offerId: string, optIn = true): Observable {\n return this.api.post(`offers/${offerType}/${offerId}/${optIn}`);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {\n MenuCountersService,\n UserEvent,\n UserLogoutEvent,\n UserService,\n UserSessionExpiredEvent,\n WebWorkerService,\n WorkerType,\n} from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { OffersResourceService } from './offers-resource.service';\nimport { KeyValue } from './offers.models';\n\n/**\n * @whatItDoes Provides info about user's offers.\n *\n * @howToUse\n *\n * ```this.offersService.offersCount.subscribe(...);```\n *\n * @description\n *\n * Provides info about user's offers.\n *\n * @stable\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class OffersService {\n private countEvents = new BehaviorSubject([]);\n\n constructor(\n private offersResourceService: OffersResourceService,\n private menuCountersService: MenuCountersService,\n private user: UserService,\n private webWorkerService: WebWorkerService,\n ) {}\n\n get counts(): Observable {\n return this.countEvents;\n }\n\n getCount(key: string): number {\n const newOffers = Array.isArray(this.countEvents.value) ? this.countEvents.value.find((o: KeyValue) => o.key === key) : null;\n\n return newOffers?.value || 0;\n }\n\n initPolling(interval: number) {\n this.user.events\n .pipe(filter((e: UserEvent) => e instanceof UserSessionExpiredEvent || e instanceof UserLogoutEvent))\n .subscribe(() => this.stopPolling());\n\n this.refresh();\n this.stopPolling();\n\n this.webWorkerService.createWorker(WorkerType.OffersTimeout, { timeout: 15000 }, () => {\n this.webWorkerService.createWorker(WorkerType.OffersInterval, { interval }, () => {\n this.refresh();\n });\n });\n }\n\n stopPolling() {\n this.webWorkerService.removeWorker(WorkerType.OffersTimeout);\n this.webWorkerService.removeWorker(WorkerType.OffersInterval);\n }\n\n private refresh() {\n this.offersResourceService.getCount().subscribe((data: any) => {\n this.countEvents.next(data.offers);\n this.menuCountersService.update();\n });\n }\n}\n","/**\n * @stable\n */\nexport interface OfferResponse {\n status: OfferStatus;\n}\n\n/**\n * @stable\n */\nexport enum OfferStatus {\n OFFER_NEW = 'OFFER_NEW',\n OFFER_TNC_ACCEPTED = 'OFFER_TNC_ACCEPTED',\n OFFER_CLAIMED = 'OFFER_CLAIMED',\n OFFER_DROPPED = 'OFFER_DROPPED',\n OFFER_EXPIRED = 'OFFER_EXPIRED',\n OFFERED = 'OFFERED',\n NOTOFFERED = 'NOTOFFERED',\n NOT_OFFERED = 'NOT_OFFERED',\n EXPIRED = 'EXPIRED',\n OPTEDIN = 'OPTEDIN',\n OPTED_IN = 'OPTED_IN',\n OPTEDOUT = 'OPTEDOUT',\n OPTED_OUT = 'OPTED_OUT',\n INVALID = 'INVALID',\n NO_OFFER = 'NO_OFFER',\n}\n\n/**\n * @stable\n */\nexport interface KeyValue {\n key: string;\n value: number;\n}\n\n/**\n * @stable\n */\nexport enum OfferType {\n EDS = 'eds',\n BONUSES = 'bonuses',\n PROMOS = 'promos',\n EDS_GROUP = 'edsgroup',\n}\n"],"names":["OffersResourceService","constructor","api","getCount","get","getStatus","offerType","offerId","updateStatus","optIn","post","ɵɵinject","SharedFeaturesApiService","factory","ɵfac","providedIn","_OffersResourceService","OffersService","offersResourceService","menuCountersService","user","webWorkerService","countEvents","BehaviorSubject","counts","key","Array","isArray","value","find","o","initPolling","interval","events","pipe","filter","e","UserSessionExpiredEvent","UserLogoutEvent","subscribe","stopPolling","refresh","createWorker","WorkerType","OffersTimeout","timeout","OffersInterval","removeWorker","data","next","offers","update","MenuCountersService","UserService","WebWorkerService","_OffersService","OfferStatus","OfferType"],"mappings":"sHAaA,IAAaA,GAAqB,IAAA,CAA5B,IAAOA,CAAAA,CAAP,MAAOA,CAAqB,CAC9BC,WAAoBC,CAAAA,CAAAA,CAA6B,CAA7B,IAAAA,CAAAA,GAAAA,CAAAA,EAAgC,CAEpDC,QAAAA,EAAQ,CACJ,OAAO,IAAA,CAAKD,GAAIE,CAAAA,GAAAA,CAAI,cAAc,CACtC,CAEAC,UAAUC,CAAmBC,CAAAA,CAAAA,CAAe,CACxC,OAAO,IAAA,CAAKL,GAAIE,CAAAA,GAAAA,CAAI,UAAUE,CAAS,CAAA,CAAA,EAAIC,CAAO,CAAE,CAAA,CACxD,CAEAC,YAAaF,CAAAA,CAAAA,CAAmBC,CAAiBE,CAAAA,CAAAA,CAAQ,GAAI,CACzD,OAAO,KAAKP,GAAIQ,CAAAA,IAAAA,CAAK,UAAUJ,CAAS,CAAA,CAAA,EAAIC,CAAO,CAAA,CAAA,EAAIE,CAAK,CAAE,CAAA,CAClE,yCAbST,CAAqBW,EAAAA,CAAAA,CAAAC,EAAA,CAAA,CAAA,CAArBZ,CAAAA,CAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAqBa,QAArBb,CAAqBc,CAAAA,SAAAA,CAAAC,WAFlB,MAAM,CAAA,EAEhB,IAAOf,CAAAA,CAAPgB,CAAOhB,CAAAA,OAAAA,CAAqB,KCoBlC,IAAaiB,GAAa,IAAA,CAApB,IAAOA,CAAP,CAAA,MAAOA,CAAa,CAGtBhB,YACYiB,CACAC,CAAAA,CAAAA,CACAC,CACAC,CAAAA,CAAAA,CAAkC,CAHlC,IAAAH,CAAAA,qBAAAA,CAAAA,CACA,CAAA,IAAA,CAAAC,oBAAAA,CACA,CAAA,IAAA,CAAAC,KAAAA,CACA,CAAA,IAAA,CAAAC,iBAAAA,CANJ,CAAA,IAAA,CAAAC,WAAc,CAAA,IAAIC,GAA4B,EAAE,EAOrD,CAEH,IAAIC,QAAM,CACN,OAAO,IAAKF,CAAAA,WAChB,CAEAnB,QAASsB,CAAAA,CAAAA,CAAW,CAGhB,OAFkBC,CAAAA,KAAAA,CAAMC,QAAQ,IAAKL,CAAAA,WAAAA,CAAYM,KAAK,CAAA,CAAI,KAAKN,WAAYM,CAAAA,KAAAA,CAAMC,KAAMC,CAAgBA,EAAAA,CAAAA,CAAEL,MAAQA,CAAG,CAAA,CAAI,IAEtGG,GAAAA,KAAAA,EAAS,CAC/B,CAEAG,WAAAA,CAAYC,EAAgB,CACxB,IAAA,CAAKZ,KAAKa,MACLC,CAAAA,IAAAA,CAAKC,CAAQC,CAAAA,CAAAA,EAAiBA,aAAaC,EAA2BD,EAAAA,CAAAA,YAAaE,EAAe,CAAC,CAAA,CACnGC,UAAU,IAAM,IAAA,CAAKC,WAAW,EAAE,EAEvC,IAAKC,CAAAA,OAAAA,GACL,IAAKD,CAAAA,WAAAA,GAEL,IAAKnB,CAAAA,gBAAAA,CAAiBqB,YAAaC,CAAAA,EAAAA,CAAWC,cAAe,CAAEC,OAAAA,CAAS,IAAK,CAAA,CAAI,IAAK,CAClF,IAAA,CAAKxB,gBAAiBqB,CAAAA,YAAAA,CAAaC,GAAWG,cAAgB,CAAA,CAAEd,SAAAA,CAAQ,CAAA,CAAI,IAAK,CAC7E,IAAA,CAAKS,OAAO,GAChB,CAAC,EACL,CAAC,EACL,CAEAD,WAAAA,EAAW,CACP,IAAKnB,CAAAA,gBAAAA,CAAiB0B,YAAaJ,CAAAA,EAAAA,CAAWC,aAAa,CAC3D,CAAA,IAAA,CAAKvB,iBAAiB0B,YAAaJ,CAAAA,EAAAA,CAAWG,cAAc,EAChE,CAEQL,OAAO,EAAA,CACX,KAAKvB,qBAAsBf,CAAAA,QAAAA,GAAWoC,SAAWS,CAAAA,CAAAA,EAAa,CAC1D,IAAK1B,CAAAA,WAAAA,CAAY2B,IAAKD,CAAAA,CAAAA,CAAKE,MAAM,CACjC,CAAA,IAAA,CAAK/B,oBAAoBgC,MAAM,GACnC,CAAC,EACL,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,SAAA,CAAA,CAAA,CAAA,OAAA,IAAA,CAAA,EA7CSlC,CAAaN,EAAAA,CAAAA,CAAAX,CAAA,CAAAW,CAAAA,CAAAA,CAAAyC,GAAA,CAAAzC,CAAAA,CAAAA,CAAA0C,EAAA,CAAA1C,CAAAA,CAAAA,CAAA2C,EAAA,CAAA,CAAA,CAAbrC,CAAAA,CAAAA,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAaJ,QAAbI,CAAaH,CAAAA,SAAAA,CAAAC,WAFV,MAAM,CAAA,CAEhB,CAAA,IAAOE,EAAPsC,CAAOtC,CAAAA,OAAAA,CAAa,CAAA,QCvBduC,CAAZ,CAAA,SAAYA,CAAW,CAAA,CACnBA,OAAAA,CAAA,CAAA,SAAA,CAAA,YACAA,CAAA,CAAA,kBAAA,CAAA,qBACAA,CAAA,CAAA,aAAA,CAAA,eACAA,CAAAA,CAAAA,CAAA,cAAA,eACAA,CAAAA,CAAAA,CAAA,cAAA,eACAA,CAAAA,CAAAA,CAAA,QAAA,SACAA,CAAAA,CAAAA,CAAA,UAAA,CAAA,YAAA,CACAA,EAAA,WAAA,CAAA,aAAA,CACAA,EAAA,OAAA,CAAA,SAAA,CACAA,EAAA,OAAA,CAAA,SAAA,CACAA,CAAA,CAAA,QAAA,CAAA,WACAA,CAAA,CAAA,QAAA,CAAA,WACAA,CAAA,CAAA,SAAA,CAAA,YACAA,CAAA,CAAA,OAAA,CAAA,SACAA,CAAAA,CAAAA,CAAA,SAAA,UAfQA,CAAAA,CAgBZ,EAhBYA,CAAW,EAAA,EAAA,CA6BXC,CAAAA,CAAAA,CAAZ,SAAYA,CAAAA,CAAS,CACjBA,OAAAA,CAAAA,CAAA,IAAA,KACAA,CAAAA,CAAAA,CAAA,QAAA,SACAA,CAAAA,CAAAA,CAAA,MAAA,CAAA,QAAA,CACAA,EAAA,SAAA,CAAA,UAAA,CAJQA,CAKZ,CALYA,CAAAA,CAAAA,EAAS,EAAA"}