{"version":3,"file":"chunk-cflrjfm1.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: boolean = 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","c","factory","ɵfac","providedIn","_OffersResourceService","OffersService","offersResourceService","menuCountersService","user","webWorkerService","countEvents","BehaviorSubject","counts","key","newOffers","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":"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"}