{"version":3,"file":"chunk-f258dgie.js","sources":["packages/vanilla/lib/shared/limits/src/deposit-limits.service.ts","packages/vanilla/lib/shared/limits/src/player-limits.service.ts","packages/vanilla/lib/shared/limits/src/limits.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { SharedFeaturesApiService, UserService } from '@frontend/vanilla/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nexport interface DepositLimit {\n    currentLimit?: number;\n    type: string;\n    limitSet: boolean;\n}\n\nexport interface DepositLimitsResonse {\n    limits: DepositLimit[];\n}\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class DepositLimitsService {\n    private depositLimitsEvents = new ReplaySubject<DepositLimit[]>(1);\n    private loaded: boolean = false;\n\n    get limits(): Observable<DepositLimit[]> {\n        return this.depositLimitsEvents;\n    }\n\n    constructor(\n        private apiService: SharedFeaturesApiService,\n        private user: UserService,\n    ) {}\n\n    load() {\n        if (this.user.isAuthenticated && !this.loaded) {\n            this.loaded = true;\n            this.get().subscribe((depositLimits: DepositLimitsResonse) => {\n                this.depositLimitsEvents.next(depositLimits.limits);\n            });\n        }\n    }\n\n    get(): Observable<DepositLimitsResonse> {\n        return this.apiService.get('depositlimits');\n    }\n}\n","import { Injectable } from '@angular/core';\n\nimport { SharedFeaturesApiService, UserService } from '@frontend/vanilla/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n/**\n * @stable\n */\nexport interface PlayerLimit {\n    limitType: string;\n    currentLimit: number;\n}\n\n/**\n * @stable\n */\nexport interface PlayerLimitResponse {\n    limits: PlayerLimit[];\n}\n\n/**\n * @stable\n */\n@Injectable({\n    providedIn: 'root',\n})\nexport class PlayerLimitsService {\n    private loaded: boolean;\n    private playerLimitsEvents = new BehaviorSubject<PlayerLimit[] | null>(null);\n\n    constructor(\n        private apiService: SharedFeaturesApiService,\n        private user: UserService,\n    ) {}\n\n    getLimits(): Observable<PlayerLimit[] | null> {\n        return this.playerLimitsEvents;\n    }\n\n    refresh() {\n        this.loaded = false;\n\n        if (!this.user.isAuthenticated) {\n            return;\n        }\n\n        this.load();\n    }\n\n    get(): Observable<PlayerLimitResponse> {\n        return this.apiService.get('playerlimits');\n    }\n\n    private load() {\n        if (this.user.isAuthenticated && !this.loaded) {\n            this.loaded = true;\n\n            this.get().subscribe({\n                next: (response: PlayerLimitResponse) => this.playerLimitsEvents.next(response.limits),\n                error: () => this.playerLimitsEvents.next(null),\n            });\n        }\n    }\n}\n","import { Injectable } from '@angular/core';\n\nimport { CommonMessages, IntlService, UserService } from '@frontend/vanilla/core';\nimport { firstValueFrom } from 'rxjs';\n\nimport { DepositLimit, DepositLimitsResonse, DepositLimitsService } from './deposit-limits.service';\nimport { PlayerLimit, PlayerLimitsService } from './player-limits.service';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class LimitsService {\n    constructor(\n        private depositLimitsService: DepositLimitsService,\n        private commonMessages: CommonMessages,\n        private playerLimitsService: PlayerLimitsService,\n        private userService: UserService,\n        private intlService: IntlService,\n    ) {}\n\n    async getToasterPlaceholders(): Promise<{ [key: string]: string }> {\n        const depositLimitsResponse: DepositLimitsResonse = await firstValueFrom(this.depositLimitsService.get());\n        const depositLimits = depositLimitsResponse.limits\n            .filter((limit: DepositLimit) => limit.limitSet && ['MONTHLY', 'WEEKLY', 'DAILY'].includes(limit.type))\n            .map((depositLimit) => {\n                return `${this.commonMessages[`DepositLimitType:${depositLimit.type}`]} ${this.intlService.formatCurrency(\n                    depositLimit.currentLimit || 0,\n                )}`;\n            })\n            .join(', ');\n\n        const playerLimitsResponse = await firstValueFrom(this.playerLimitsService.get());\n        const sessionLimits = playerLimitsResponse.limits\n            .filter((l: PlayerLimit) =>\n                ['LOGIN_TIME_PER_MONTH_IN_MINUTES', 'LOGIN_TIME_PER_WEEK_IN_MINUTES', 'LOGIN_TIME_PER_DAY_IN_MINUTES'].includes(l.limitType),\n            )\n            .map(\n                (sessionLimit) =>\n                    `${this.commonMessages[`PlayerLimitType:${sessionLimit.limitType}`]} ${\n                        Math.round(((sessionLimit.currentLimit || 0) / 60) * 100) / 100\n                    } ${this.commonMessages['Hours']}`,\n            )\n            .join(', ');\n\n        const creditLimit = playerLimitsResponse.limits.find((l: PlayerLimit) => l.limitType === 'AUTOPAYOUT_LIMIT_ON_WINNING');\n\n        return {\n            displayName: this.userService.displayName,\n            lastLoginTime: this.userService.lastLoginTimeFormatted || this.commonMessages['NotAvailable']!,\n            depositLimits: depositLimits || this.commonMessages['NotAvailable']!,\n            sessionLimits: sessionLimits,\n            creditLimit: creditLimit ? this.intlService.formatCurrency(creditLimit.currentLimit) : this.commonMessages['NotAvailable']!,\n        };\n    }\n}\n"],"names":["DepositLimitsService","limits","depositLimitsEvents","constructor","apiService","user","ReplaySubject","loaded","load","isAuthenticated","get","subscribe","depositLimits","next","ɵɵinject","SharedFeaturesApiService","UserService","factory","ɵfac","providedIn","_DepositLimitsService","PlayerLimitsService","playerLimitsEvents","BehaviorSubject","getLimits","refresh","response","error","_PlayerLimitsService","LimitsService","depositLimitsService","commonMessages","playerLimitsService","userService","intlService","getToasterPlaceholders","__async","firstValueFrom","filter","limit","limitSet","includes","type","map","depositLimit","formatCurrency","currentLimit","join","playerLimitsResponse","sessionLimits","l","limitType","sessionLimit","Math","round","creditLimit","find","displayName","lastLoginTime","lastLoginTimeFormatted","CommonMessages","IntlService","_LimitsService"],"mappings":"uHAkBaA,IAAAA,CAAAA,CAAAA,CAAoB,IAAA,CAA3B,IAAOA,EAAP,MAAOA,CAAoB,CAI7B,IAAIC,MAAAA,EAAM,CACN,OAAO,IAAA,CAAKC,mBAChB,CAEAC,WAAAA,CACYC,EACAC,CAAiB,CAAA,CADjB,IAAAD,CAAAA,UAAAA,CAAAA,CACA,CAAA,IAAA,CAAAC,KAAAA,CATJ,CAAA,IAAA,CAAAH,oBAAsB,IAAII,EAAAA,CAA8B,CAAC,CACzD,CAAA,IAAA,CAAAC,MAAkB,CAAA,CAAA,EASvB,CAEHC,IAAAA,EAAI,CACI,IAAKH,CAAAA,IAAAA,CAAKI,iBAAmB,CAAC,IAAA,CAAKF,SACnC,IAAKA,CAAAA,MAAAA,CAAS,CACd,CAAA,CAAA,IAAA,CAAKG,GAAG,EAAA,CAAGC,UAAWC,CAAuC,EAAA,CACzD,KAAKV,mBAAoBW,CAAAA,IAAAA,CAAKD,EAAcX,MAAM,EACtD,CAAC,CAAA,EAET,CAEAS,GAAAA,EAAG,CACC,OAAO,IAAA,CAAKN,WAAWM,GAAI,CAAA,eAAe,CAC9C,CAxBSV,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,OAAAA,IAAAA,CAAAA,EAAAA,CAAAA,EAAoBc,EAAAC,CAAAA,EAAA,CAAAD,CAAAA,EAAAA,CAAAE,CAAA,CAAA,CAAA,0BAApBhB,CAAoBiB,CAAAA,OAAAA,CAApBjB,EAAoBkB,SAAAC,CAAAA,UAAAA,CAFjB,MAAM,CAAA,CAEhB,CAAA,IAAOnB,EAAPoB,CAAOpB,CAAAA,OAAAA,CAAoB,KCQjC,IAAaqB,GAAmB,IAAA,CAA1B,IAAOA,CAAAA,CAAP,MAAOA,CAAmB,CAI5BlB,WACYC,CAAAA,CAAAA,CACAC,EAAiB,CADjB,IAAA,CAAAD,WAAAA,CACA,CAAA,IAAA,CAAAC,KAAAA,CAJJ,CAAA,IAAA,CAAAiB,mBAAqB,IAAIC,EAAAA,CAAsC,IAAI,EAKxE,CAEHC,WAAS,CACL,OAAO,IAAKF,CAAAA,kBAChB,CAEAG,OAAAA,EAAO,CACH,IAAKlB,CAAAA,MAAAA,CAAS,GAET,IAAKF,CAAAA,IAAAA,CAAKI,iBAIf,IAAKD,CAAAA,IAAAA,GACT,CAEAE,GAAG,EAAA,CACC,OAAO,IAAKN,CAAAA,UAAAA,CAAWM,IAAI,cAAc,CAC7C,CAEQF,IAAI,EAAA,CACJ,IAAKH,CAAAA,IAAAA,CAAKI,eAAmB,EAAA,CAAC,KAAKF,MACnC,GAAA,IAAA,CAAKA,OAAS,CAEd,CAAA,CAAA,IAAA,CAAKG,KAAMC,CAAAA,SAAAA,CAAU,CACjBE,IAAAA,CAAOa,CAAkC,EAAA,IAAA,CAAKJ,mBAAmBT,IAAKa,CAAAA,CAAAA,CAASzB,MAAM,CACrF0B,CAAAA,KAAAA,CAAOA,IAAM,IAAKL,CAAAA,kBAAAA,CAAmBT,IAAK,CAAA,IAAI,CACjD,CAAA,CAAA,EAET,yCApCSQ,CAAmBP,EAAAA,EAAAA,CAAAC,EAAA,CAAAD,CAAAA,EAAAA,CAAAE,CAAA,CAAA,CAAA,CAAnBK,CAAAA,CAAAA,CAAAA,UAAAA,CAAAA,GAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAmBJ,OAAnBI,CAAAA,CAAAA,CAAmBH,UAAAC,UAFhB,CAAA,MAAM,CAAA,CAEhB,CAAA,IAAOE,EAAPO,CAAOP,CAAAA,OAAAA,CAAmB,CAAA,ICfnBQ,IAAAA,CAAAA,CAAAA,CAAa,IAAA,CAApB,IAAOA,EAAP,MAAOA,CAAa,CACtB1B,WACY2B,CAAAA,CAAAA,CACAC,EACAC,CACAC,CAAAA,CAAAA,CACAC,EAAwB,CAJxB,IAAA,CAAAJ,qBAAAA,CACA,CAAA,IAAA,CAAAC,eAAAA,CACA,CAAA,IAAA,CAAAC,mBAAAA,CAAAA,CAAAA,CACA,IAAAC,CAAAA,WAAAA,CAAAA,EACA,IAAAC,CAAAA,WAAAA,CAAAA,EACT,CAEGC,sBAAAA,EAAsB,QAAAC,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAExB,IAAMxB,CAAAA,CAAAA,CAD8C,MAAMyB,EAAAA,CAAe,KAAKP,oBAAqBpB,CAAAA,GAAAA,EAAK,CAC5DT,EAAAA,MAAAA,CACvCqC,OAAQC,CAAwBA,EAAAA,CAAAA,CAAMC,QAAY,EAAA,CAAC,SAAW,CAAA,QAAA,CAAU,OAAO,CAAEC,CAAAA,QAAAA,CAASF,EAAMG,IAAI,CAAC,EACrGC,GAAKC,CAAAA,CAAAA,EACK,CAAG,EAAA,IAAA,CAAKb,cAAe,CAAA,CAAA,iBAAA,EAAoBa,EAAaF,IAAI,CAAA,CAAE,CAAC,CAAI,CAAA,EAAA,IAAA,CAAKR,YAAYW,cACvFD,CAAAA,CAAAA,CAAaE,YAAgB,EAAA,CAAC,CACjC,CAAA,CACJ,EACAC,IAAK,CAAA,IAAI,EAERC,CAAuB,CAAA,MAAMX,GAAe,IAAKL,CAAAA,mBAAAA,CAAoBtB,GAAG,EAAE,CAC1EuC,CAAAA,CAAAA,CAAgBD,EAAqB/C,MACtCqC,CAAAA,MAAAA,CAAQY,GACL,CAAC,iCAAA,CAAmC,iCAAkC,+BAA+B,CAAA,CAAET,QAASS,CAAAA,CAAAA,CAAEC,SAAS,CAAC,EAE/HR,GACIS,CAAAA,CAAAA,EACG,GAAG,IAAKrB,CAAAA,cAAAA,CAAe,mBAAmBqB,CAAaD,CAAAA,SAAS,EAAE,CAAC,CAAA,CAAA,EAC/DE,KAAKC,KAAQF,CAAAA,CAAAA,CAAAA,CAAaN,cAAgB,CAAK,EAAA,EAAA,CAAM,GAAG,CAAI,CAAA,GAChE,CAAI,CAAA,EAAA,IAAA,CAAKf,cAAe,CAAA,KAAQ,EAAE,CAEzCgB,CAAAA,IAAAA,CAAK,IAAI,CAERQ,CAAAA,CAAAA,CAAcP,EAAqB/C,MAAOuD,CAAAA,IAAAA,CAAMN,CAAmBA,EAAAA,CAAAA,CAAEC,SAAc,GAAA,6BAA6B,EAEtH,OAAO,CACHM,YAAa,IAAKxB,CAAAA,WAAAA,CAAYwB,YAC9BC,aAAe,CAAA,IAAA,CAAKzB,WAAY0B,CAAAA,sBAAAA,EAA0B,IAAK5B,CAAAA,cAAAA,CAAe,aAC9EnB,aAAeA,CAAAA,CAAAA,EAAiB,KAAKmB,cAAe,CAAA,YAAA,CACpDkB,cAAeA,CACfM,CAAAA,WAAAA,CAAaA,CAAc,CAAA,IAAA,CAAKrB,WAAYW,CAAAA,cAAAA,CAAeU,EAAYT,YAAY,CAAA,CAAI,KAAKf,cAAe,CAAA,YAAA,CAEnH,2CA1CSF,CAAaf,EAAAA,EAAAA,CAAAd,CAAA,CAAA,CAAAc,EAAA8C,CAAAA,EAAA,EAAA9C,EAAAO,CAAAA,CAAA,EAAAP,EAAAE,CAAAA,CAAA,EAAAF,EAAA+C,CAAAA,EAAA,CAAA,CAAA,CAAbhC,CAAAA,CAAAA,CAAAA,UAAAA,CAAAA,GAAAA,CAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAaZ,QAAbY,CAAaX,CAAAA,SAAAA,CAAAC,WAFV,MAAM,CAAA,EAEhB,IAAOU,CAAAA,CAAPiC,CAAOjC,CAAAA,OAAAA,CAAa,CAAA"}