{"version":3,"file":"static/js/services-group2.0dab6ec5.chunk.js","mappings":"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","sources":["app-react/services/login-popup/login-popup.service.ts","app-react/services/exit-popup/exit-popup-consts.ts","app-react/services/exit-popup/exit-popup.service.tsx"],"sourcesContent":["import {ServiceBase} from \"../ServiceBase\";\nimport {ILoginPopupData, ILoginPopupService} from \"./login-popup.service.interface\";\nimport {IServiceFactoryExtended} from \"../service-factory-extended.interface\";\nimport {OnOauthStateChangedParams} from \"../sdk/sdk-events\";\n\nconst loginPopupAcknowledgeStorageKey = 'orbit_login_popup_acknowledge';\n\nexport class LoginPopupService extends ServiceBase implements ILoginPopupService{\n private _loginPopupShown = false;\n private _loginPopupPreviousCallPromise = null;\n\n constructor(services: IServiceFactoryExtended) {\n super(services);\n\n if(this.services.regulation.isLoginPopupEnabled()) {\n // We need this for users that refresh the page while not approve yet the login popup.mo\n this.showLoginGamePopup();\n }\n }\n\n public showLoginGamePopupOnAuthStateChange(params: OnOauthStateChangedParams) {\n this._loginPopupShown = false;\n this.services.localStorage.setItem(loginPopupAcknowledgeStorageKey, false);\n\n if(this.services.user.isAuthorized) {\n this.showLoginGamePopup(params?.fromRegistration);\n }\n }\n\n private _onAcknowledge(resolve) {\n this.services.localStorage.setItem(loginPopupAcknowledgeStorageKey, true);\n this._loginPopupPreviousCallPromise = null;\n this._loginPopupShown = false;\n resolve();\n }\n\n public showLoginGamePopup(fromRegistration?: boolean): Promise {\n let currentPromise = new Promise((resolve)=> {\n // Not show login popup if already shown - for example open game and login show it and then login popup game step try to show it\n if(this._loginPopupShown) {\n return this._loginPopupPreviousCallPromise.then(() => resolve());\n }\n\n if(this._skipPopupConditions(fromRegistration)) {\n resolve();\n return;\n }\n\n this._loginPopupShown = true;\n return this.services.specificDialogs.showLoginPopup(()=> this._onAcknowledge(resolve));\n });\n\n this._loginPopupPreviousCallPromise = currentPromise;\n return this._loginPopupPreviousCallPromise;\n }\n\n public getLoginPopupData(): ILoginPopupData {\n try {\n return JSON.parse(this.services.sdk.extractTokenProperty('regulationMessages'));\n } catch(err) {\n return null;\n }\n }\n\n private _skipPopupConditions(fromRegistration: boolean) {\n return fromRegistration ||\n this.services.sdk.isLoginFromRegistration ||\n this.services.user.isDocUploadRequired() ||\n !this.services.regulation.isLoginPopupEnabled() ||\n !this.services.user.isAuthorized ||\n this.services.localStorage.getItem(loginPopupAcknowledgeStorageKey) === \"true\";\n }\n\n}","export const EXIT_POPUP_DEFAULT_CONFIG = {\n INITIAL_CHANCE: 20,\n PLAY_INCREASE_CHANCE: 5,\n CANCEL_DECREASE_CHANCE: 5,\n MAX_CHANCE: 50,\n MAX_APPEARANCES_PER_SESSION: 3,\n};\n\nexport const EXIT_POPUP_LOCAL_STORAGE_KEY = 'orbitExitPopupData';\n\nexport const numberOfCorrelatedGames = 6;\n\n","import {ServiceBase} from \"../ServiceBase\";\nimport {IExitPopupService} from \"./exit-popup.service.interface\";\nimport {IServiceFactoryExtended} from \"../service-factory-extended.interface\";\nimport {EXIT_POPUP_DEFAULT_CONFIG, EXIT_POPUP_LOCAL_STORAGE_KEY, numberOfCorrelatedGames} from \"./exit-popup-consts\";\nimport {Check} from \"@sparkware/app-utils\";\nimport { action, observable, makeObservable } from \"mobx\";\nimport {GameInfo} from \"../games/game-info\";\nimport {OnGameCloseParams} from \"../sdk/sdk-events\";\nimport {ISendElasticEventOptions} from \"../analytics/analytics.service.interface\";\n\n\nexport interface IExitPopupLocalStorage {\n sessionChance: number;\n dontShowPopupAgain: boolean;\n numberOfAppearancesInSession: number;\n}\n\n\nexport class ExitPopupService extends ServiceBase implements IExitPopupService {\n private _numberOfAppearancesInSession: number = 0;\n private _sessionChance: number = 0;\n @observable.ref\n public dontShowPopupAgain: boolean;\n\n\n constructor(services: IServiceFactoryExtended) {\n super(services);\n\n makeObservable(this);\n\n this._initDataFromLocalStorage();\n this._subscribe();\n }\n\n _subscribe() {\n this.services.sdk.events.onOAuthStateChanged(()=> {\n this._numberOfAppearancesInSession = 0;\n this._setExitPopupDataInLocalStorage();\n });\n\n this.services.sdk.events.onGameClose((properties: OnGameCloseParams)=> {\n if( this.services.configuration.servicesConfigs.ExitGamePopup.isFeatureOn\n && this.services.regulation.current.shouldShowExitGamePopup\n && properties.showNextGameSuggestion\n && properties.isGamePlayed) {\n return this._showExitPopup(properties.gameType, properties.isReal);\n }\n\n return Promise.resolve();\n });\n }\n\n _onOpenRealGame(gameInfo: GameInfo, closedGameType: number) {\n this._updateMessageChance(EXIT_POPUP_DEFAULT_CONFIG.PLAY_INCREASE_CHANCE);\n this._sendAnalytics(\n 'click_play',\n `${this._sessionChance}_${closedGameType}_${gameInfo.gameType}_${EXIT_POPUP_DEFAULT_CONFIG.PLAY_INCREASE_CHANCE}`,\n this._numberOfAppearancesInSession\n );\n this._setExitPopupDataInLocalStorage();\n }\n\n _onCancel(recommendedGame: GameInfo, closedGameType: number): void {\n this._updateMessageChance(EXIT_POPUP_DEFAULT_CONFIG.CANCEL_DECREASE_CHANCE * -1);\n this._sendAnalytics(\n 'click_not_now',\n `${this._sessionChance}_${closedGameType}_${recommendedGame.gameType}_${EXIT_POPUP_DEFAULT_CONFIG.CANCEL_DECREASE_CHANCE}`,\n this._numberOfAppearancesInSession\n );\n this._dontShowAgainGAEvent();\n this._setExitPopupDataInLocalStorage();\n }\n\n _dontShowAgainGAEvent() {\n if (!this.dontShowPopupAgain) {\n return;\n }\n\n this._sendAnalytics(\n 'dont_show_again',\n `${this.dontShowPopupAgain}`,\n this._numberOfAppearancesInSession\n );\n }\n\n _sendAnalytics(action = '', label = '', value = 0): void {\n let data:ISendElasticEventOptions={\n eventType:\"Orbit_AI_Feature\",\n category:'exitPopUpRecommendation',\n action:action,\n label:label,\n value:value.toString()\n }\n\n this.services.analytics.sendElasticInfoEvent(data,true);\n }\n\n /**\n * @description Hold the logic if to show or not to show the exit popup\n * @return {boolean}\n * @private\n */\n _isMessageCanBeShown(isReal: boolean): boolean {\n //If it is can be shown during session (will be false if the user clicked don't show again or _numberOfAppearancesInSession if larger then define)\n if (this.dontShowPopupAgain) {\n this.services.logger.info(`Exit game didn't show because dontShowPopupAgain is ${this.dontShowPopupAgain}`);\n return false;\n }\n\n //Don't show the pop up again if we show the popup more then the max appearance per session\n if (this._numberOfAppearancesInSession >= EXIT_POPUP_DEFAULT_CONFIG.MAX_APPEARANCES_PER_SESSION) {\n this.services.logger.info(`Exit game didn't show because _numberOfAppearancesInSession is ${this._numberOfAppearancesInSession}`);\n return false;\n }\n\n //Don't show the pop If that game wasn't played (the balance didn't change) unless we support also demo mode and then it will always pass\n if (!isReal) {\n this.services.logger.info(`Exit game will not show because support only real mode`);\n return false;\n }\n\n return this._calcRandomChance();\n }\n\n /**\n * @description Calculate random chance if to show or not to show\n * @private\n */\n _calcRandomChance() {\n const randomChance = Math.ceil(Math.random() * 100);\n this.services.logger.info('Random chance = ' + randomChance + ' Session Chance = ' + this._sessionChance);\n\n return randomChance <= this._sessionChance;\n }\n\n async _showExitPopup(gameType: number, isReal: boolean): Promise {\n if (!this._isMessageCanBeShown(isReal)) {\n return Promise.resolve(false);\n }\n\n this._openExitPopupMessage(gameType);\n return Promise.resolve(true);\n }\n\n @action.bound\n _clickDontShowPopupAgain() {\n this.dontShowPopupAgain = !this.dontShowPopupAgain;\n }\n\n async _openExitPopupMessage(playedGameType: number): Promise {\n const correlatedGame = await this._getCorrelatedGame(playedGameType);\n const gameInfo: GameInfo = await this.services.games.getGameInfo(correlatedGame);\n\n if(!gameInfo) {\n this.services.logger.error('There is no game info, exit popup game message can not be displayed! gameType: ' + correlatedGame);\n return Promise.resolve()\n }\n\n const gamePopup = await this.services.gamePopup;\n\n await gamePopup.showSuggestedGame(\n correlatedGame,\n this.services.translation.translate(\"EXIT_POPUP_TITLE\"),\n \"\",\n ()=> {this._onPopupClosed()},\n ()=> {this._onCloseButtonClicked(gameInfo, playedGameType)},\n ()=> {this._onCancel(gameInfo, playedGameType)},\n ()=> {this._onOpenRealGame(gameInfo, playedGameType)},\n {display: true, text: this.services.translation.translate('DONT_SHOW_AGAIN_TEXT'), onClickHandler: ()=> {this._clickDontShowPopupAgain()}},\n true);\n\n this._numberOfAppearancesInSession++;\n this._sendAnalytics(\n 'view',\n `${this._sessionChance}_${playedGameType}_${gameInfo.gameType}`,\n this._numberOfAppearancesInSession\n );\n }\n\n /**\n * @description Get the correlated games\n * @Note - We will got the top 6 games for this game and randomly chose one of them\n * @param gameType of the game that was just played\n * @return Correlated gameType\n * @private\n */\n _getCorrelatedGame(gameType: number): Promise{\n return this.services.games.getCorrelatedGames(gameType, numberOfCorrelatedGames).then((correlatedGames: number[])=>{\n if (correlatedGames.length > 0) {\n const index = Math.floor(Math.random() * (correlatedGames.length));\n //Return randomly one of the 6 related games\n return correlatedGames[index];\n } else {\n this.services.logger.info(`Exit pop was not show because we didnt got correlated games for game type ${gameType}`)\n return Promise.reject(false);\n }\n });\n }\n\n @action.bound\n _initDataFromLocalStorage(): void {\n const exitPopUpData: IExitPopupLocalStorage = this._getExitPopupDataInLocalStorage();\n\n this.dontShowPopupAgain = (exitPopUpData && exitPopUpData.dontShowPopupAgain) || false;\n this._numberOfAppearancesInSession = (exitPopUpData && exitPopUpData.numberOfAppearancesInSession) || 0;\n\n //Init the session with default chance or previews chance\n const chance = Check.isNullOrUndefined(exitPopUpData &&exitPopUpData.sessionChance) ? EXIT_POPUP_DEFAULT_CONFIG.INITIAL_CHANCE : exitPopUpData.sessionChance;\n\n\n this._updateMessageChance(chance);\n }\n\n _updateMessageChance(chance): void {\n const newChance = this._sessionChance + chance;\n this._sessionChance = newChance > EXIT_POPUP_DEFAULT_CONFIG.MAX_CHANCE ? EXIT_POPUP_DEFAULT_CONFIG.MAX_CHANCE : newChance;\n this.services.logger.info('_updateMessageChance, New chance = ' + this._sessionChance);\n //Update the chance in the LocalStorage\n this._setExitPopupDataInLocalStorage();\n }\n\n _setExitPopupDataInLocalStorage() {\n const exitPopupData: IExitPopupLocalStorage = {\n sessionChance: this._sessionChance || 0,\n dontShowPopupAgain: this.dontShowPopupAgain || false,\n numberOfAppearancesInSession: this._numberOfAppearancesInSession || 0\n };\n\n this.services.localStorage.setItem(EXIT_POPUP_LOCAL_STORAGE_KEY, JSON.stringify(exitPopupData));\n }\n\n\n _onPopupClosed(): void {\n this._setExitPopupDataInLocalStorage();\n this._dontShowAgainGAEvent();\n }\n\n _onCloseButtonClicked(recommendedGame: GameInfo, closedGameType: number): void {\n this._sendAnalytics(\n 'click_close_button',\n `${this._sessionChance}_${closedGameType}_${recommendedGame.gameType}`,\n this._numberOfAppearancesInSession\n );\n }\n\n _getExitPopupDataInLocalStorage() {\n return JSON.parse(this.services.localStorage.getItem(EXIT_POPUP_LOCAL_STORAGE_KEY));\n }\n}"],"names":["loginPopupAcknowledgeStorageKey","LoginPopupService","services","_loginPopupShown","_loginPopupPreviousCallPromise","regulation","isLoginPopupEnabled","showLoginGamePopup","params","this","localStorage","setItem","user","isAuthorized","fromRegistration","resolve","currentPromise","Promise","then","_skipPopupConditions","specificDialogs","showLoginPopup","_onAcknowledge","JSON","parse","sdk","extractTokenProperty","err","isLoginFromRegistration","isDocUploadRequired","getItem","ServiceBase","EXIT_POPUP_DEFAULT_CONFIG","EXIT_POPUP_LOCAL_STORAGE_KEY","ExitPopupService","observable","action","_numberOfAppearancesInSession","_sessionChance","makeObservable","_initDataFromLocalStorage","_subscribe","events","onOAuthStateChanged","_setExitPopupDataInLocalStorage","onGameClose","properties","configuration","servicesConfigs","ExitGamePopup","isFeatureOn","current","shouldShowExitGamePopup","showNextGameSuggestion","isGamePlayed","_showExitPopup","gameType","isReal","gameInfo","closedGameType","_updateMessageChance","_sendAnalytics","recommendedGame","_dontShowAgainGAEvent","dontShowPopupAgain","data","eventType","category","label","value","toString","analytics","sendElasticInfoEvent","logger","info","_calcRandomChance","randomChance","Math","ceil","random","_isMessageCanBeShown","_openExitPopupMessage","playedGameType","_getCorrelatedGame","correlatedGame","games","getGameInfo","error","gamePopup","showSuggestedGame","translation","translate","_onPopupClosed","_onCloseButtonClicked","_onCancel","_onOpenRealGame","display","text","onClickHandler","_clickDontShowPopupAgain","getCorrelatedGames","correlatedGames","length","floor","reject","exitPopUpData","_getExitPopupDataInLocalStorage","numberOfAppearancesInSession","chance","Check","sessionChance","newChance","exitPopupData","stringify"],"sourceRoot":""}