{"version":3,"file":"static/js/services-group3.c799ba02.chunk.js","mappings":"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","sources":["app-react/services/deep-link/deeplink-consts.ts","app-react/services/deep-link/deep-link.service.ts","app-react/services/deep-link/legacy/deep-link-builders/deeplink-json-object-builder/deeplink-json-object-builder.ts","app-react/services/deep-link/legacy/deep-link-parsers/parsers/deep-link-json-object-parser/deep-link-json-object-parser.ts","app-react/services/deep-link/legacy/deep-link-parsers/deep-link-parser.service.ts","app-react/services/deep-link/unified/deep-link-action-factory/unified-deep-link-action.ts","app-react/services/deep-link/unified/deep-link-action-factory/deep-link-actions-factory-unified.strategy.ts","app-react/services/deep-link/legacy/deep-link-actions/casino-legacy-deep-link-action-base.ts","app-react/services/deep-link/legacy/deep-link-actions/cashier/cashier-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/register/register-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/login/login-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/my-account/my-account-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/play-game/play-game-deep-link-action-base.ts","app-react/services/deep-link/legacy/deep-link-actions/play-game/play-game-real/play-game-real-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/play-game/play-game-demo/play-game-demo-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/redirect/redirect-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/terminate/terminate-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/upload-document/my-account-upload-document-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/free-to-play/free-to-play-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/open-list/open-list-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/freeplay/freeplay-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/control-center/control-center-deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/forgot-password/forgot-password.deeplink-action.ts","app-react/services/deep-link/legacy/deep-link-actions/cross/cross-deep-link-action.ts","app-react/services/deep-link/legacy/deep-link-action-factory/deep-link-actions-factory-legacy.strategy.ts","app-react/services/deep-link/deep-link-action-factory/deep-link-actions-factory.service.ts"],"sourcesContent":["export const DEEP_LINK_HASH_PARAM = 'deeplink=';\r\nexport const DEEP_LINK_QUERY_PARAM = 'deeplink';","import {ServiceBase} from '../ServiceBase';\r\nimport {IDeepLinkService} from './deep-link.service.interface';\r\nimport {IServiceFactoryExtended} from '../service-factory-extended.interface';\r\nimport {Check} from '@sparkware/app-utils';\r\nimport { observable, reaction, runInAction, makeObservable } from 'mobx';\r\nimport {IReactionPublic} from 'mobx';\r\nimport {ICasinoDeepLinkAction} from \"./casino-deep-link-action.interface\";\r\nimport { DEEP_LINK_QUERY_PARAM } from './deeplink-consts';\r\n\r\n\r\n\r\n/**\r\n Deep link can come from\r\n 1. route\r\n 2. SDK event\r\n 3. direct call window.orbit.deepLink\r\n 4. post message\r\n */\r\n\r\nexport class DeepLinkService extends ServiceBase implements IDeepLinkService {\r\n\r\n constructor(services: IServiceFactoryExtended) {\r\n super(services);\r\n\r\n makeObservable(this);\r\n\r\n this._subscribeToCurrentUriReaction(true);\r\n\r\n this.services.sdk.events.onDeepLinkReceived(this._executeDeepLinkFromSdkEvent);\r\n this.services.window.subscribeTo.postMessage(this._executeDeepLinkFromPostMessage);\r\n }\r\n\r\n\r\n private _subscribeToCurrentUriReaction(fireImmediately: boolean): void{\r\n reaction(() => this.services.location.currentUri,\r\n (arg, prev, reaction) => this._executeDeepLinkFromCurrentRoute(reaction),\r\n {\r\n fireImmediately: fireImmediately\r\n });\r\n }\r\n\r\n @observable.ref\r\n lastTimeDeepLinkWasExecuted: number;\r\n\r\n private _isExecuting: boolean = false;\r\n get isExecuting(): boolean {\r\n return this._isExecuting;\r\n }\r\n\r\n\r\n private async _waitForAutologin(): Promise {\r\n try {\r\n await this.services.user.waitForAutoLogin();\r\n } catch (err) {\r\n // we will continue the deep link flow if waiting for auto login to complete fails.\r\n // if there are any issues with the auto login probably the login screen will pop up\r\n // depending on the deep link action\r\n this.services.logger.error('Waiting for auto login to complete failed', err);\r\n }\r\n }\r\n\r\n private async _executeAction(action: ICasinoDeepLinkAction): Promise {\r\n if(this._isExecuting) {\r\n this.services.logger.error(`You tried to execute a deep link while another one is in progress. The following deep link will be ignored: ${JSON.stringify(action)}`);\r\n return;\r\n }\r\n this._isExecuting = true;\r\n\r\n try {\r\n await action.execute();\r\n } finally {\r\n this._isExecuting = false;\r\n runInAction(() => this.lastTimeDeepLinkWasExecuted = Date.now())\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n private async _executeDeepLinkFromCurrentRoute(reactionDisposer: IReactionPublic): Promise {\r\n\r\n\r\n try {\r\n reactionDisposer.dispose(); // we unsubscribe from this.services.location.currentUri reaction so if the currentUri changes inside the waitForAutoLogin or for any other reasons it will not trigger another deep link execution\r\n\r\n await this._waitForAutologin();\r\n\r\n // In case there is an auto login we want to create the deep link action after the auto login finishes\r\n // so any code that looks for isAuthorized during the action creation to find it on true\r\n let action = await (await this.services.deepLinkActionsFactory).createActionFromCurrentRoute();\r\n if(!action) {\r\n return;\r\n }\r\n\r\n this.services.logger.debug('Execute deep link from current route: ' + this.services.location.currentUri.toString());\r\n\r\n const urlWithoutHash = this.services.location.currentUri.removeSearchParam(DEEP_LINK_QUERY_PARAM).getUrlWithoutHash();\r\n await this.services.location.replace(urlWithoutHash);\r\n\r\n await this._executeAction(action);\r\n\r\n } finally {\r\n this._subscribeToCurrentUriReaction(false);\r\n }\r\n\r\n\r\n }\r\n\r\n private _executeDeepLinkFromSdkEvent = async (deepLinkObject: any): Promise => {\r\n\r\n await this._waitForAutologin();\r\n\r\n let action = await (await this.services.deepLinkActionsFactory).createActionFromDeepLinkObject(deepLinkObject);\r\n if(action) {\r\n this.services.logger.debug('Execute deep link object in _executeDeepLinkFromSdkEvent: ' + JSON.stringify(deepLinkObject));\r\n return this._executeAction(action);\r\n } else if (Check.isNullOrUndefined(deepLinkObject)){\r\n this.services.logger.warning(`${deepLinkObject} deep link object received from SDK DEEPLINK_RECEIVED event`);\r\n } else {\r\n this.services.logger.error(`Received deep link object from the SDK DEEPLINK_RECEIVED is not a valid deep link object. Received data: ${JSON.stringify(deepLinkObject)}`);\r\n }\r\n };\r\n\r\n async executeDeepLink(deepLinkObject: any, navigate?: any): Promise {\r\n if(!Check.isObject(deepLinkObject)) {\r\n this.services.logger.error(`_executeDeepLinkFromDirectCall was called with a deepLinkObject argument that is not an object`);\r\n return;\r\n }\r\n if(Check.isEmpty(deepLinkObject)) {\r\n this.services.logger.error(`_executeDeepLinkFromDirectCall was called with an empty deep deepLinkObject argument`);\r\n return;\r\n }\r\n\r\n this.services.logger.debug('Execute deep link object in executeDeepLink: ' + JSON.stringify(deepLinkObject));\r\n\r\n await this._waitForAutologin();\r\n\r\n let action = await (await this.services.deepLinkActionsFactory).createActionFromDeepLinkObject(deepLinkObject);\r\n if(action) {\r\n if(Check.isString(navigate)) {\r\n this.services.location.push(navigate as string);\r\n } else if(Check.isArrayOfStrings(navigate)) {\r\n if(navigate.length > 0) {\r\n await this.services.location.push('/' + (navigate as Array).join('/'));\r\n }\r\n } else if(!Check.isNullOrUndefined(navigate)) {\r\n this.services.logger.error(`expecting _executeDeepLinkFromDirectCall to be called with a navigate parameter that is string or an array of strings but it was ${JSON.stringify(navigate)}`);\r\n }\r\n\r\n await this._executeAction(action);\r\n } else {\r\n this.services.logger.error(`_executeDeepLinkFromDirectCall was called with an invalid deep link object ${JSON.stringify(deepLinkObject)}`);\r\n }\r\n };\r\n\r\n private _executeDeepLinkFromPostMessage = async (postEvent: any): Promise => {\r\n let messageData = postEvent && postEvent.data;\r\n if(!messageData) {\r\n return;\r\n }\r\n\r\n if(messageData.ActionName !== 'deeplink') {\r\n return;\r\n }\r\n\r\n\r\n if(!messageData.data) {\r\n this.services.logger.error(`Received deep link post message action with ${messageData.data} data`);\r\n return;\r\n }\r\n\r\n let deepLinkJsonObject = null;\r\n\r\n try {\r\n deepLinkJsonObject = JSON.parse(messageData.data);\r\n } catch (err) {\r\n this.services.logger.error(`Failed to parse deep link object from post message: ${messageData.data}`, err);\r\n return;\r\n }\r\n\r\n await this._waitForAutologin();\r\n\r\n let action = await (await this.services.deepLinkActionsFactory).createActionFromDeepLinkObject(deepLinkJsonObject);\r\n\r\n if(action) {\r\n this.services.logger.debug('Execute deep link object in _executeDeepLinkFromPostMessage: ' + messageData.data);\r\n return this._executeAction(action);\r\n } else {\r\n this.services.logger.error(`Received post message with invalid deep link object ${messageData.data}`);\r\n }\r\n\r\n }\r\n}\r\n\r\n","import {IDeepLinkBuilder} from '../deep-link-builder.interface';\r\nimport {ICasinoLegacyDeepLinkActionChain} from '../../deep-link-actions/casino-legacy-deep-link-action-chain';\r\n\r\nexport class DeepLinkJsonObjectBuilder implements IDeepLinkBuilder {\r\n buildDeepLinkUrl(actionsChain: ICasinoLegacyDeepLinkActionChain): string {\r\n\r\n let deepLinkObject: any = {};\r\n let resultedMarketingParams: any = {};\r\n\r\n let currentActionIndex = -1;\r\n\r\n let currentActionsChainPointer: ICasinoLegacyDeepLinkActionChain | null = actionsChain;\r\n while(currentActionsChainPointer) {\r\n let actionPropName = '';\r\n let idPropName = '';\r\n\r\n if(currentActionIndex === -1) {\r\n actionPropName = 'action';\r\n idPropName = 'id'\r\n } else if(currentActionIndex === 0) {\r\n actionPropName = 'action_next';\r\n idPropName = 'id_next'\r\n } else {\r\n actionPropName = 'action_next' + currentActionIndex;\r\n idPropName = 'id_next' + currentActionIndex;\r\n }\r\n\r\n deepLinkObject[actionPropName] = currentActionsChainPointer.descriptor.action;\r\n if(currentActionsChainPointer.descriptor.actionParams && currentActionsChainPointer.descriptor.actionParams.id) {\r\n deepLinkObject[idPropName] = currentActionsChainPointer.descriptor.actionParams.id;\r\n }\r\n\r\n let marketingParams = currentActionsChainPointer.descriptor.marketingParams;\r\n if(marketingParams) {\r\n if(marketingParams.dl) {\r\n resultedMarketingParams.dl = marketingParams.dl;\r\n }\r\n\r\n if(marketingParams.wtc) {\r\n resultedMarketingParams.wtc = marketingParams.wtc;\r\n }\r\n }\r\n\r\n currentActionsChainPointer = currentActionsChainPointer.nextAction;\r\n currentActionIndex++;\r\n }\r\n\r\n if(Object.keys(deepLinkObject).length === 0) {\r\n return ''\r\n }\r\n\r\n deepLinkObject = {...deepLinkObject, ...resultedMarketingParams};\r\n\r\n // replace \" with ' - for some reason cause to JSON parsing to fail.\r\n const deepLinkObjectAfterConvert = JSON.stringify(deepLinkObject).split('\"').join('\\'')\r\n\r\n return \"#deeplink=\" + deepLinkObjectAfterConvert;\r\n }\r\n}\r\n","import {DeepLinkActionDescriptor, IDeepLinkParser} from '../deep-link-parser.interface';\r\nimport {Check} from '@sparkware/app-utils';\r\nimport {IDeepLinkBuilder} from '../../../deep-link-builders/deep-link-builder.interface';\r\nimport {DeepLinkJsonObjectBuilder} from '../../../deep-link-builders/deeplink-json-object-builder/deeplink-json-object-builder';\r\n\r\n\r\n\r\nexport class DeepLinkJsonObjectParser implements IDeepLinkParser {\r\n\r\n constructor(public deepLinkObject: any) {\r\n\r\n }\r\n\r\n\r\n getActionsDescriptors(): DeepLinkActionDescriptor[] {\r\n\r\n let marketingParams = {\r\n dl: this.deepLinkObject.dl,\r\n wtc: this.deepLinkObject.wtc\r\n };\r\n\r\n const promoCode = this.deepLinkObject.promoCode;\r\n\r\n\r\n let result: DeepLinkActionDescriptor[] = [];\r\n\r\n result.push({\r\n action: this.deepLinkObject.action,\r\n marketingParams: marketingParams,\r\n promoCode: promoCode,\r\n actionParams: {\r\n id: this.deepLinkObject.id\r\n }\r\n });\r\n\r\n for(let i = 0; i <= 2; i++) {\r\n let actionNextPropName = i === 0 ? 'action_next' : 'action_next' + i;\r\n let idNextPropName = i === 0 ? 'id_next' : 'id_next' + i;\r\n\r\n if(!Check.isNullOrUndefined(this.deepLinkObject[actionNextPropName])) {\r\n let params = {\r\n id: this.deepLinkObject[idNextPropName],\r\n };\r\n\r\n result.push({\r\n action: this.deepLinkObject[actionNextPropName],\r\n marketingParams: marketingParams,\r\n promoCode: promoCode,\r\n actionParams: params\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n getDeepLinkBuilder(): IDeepLinkBuilder {\r\n return new DeepLinkJsonObjectBuilder();\r\n }\r\n\r\n}\r\n","import {ServiceBase} from '../../../ServiceBase';\r\nimport {IDeepLinkParserService} from './deep-link-parser.service.interface';\r\nimport {IDeepLinkParser} from './parsers/deep-link-parser.interface';\r\nimport {DeepLinkJsonObjectParser} from './parsers/deep-link-json-object-parser/deep-link-json-object-parser';\r\nimport {Check} from '@sparkware/app-utils';\r\nimport {decodeUriComponentRecursive} from '../../../../../utils/url-utils';\r\nimport {DEEP_LINK_HASH_PARAM, DEEP_LINK_QUERY_PARAM} from \"../../deeplink-consts\";\r\n\r\nconst SPECIFIC_NAVIGATION = 'specificNavigation';\r\nconst SPECIFIC_NAVIGATION_PARAM = SPECIFIC_NAVIGATION + '=';\r\n\r\n\r\nexport class DeepLinkParserService extends ServiceBase implements IDeepLinkParserService {\r\n getParserFromCurrentRoute(): IDeepLinkParser | null {\r\n\r\n if(!this.services.location.currentUri) {\r\n return null;\r\n }\r\n\r\n let deepLinkJson = this._extractDeepLinkJsonFromFragment();\r\n\r\n\r\n if(!deepLinkJson) {\r\n deepLinkJson = this._extractDeepLinkJsonFromDeepLinkQueryParam();\r\n }\r\n\r\n let isDeepLinkFromSpecificNavigation = false;\r\n if(!deepLinkJson) {\r\n deepLinkJson = this._extractDeepLinkJsonFromSpecificNavigationQueryParam();\r\n if(deepLinkJson) {\r\n isDeepLinkFromSpecificNavigation = true;\r\n }\r\n }\r\n\r\n\r\n if(Check.isEmpty(deepLinkJson)) {\r\n return null;\r\n }\r\n\r\n try {\r\n let deepLinkObject: string | null = null;\r\n if(Check.isString(deepLinkJson)) {\r\n deepLinkObject = JSON.parse(deepLinkJson);\r\n } else if(Check.isObject(deepLinkJson)) {\r\n deepLinkObject = deepLinkJson;\r\n } else {\r\n return null;\r\n }\r\n\r\n if(this._isDeepLinkObject(deepLinkObject)) {\r\n return new DeepLinkJsonObjectParser(deepLinkObject);\r\n }\r\n\r\n return null;\r\n\r\n } catch (err) {\r\n if(isDeepLinkFromSpecificNavigation) {\r\n this.services.logger.info(`Current route specific navigation doesn't contain a deep link: ${this.services.location.currentUri.toString()}`);\r\n } else {\r\n this.services.logger.error(`Failed to parse deep link object from current route ${this.services.location.currentUri.toString()}`);\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n\r\n getParserFromDeepLinkObject(deepLinkObject: any): IDeepLinkParser | null {\r\n if(this._isDeepLinkObject(deepLinkObject)) {\r\n return new DeepLinkJsonObjectParser(deepLinkObject);\r\n }\r\n return null;\r\n }\r\n\r\n private _isDeepLinkObject(obj: any): boolean {\r\n if(!Check.isObject(obj)) {\r\n return false;\r\n }\r\n\r\n if(!obj['action']){\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _extractDeepLinkJsonFromFragment(): string | null {\r\n let fragment = this.services.location.currentUri.hash.value;\r\n if(!fragment) {\r\n return null;\r\n }\r\n\r\n fragment = decodeUriComponentRecursive(fragment);\r\n\r\n if(fragment.indexOf(DEEP_LINK_HASH_PARAM) !== 0 && fragment.indexOf(SPECIFIC_NAVIGATION_PARAM) !== 0) {\r\n return null;\r\n }\r\n\r\n return fragment.replace(DEEP_LINK_HASH_PARAM, '').replace(SPECIFIC_NAVIGATION_PARAM, '');\r\n }\r\n\r\n\r\n\r\n private _extractDeepLinkJsonFromDeepLinkQueryParam(): string | null {\r\n if (this.services.location.currentUri.queryParams.isEmpty) {\r\n return null;\r\n }\r\n\r\n return decodeUriComponentRecursive(this.services.location.currentUri.queryParams.getParamValue(DEEP_LINK_QUERY_PARAM) || '');\r\n }\r\n\r\n private _extractDeepLinkJsonFromSpecificNavigationQueryParam(): string | null {\r\n\r\n if (this.services.location.currentUri.queryParams.isEmpty) {\r\n return null;\r\n }\r\n\r\n return decodeUriComponentRecursive(this.services.location.currentUri.queryParams.getParamValue(SPECIFIC_NAVIGATION) || '');\r\n }\r\n\r\n}\r\n","import {ICasinoDeepLinkAction} from \"../../casino-deep-link-action.interface\";\r\nimport {IServiceFactoryExtended} from \"../../../service-factory-extended.interface\";\r\nimport {\r\n AppIdentifiers,\r\n IDeepLink,\r\n IPerformActionPayloadBase, IRegisterActionData,\r\n TriggerType\r\n} from \"@sparkware/uc-sdk-core\";\r\nimport {CHANNEL_SOURCE} from \"../../../../../common/const/casinofied-analytics-consts\";\r\nimport {\r\n IFullCashierSpecificParams\r\n} from \"@sparkware/uc-sdk-core/lib/apps/full-cashier/full-cashier.interfaces\";\r\n\r\n\r\nexport class UnifiedDeepLinkAction implements ICasinoDeepLinkAction {\r\n constructor(private readonly services: IServiceFactoryExtended,\r\n private readonly deepLink: IDeepLink) {\r\n }\r\n async execute(): Promise {\r\n\r\n let actions = this.deepLink.actions;\r\n for(let i = 0; i < actions.length; i++) {\r\n let deepLinkAction = actions[i];\r\n const channelAction = this.services.messageBroker.channels.performAction.topics[deepLinkAction.actionID];\r\n if(!channelAction) {\r\n throw new Error(`Invalid deep link action id ${deepLinkAction.actionID}`);\r\n }\r\n\r\n\r\n let actionData: IRegisterActionData = {\r\n ...deepLinkAction.actionData\r\n }\r\n\r\n if(deepLinkAction.actionID === \"register\") {\r\n\r\n const cashierActionIndex = actions.findIndex(a => a.actionID === \"openCashier\");\r\n if(cashierActionIndex >= 0) {\r\n let cashierParams = actions[cashierActionIndex].appSpecificParameters as IFullCashierSpecificParams;\r\n if(cashierParams) {\r\n actionData = {\r\n ...actionData,\r\n promoCode: cashierParams.promoCode\r\n }\r\n }\r\n }\r\n }\r\n\r\n const correlationId = this.services.tools.getGuid();\r\n const payload: IPerformActionPayloadBase = {\r\n correlationID: correlationId,\r\n actionData: actionData,\r\n launchInfo: {\r\n channel: {\r\n area: this.deepLink.area,\r\n source: this.deepLink.source,\r\n element: this.deepLink.element ?? CHANNEL_SOURCE.casinoClient\r\n },\r\n appSpecificParameters: deepLinkAction.appSpecificParameters,\r\n businessCorrelationID: correlationId,\r\n trigger: TriggerType.automaticFlow,\r\n sourceAppID: AppIdentifiers.CasinoClient,\r\n sourceAppVersion: this.services.sdk.getSkin().getVersion()\r\n }\r\n };\r\n\r\n await channelAction.execute(payload as any);\r\n\r\n if(deepLinkAction.actionID === 'register') {\r\n return; // we ignore any other action that comes after registration action\r\n }\r\n\r\n }\r\n }\r\n\r\n}","import {IDeepLinkActionsFactoryService} from \"../../deep-link-action-factory/deep-link-actions-factory.service.inteface\";\r\nimport {ICasinoDeepLinkAction} from \"../../casino-deep-link-action.interface\";\r\nimport {IServiceFactoryExtended} from \"../../../service-factory-extended.interface\";\r\nimport {decodeUriComponentRecursive} from \"../../../../../utils/url-utils\";\r\nimport {DEEP_LINK_HASH_PARAM, DEEP_LINK_QUERY_PARAM} from \"../../deeplink-consts\";\r\nimport {UnifiedDeepLinkAction} from \"./unified-deep-link-action\";\r\n\r\n\r\nexport class DeepLinkActionsFactoryUnifiedStrategy implements IDeepLinkActionsFactoryService {\r\n constructor(private readonly services: IServiceFactoryExtended) {\r\n }\r\n\r\n async createActionFromCurrentRoute(): Promise {\r\n let jsonObject = this._extractDeepLinkJsonFromHash();\r\n if(!jsonObject) {\r\n jsonObject = this._extractDeepLinkJsonFromDeepLinkQueryParam();\r\n }\r\n return this.createActionFromDeepLinkObject(jsonObject);\r\n }\r\n\r\n private _extractDeepLinkJsonFromHash(): any {\r\n let hash = this.services.location.currentUri.hash.value;\r\n if(!hash) {\r\n return null;\r\n }\r\n\r\n hash = decodeUriComponentRecursive(hash);\r\n\r\n if(hash.indexOf(DEEP_LINK_HASH_PARAM) !== 0) {\r\n return null;\r\n }\r\n\r\n hash = hash.replace(DEEP_LINK_HASH_PARAM, '');\r\n\r\n try {\r\n return JSON.parse(hash);\r\n } catch (err) {\r\n this.services.logger.error(`Invalid unified deeplink format in hash: ${hash}`, err);\r\n return null;\r\n }\r\n\r\n }\r\n\r\n private _extractDeepLinkJsonFromDeepLinkQueryParam(): string | null {\r\n if (this.services.location.currentUri.queryParams.isEmpty) {\r\n return null;\r\n }\r\n\r\n const json = decodeUriComponentRecursive(this.services.location.currentUri.queryParams.getParamValue(DEEP_LINK_QUERY_PARAM) || '');\r\n if(!json) {\r\n return null;\r\n }\r\n\r\n try {\r\n return JSON.parse(json);\r\n } catch (err) {\r\n this.services.logger.error(`Invalid unified deeplink format in query string: ${json}`, err);\r\n return null;\r\n }\r\n }\r\n\r\n\r\n async createActionFromDeepLinkObject(deepLinkObject: any): Promise {\r\n if(deepLinkObject?.actions) {\r\n return new UnifiedDeepLinkAction(this.services, deepLinkObject);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}","import {IServiceFactoryExtended} from '../../../service-factory-extended.interface';\r\nimport {DeepLinkActionDescriptor} from '../deep-link-parsers/parsers/deep-link-parser.interface';\r\nimport {ICasinoLegacyDeepLinkActionChain} from './casino-legacy-deep-link-action-chain';\r\nimport {IDeepLinkBuilder} from '../deep-link-builders/deep-link-builder.interface';\r\nimport {DeepLinkExecutionContext} from './deep-link-execution-context.interface';\r\n\r\n\r\nexport abstract class CasinoLegacyDeepLinkActionBase implements ICasinoLegacyDeepLinkActionChain {\r\n\r\n public constructor(protected context: DeepLinkExecutionContext) {\r\n\r\n }\r\n\r\n shouldSkipAction = false;\r\n skipAction(): void {\r\n this.shouldSkipAction = true;\r\n }\r\n\r\n get services(): IServiceFactoryExtended {\r\n return this.context.services;\r\n }\r\n\r\n get descriptor(): DeepLinkActionDescriptor{\r\n return this.context.descriptor;\r\n }\r\n\r\n get nextAction(): ICasinoLegacyDeepLinkActionChain | null {\r\n return this.context.nextAction;\r\n }\r\n\r\n get deepLinkBuilder(): IDeepLinkBuilder{\r\n return this.context.deepLinkBuilder;\r\n }\r\n\r\n\r\n abstract execute(): Promise;\r\n\r\n protected _executeNextAction(): Promise {\r\n let nextAction = this.context.nextAction;\r\n while (nextAction) {\r\n if(nextAction.shouldSkipAction) {\r\n nextAction = nextAction.nextAction;\r\n } else {\r\n return this.context.nextAction.execute();\r\n }\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n deepLinkToString(): string {\r\n let result = `\"action\":\"${this.descriptor.action}\"`;\r\n Object.keys(this.descriptor.actionParams).forEach(param => {\r\n result += `,\"${param}\":\"${this.descriptor.actionParams[param]}\"`;\r\n });\r\n return \"{\" + result + \"}\";\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\nimport {CHANNEL_ELEMENTS, CHANNEL_SOURCE} from \"../../../../../../common/const/casinofied-analytics-consts\";\r\nimport {AppIdentifiers, AreaType, CashierSessionType, TriggerType} from \"@sparkware/uc-sdk-core\";\r\nimport {IFullCashierSpecificParams} from \"@sparkware/uc-sdk-core/lib/apps/full-cashier/full-cashier.interfaces\";\r\n\r\n\r\nexport class CashierDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\r\n\r\n async execute(): Promise {\r\n const businessCorrelationId = this.services.tools.getGuid();\r\n await this.services.messageBroker.channels.performAction.topics.openCashier.execute({\r\n correlationID: businessCorrelationId,\r\n launchInfo: {\r\n businessCorrelationID: businessCorrelationId,\r\n trigger: TriggerType.automaticFlow,\r\n sourceAppVersion: this.services.sdk.getSkin().getVersion(),\r\n channel: {\r\n source: CHANNEL_SOURCE.casinoClient,\r\n area: AreaType.externalClick,\r\n element: CHANNEL_ELEMENTS.deepLink\r\n },\r\n sourceAppID: AppIdentifiers.CasinoClient,\r\n appSpecificParameters: {\r\n sessionType: CashierSessionType.FullCashier,\r\n ...this.getCashierSpecificParameters()\r\n }\r\n }\r\n });\r\n\r\n await this._executeNextAction();\r\n }\r\n\r\n public getCashierSpecificParameters(): Partial {\r\n const options: Partial = {\r\n sessionType: CashierSessionType.FullCashier\r\n };\r\n\r\n let params = this.descriptor.actionParams && this.descriptor.actionParams.id;\r\n if(params) {\r\n let cashierParams = params.toString().split(',');\r\n if(cashierParams.length > 0) {\r\n options.sessionType = cashierParams[0].trim();\r\n if(cashierParams.length > 1) {\r\n options.promoCode = cashierParams[1].trim();\r\n }\r\n }\r\n }\r\n\r\n if(this.descriptor.promoCode) {\r\n options.promoCode = this.descriptor.promoCode;\r\n }\r\n\r\n return options;\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\nimport {CashierDeepLinkAction} from \"../cashier/cashier-deeplink-action\";\r\nimport {IRegisterActionData} from \"@sparkware/uc-sdk-core\";\r\n\r\nexport class RegisterDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\r\n\r\n private _findCashierActionAndSkipAllSubsequentActions(): CashierDeepLinkAction | null {\r\n let nextAction = this.nextAction;\r\n let cashierAction: CashierDeepLinkAction | null = null;\r\n while (nextAction) {\r\n if(nextAction instanceof CashierDeepLinkAction) {\r\n cashierAction = nextAction;\r\n }\r\n\r\n nextAction.skipAction();\r\n nextAction = nextAction.nextAction;\r\n }\r\n\r\n return cashierAction;\r\n }\r\n\r\n async execute(): Promise {\r\n\r\n const cashierDeepLinkAction = this._findCashierActionAndSkipAllSubsequentActions();\r\n\r\n let cashierSpecificParams: IRegisterActionData = {};\r\n if(cashierDeepLinkAction) {\r\n const params = cashierDeepLinkAction.getCashierSpecificParameters();\r\n if(params?.promoCode) {\r\n cashierSpecificParams = {\r\n promoCode: params.promoCode\r\n }\r\n }\r\n cashierDeepLinkAction.skipAction();\r\n }\r\n\r\n if(this.descriptor.promoCode) {\r\n cashierSpecificParams.promoCode = this.descriptor.promoCode;\r\n }\r\n\r\n await this.services.messageBroker.channels.performAction.topics.register.execute({\r\n actionData: {\r\n ...this.descriptor.marketingParams,\r\n ...cashierSpecificParams\r\n }\r\n });\r\n await this._executeNextAction();\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\n\r\nexport class LoginDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\r\n async execute(): Promise {\r\n await this.services.messageBroker.channels.performAction.topics.login.execute({});\r\n await this._executeNextAction();\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\n\r\nexport class MyAccountDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\r\n async execute(): Promise {\r\n let tabId = this.descriptor.actionParams?.id && parseInt(this.descriptor.actionParams.id);\r\n await this.services.messageBroker.channels.performAction.topics.openMyAccount.execute({\r\n actionData: {\r\n tabId: tabId\r\n }\r\n });\r\n\r\n await this._executeNextAction();\r\n }\r\n\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\n\r\nexport abstract class PlayGameDeepLinkActionBase extends CasinoLegacyDeepLinkActionBase {\r\n\r\n protected abstract getIsRealMode(): boolean;\r\n\r\n // Play Game never execute the next action\r\n async execute(): Promise {\r\n\r\n const gameType = this._getGameType();\r\n\r\n if(!gameType) {\r\n return;\r\n }\r\n\r\n await this.services.messageBroker.channels.performAction.topics.openCasinoGame.execute({\r\n actionData: {\r\n gameType: gameType,\r\n isReal: this.getIsRealMode()\r\n }\r\n });\r\n }\r\n\r\n\r\n private _getGameType(): number | null | undefined {\r\n if(!this.descriptor.actionParams && !this.descriptor.actionParams.id) {\r\n this.services.logger.error('No parameters were specified for play game deep link action');\r\n return null;\r\n }\r\n let gameTypes = this.descriptor.actionParams.id.toString().split(',').map(gameType => gameType.trim());\r\n\r\n if(gameTypes.length === 1) {\r\n return parseInt(gameTypes[0]);\r\n }\r\n\r\n if(gameTypes.length > 1) {\r\n if(this.services.device.os.isMobileOS) {\r\n return parseInt(gameTypes[1]);\r\n } else {\r\n return parseInt(gameTypes[0]);\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","import {PlayGameDeepLinkActionBase} from '../play-game-deep-link-action-base';\r\n\r\nexport class PlayGameRealDeepLinkAction extends PlayGameDeepLinkActionBase {\r\n protected getIsRealMode(): boolean {\r\n return true;\r\n }\r\n}\r\n","import {PlayGameDeepLinkActionBase} from '../play-game-deep-link-action-base';\r\n\r\nexport class PlayGameDemoDeepLinkAction extends PlayGameDeepLinkActionBase {\r\n protected getIsRealMode(): boolean {\r\n return false;\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\n\r\nexport class RedirectDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\r\n async execute(): Promise {\r\n\r\n let id:string = this.descriptor.actionParams && this.descriptor.actionParams.id;\r\n if(id) {\r\n await this.services.location.push(id);\r\n }\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\n\r\nexport class TerminateDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\r\n execute(): Promise {\r\n return Promise.resolve();\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\n\r\nexport class MyAccountUploadDocumentDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\r\n\r\n async execute(): Promise {\r\n await this.services.messageBroker.channels.performAction.topics.uploadDocumentsFromCashier.execute({});\r\n }\r\n}\r\n","import { CasinoLegacyDeepLinkActionBase } from \"../casino-legacy-deep-link-action-base\";\r\nimport {\r\n CasinoFreeToPlayGameStage\r\n} from \"@sparkware/uc-sdk-core/lib/apps/casino-free-to-play/casino-free-to-play.interfaces\";\r\nimport {AppIdentifiers, AreaType, TriggerType} from \"@sparkware/uc-sdk-core\";\r\nimport {CHANNEL_ELEMENTS, CHANNEL_SOURCE} from \"../../../../../../common/const/casinofied-analytics-consts\";\r\n\r\nexport class FreeToPlayDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\r\n async execute(): Promise {\r\n\r\n const id = this.descriptor.actionParams.id;\r\n\r\n let gameStage: CasinoFreeToPlayGameStage;\r\n switch (id) {\r\n case \"1\":\r\n gameStage = CasinoFreeToPlayGameStage.DailyWish;\r\n break;\r\n case \"2\":\r\n gameStage = CasinoFreeToPlayGameStage.DepositWheel;\r\n break;\r\n\r\n default:\r\n gameStage = CasinoFreeToPlayGameStage.MiniArena;\r\n break;\r\n }\r\n\r\n await this.services.messageBroker.channels.performAction.topics.openCasinoFreeToPlay.execute({\r\n launchInfo: {\r\n businessCorrelationID: this.services.tools.getGuid(),\r\n channel: {\r\n area: AreaType.externalClick,\r\n element: CHANNEL_ELEMENTS.deepLink,\r\n source: CHANNEL_SOURCE.casinoClient\r\n },\r\n appSpecificParameters: {\r\n gameStage: gameStage\r\n },\r\n sourceAppVersion: this.services.sdk.getSkin().getVersion(),\r\n sourceAppID: AppIdentifiers.CasinoClient,\r\n trigger: TriggerType.automaticFlow\r\n }\r\n });\r\n\r\n await this._executeNextAction();\r\n }\r\n\r\n\r\n}","import { SwiperGamesListConfiguration } from \"../../../../configurations/config-data-sections/arenas.configuration\";\r\nimport {CasinoLegacyDeepLinkActionBase} from \"../casino-legacy-deep-link-action-base\";\r\n\r\n\r\nabstract class OpenListDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\r\n abstract getListConfig(id: string): SwiperGamesListConfiguration;\r\n\r\n async execute() {\r\n const id = this.descriptor.actionParams.id?.toString();\r\n let swiper: SwiperGamesListConfiguration = this.getListConfig(id);\r\n if (swiper) {\r\n const verticalGamesList = await this.services.verticalGamesList;\r\n await verticalGamesList.renderList(swiper);\r\n } else {\r\n this.services.logger.error(`For deeplink action ${this.descriptor.action} cannot find list with specified id: ${id}`);\r\n }\r\n }\r\n}\r\n\r\nexport class OpenListDeeplinkByTitleAction extends OpenListDeeplinkAction {\r\n getListConfig(title: string): SwiperGamesListConfiguration {\r\n return this.services.configuration.getGamesListByTitle(title);\r\n }\r\n}\r\n\r\nexport class OpenListDeeplinkByIdAction extends OpenListDeeplinkAction {\r\n getListConfig(id: string): SwiperGamesListConfiguration {\r\n return this.services.configuration.getGamesListById(Number(id));\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\n\r\nexport class FreePlayDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\r\n async execute(): Promise {\r\n\r\n\r\n if(!await this.services.user.ensureUserIsLoggedIn('FreePlayDeepLinkAction')){\r\n throw new Error('FreePlayDeepLinkAction failed because user is not logged in')\r\n }\r\n\r\n this.services.freePlay.registerActionToExecuteWhenFreePlayIsAvailable(async () => {\r\n if(this.services.freePlay.hasVouchers) {\r\n (await this.services.userMenu).openRewards();\r\n }\r\n });\r\n\r\n await this._executeNextAction();\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from \"../casino-legacy-deep-link-action-base\";\r\nimport {\r\n AppIdentifiers,\r\n AreaType,\r\n ControlCenterDeeplink,\r\n ControlCenterOpenSource,\r\n IControlCenterFullSpecificParams,\r\n TriggerType\r\n} from \"@sparkware/uc-sdk-core\";\r\nimport {CHANNEL_ELEMENTS, CHANNEL_SOURCE} from \"../../../../../../common/const/casinofied-analytics-consts\";\r\nimport {Check} from \"@sparkware/app-utils\";\r\n\r\nexport class ControlCenterDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\r\n async execute() {\r\n\r\n let params = this._extractParams(this.descriptor.actionParams?.id);\r\n\r\n await this.services.messageBroker.channels.performAction.topics.openControlCenterFull.execute({\r\n launchInfo: {\r\n businessCorrelationID: this.services.tools.getGuid(),\r\n channel: {\r\n area: AreaType.externalClick,\r\n element: CHANNEL_ELEMENTS.deepLink,\r\n source: CHANNEL_SOURCE.casinoClient\r\n },\r\n appSpecificParameters: {\r\n source: ControlCenterOpenSource.Lobby,\r\n ...params\r\n },\r\n sourceAppVersion: this.services.sdk.getSkin().getVersion(),\r\n sourceAppID: AppIdentifiers.CasinoClient,\r\n trigger: TriggerType.automaticFlow\r\n }\r\n });\r\n await this._executeNextAction();\r\n }\r\n\r\n private _extractParams(params: string | number | undefined | null): Partial {\r\n if(Check.isEmpty(params)) {\r\n return {\r\n deeplink: ControlCenterDeeplink.Main\r\n };\r\n }\r\n if(Check.isNumber(params)) {\r\n return {\r\n deeplink: params\r\n };\r\n }\r\n\r\n const splittedParams = params.split('|');\r\n\r\n let deeplink = parseInt(splittedParams[0]);\r\n if(!Check.isNumber(deeplink)) {\r\n deeplink = ControlCenterDeeplink.Main;\r\n }\r\n\r\n let isIncreaseLimitsDisabled = splittedParams[1]?.toLowerCase() === 'true';\r\n return {\r\n deeplink: deeplink,\r\n isIncreaseLimitsDisabled: isIncreaseLimitsDisabled\r\n };\r\n\r\n }\r\n}\r\n","import {CasinoLegacyDeepLinkActionBase} from \"../casino-legacy-deep-link-action-base\";\r\n\r\nexport class ForgotPasswordDeeplinkAction extends CasinoLegacyDeepLinkActionBase {\r\n async execute(): Promise {\r\n await this.services.messageBroker.channels.performAction.topics.openForgotPassword.execute({});\r\n await this._executeNextAction();\r\n }\r\n}","import {CasinoLegacyDeepLinkActionBase} from '../casino-legacy-deep-link-action-base';\r\n\r\nexport class CrossDeepLinkAction extends CasinoLegacyDeepLinkActionBase {\r\n async execute(): Promise {\r\n const id = this.descriptor.actionParams.id;\r\n switch (id) {\r\n case 'poker':\r\n await this.services.linksNavigation.openPoker();\r\n break;\r\n\r\n case 'sport':\r\n await this.services.linksNavigation.openSport();\r\n break;\r\n }\r\n\r\n await this._executeNextAction();\r\n }\r\n}\r\n","import {IDeepLinkActionsFactoryService} from \"../../deep-link-action-factory/deep-link-actions-factory.service.inteface\";\r\nimport {CashierDeepLinkAction} from \"../deep-link-actions/cashier/cashier-deeplink-action\";\r\nimport {RegisterDeepLinkAction} from \"../deep-link-actions/register/register-deeplink-action\";\r\nimport {LoginDeepLinkAction} from \"../deep-link-actions/login/login-deeplink-action\";\r\nimport {MyAccountDeepLinkAction} from \"../deep-link-actions/my-account/my-account-deeplink-action\";\r\nimport {\r\n PlayGameRealDeepLinkAction\r\n} from \"../deep-link-actions/play-game/play-game-real/play-game-real-deeplink-action\";\r\nimport {\r\n PlayGameDemoDeepLinkAction\r\n} from \"../deep-link-actions/play-game/play-game-demo/play-game-demo-deeplink-action\";\r\nimport {RedirectDeepLinkAction} from \"../deep-link-actions/redirect/redirect-deeplink-action\";\r\nimport {TerminateDeepLinkAction} from \"../deep-link-actions/terminate/terminate-deeplink-action\";\r\nimport {\r\n MyAccountUploadDocumentDeeplinkAction\r\n} from \"../deep-link-actions/upload-document/my-account-upload-document-deeplink-action\";\r\nimport {FreeToPlayDeeplinkAction} from \"../deep-link-actions/free-to-play/free-to-play-deeplink-action\";\r\nimport {\r\n OpenListDeeplinkByIdAction,\r\n OpenListDeeplinkByTitleAction\r\n} from \"../deep-link-actions/open-list/open-list-deeplink-action\";\r\nimport {FreePlayDeepLinkAction} from \"../deep-link-actions/freeplay/freeplay-deeplink-action\";\r\nimport {\r\n ControlCenterDeeplinkAction\r\n} from \"../deep-link-actions/control-center/control-center-deeplink-action\";\r\nimport {\r\n ForgotPasswordDeeplinkAction\r\n} from \"../deep-link-actions/forgot-password/forgot-password.deeplink-action\";\r\nimport {ICasinoLegacyDeepLinkAction} from \"../deep-link-actions/casino-legacy-deep-link-action.interface\";\r\nimport {IDeepLinkParser} from \"../deep-link-parsers/parsers/deep-link-parser.interface\";\r\nimport {ICasinoLegacyDeepLinkActionChain} from \"../deep-link-actions/casino-legacy-deep-link-action-chain\";\r\nimport {DeepLinkExecutionContext} from \"../deep-link-actions/deep-link-execution-context.interface\";\r\nimport {IServiceFactoryExtended} from \"../../../service-factory-extended.interface\";\r\nimport { CrossDeepLinkAction } from \"../deep-link-actions/cross/cross-deep-link-action\";\r\n\r\nexport class DeepLinkActionsFactoryLegacyStrategy implements IDeepLinkActionsFactoryService {\r\n constructor(private readonly services: IServiceFactoryExtended) {\r\n }\r\n private _actionsPrototypes = {\r\n cashier: CashierDeepLinkAction,\r\n register: RegisterDeepLinkAction,\r\n login: LoginDeepLinkAction,\r\n my_account: MyAccountDeepLinkAction,\r\n 'game-real': PlayGameRealDeepLinkAction,\r\n 'game-demo': PlayGameDemoDeepLinkAction,\r\n redirect: RedirectDeepLinkAction,\r\n terminate: TerminateDeepLinkAction,\r\n 'upload-document': MyAccountUploadDocumentDeeplinkAction,\r\n 'free-to-play': FreeToPlayDeeplinkAction,\r\n 'open-list': OpenListDeeplinkByTitleAction,\r\n 'open-list-id': OpenListDeeplinkByIdAction,\r\n 'freeplay': FreePlayDeepLinkAction,\r\n 'control-center': ControlCenterDeeplinkAction,\r\n 'forgot-password': ForgotPasswordDeeplinkAction,\r\n 'cross': CrossDeepLinkAction\r\n };\r\n\r\n async createActionFromCurrentRoute(): Promise {\r\n\r\n let parser = (await this.services.deepLinkParser).getParserFromCurrentRoute();\r\n\r\n if(parser) {\r\n return this._createActionsFromParser(parser);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n async createActionFromDeepLinkObject(deepLinkObject: any): Promise {\r\n let parser = (await this.services.deepLinkParser).getParserFromDeepLinkObject(deepLinkObject);\r\n if(parser) {\r\n return this._createActionsFromParser(parser);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _createActionsFromParser(parser: IDeepLinkParser) : ICasinoLegacyDeepLinkAction | null {\r\n let actionsDescriptors = parser.getActionsDescriptors();\r\n let deepLinkBuilder = parser.getDeepLinkBuilder();\r\n\r\n let action: ICasinoLegacyDeepLinkActionChain | null = null;\r\n for(let i = actionsDescriptors.length - 1; i >= 0; i--) {\r\n let actionDescriptor = actionsDescriptors[i];\r\n let actionPrototype = this._actionsPrototypes[actionDescriptor.action];\r\n if(actionPrototype) {\r\n let actionExecutionContext: DeepLinkExecutionContext = {\r\n services: this.services,\r\n deepLinkBuilder: deepLinkBuilder,\r\n nextAction: action,\r\n descriptor: actionDescriptor\r\n };\r\n\r\n action = new actionPrototype(actionExecutionContext) as ICasinoLegacyDeepLinkActionChain;\r\n } else {\r\n this.services.logger.error(`Can't handle deep link action '${actionDescriptor.action}'`);\r\n return null;\r\n }\r\n }\r\n\r\n return action;\r\n }\r\n}","import {IDeepLinkActionsFactoryService} from './deep-link-actions-factory.service.inteface';\r\nimport {ServiceBase} from '../../ServiceBase';\r\nimport {ICasinoDeepLinkAction} from \"../casino-deep-link-action.interface\";\r\nimport {IServiceFactoryExtended} from \"../../service-factory-extended.interface\";\r\nimport {DeepLinkActionsFactoryUnifiedStrategy} from \"../unified/deep-link-action-factory/deep-link-actions-factory-unified.strategy\";\r\nimport {DeepLinkActionsFactoryLegacyStrategy} from \"../legacy/deep-link-action-factory/deep-link-actions-factory-legacy.strategy\";\r\n\r\nexport class DeepLinkActionsFactoryService extends ServiceBase implements IDeepLinkActionsFactoryService {\r\n\r\n constructor(services: IServiceFactoryExtended) {\r\n super(services);\r\n this._strategies = [\r\n new DeepLinkActionsFactoryUnifiedStrategy(services),\r\n new DeepLinkActionsFactoryLegacyStrategy(services)\r\n ];\r\n }\r\n\r\n private readonly _strategies: IDeepLinkActionsFactoryService[];\r\n\r\n async createActionFromCurrentRoute(): Promise {\r\n for(let strategy of this._strategies) {\r\n let action = await strategy.createActionFromCurrentRoute();\r\n if(action) {\r\n return action;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n async createActionFromDeepLinkObject(deepLinkObject: any): Promise {\r\n for(let strategy of this._strategies) {\r\n let action = await strategy.createActionFromDeepLinkObject(deepLinkObject);\r\n if(action) {\r\n return action;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}\r\n"],"names":["DEEP_LINK_HASH_PARAM","DEEP_LINK_QUERY_PARAM","DeepLinkService","observable","services","_isExecuting","_executeDeepLinkFromSdkEvent","deepLinkObject","_waitForAutologin","deepLinkActionsFactory","createActionFromDeepLinkObject","action","logger","debug","JSON","stringify","_executeAction","Check","warning","error","_executeDeepLinkFromPostMessage","postEvent","messageData","data","ActionName","deepLinkJsonObject","parse","makeObservable","_subscribeToCurrentUriReaction","sdk","events","onDeepLinkReceived","window","subscribeTo","postMessage","fireImmediately","reaction","location","currentUri","arg","prev","_executeDeepLinkFromCurrentRoute","this","user","waitForAutoLogin","execute","runInAction","lastTimeDeepLinkWasExecuted","Date","now","reactionDisposer","dispose","createActionFromCurrentRoute","toString","urlWithoutHash","removeSearchParam","getUrlWithoutHash","replace","navigate","push","length","join","ServiceBase","DeepLinkJsonObjectBuilder","actionsChain","resultedMarketingParams","currentActionIndex","currentActionsChainPointer","actionPropName","idPropName","descriptor","actionParams","id","marketingParams","dl","wtc","nextAction","Object","keys","split","DeepLinkJsonObjectParser","promoCode","result","i","actionNextPropName","idNextPropName","params","SPECIFIC_NAVIGATION","SPECIFIC_NAVIGATION_PARAM","DeepLinkParserService","deepLinkJson","_extractDeepLinkJsonFromFragment","_extractDeepLinkJsonFromDeepLinkQueryParam","isDeepLinkFromSpecificNavigation","_extractDeepLinkJsonFromSpecificNavigationQueryParam","_isDeepLinkObject","err","info","obj","fragment","hash","value","decodeUriComponentRecursive","indexOf","queryParams","isEmpty","getParamValue","UnifiedDeepLinkAction","deepLink","actions","deepLinkAction","channelAction","messageBroker","channels","performAction","topics","actionID","Error","actionData","cashierActionIndex","findIndex","a","cashierParams","appSpecificParameters","correlationId","tools","getGuid","payload","correlationID","launchInfo","channel","area","source","element","CHANNEL_SOURCE","businessCorrelationID","trigger","TriggerType","sourceAppID","AppIdentifiers","sourceAppVersion","getSkin","getVersion","DeepLinkActionsFactoryUnifiedStrategy","jsonObject","_extractDeepLinkJsonFromHash","json","CasinoLegacyDeepLinkActionBase","context","shouldSkipAction","deepLinkBuilder","Promise","resolve","forEach","param","CashierDeepLinkAction","businessCorrelationId","openCashier","AreaType","CHANNEL_ELEMENTS","sessionType","CashierSessionType","getCashierSpecificParameters","_executeNextAction","options","trim","RegisterDeepLinkAction","cashierAction","skipAction","cashierDeepLinkAction","_findCashierActionAndSkipAllSubsequentActions","cashierSpecificParams","register","LoginDeepLinkAction","login","MyAccountDeepLinkAction","tabId","parseInt","openMyAccount","PlayGameDeepLinkActionBase","gameType","_getGameType","openCasinoGame","isReal","getIsRealMode","gameTypes","map","device","os","isMobileOS","PlayGameRealDeepLinkAction","PlayGameDemoDeepLinkAction","RedirectDeepLinkAction","TerminateDeepLinkAction","MyAccountUploadDocumentDeeplinkAction","uploadDocumentsFromCashier","FreeToPlayDeeplinkAction","gameStage","CasinoFreeToPlayGameStage","openCasinoFreeToPlay","OpenListDeeplinkAction","swiper","getListConfig","verticalGamesList","renderList","OpenListDeeplinkByTitleAction","title","configuration","getGamesListByTitle","OpenListDeeplinkByIdAction","getGamesListById","Number","FreePlayDeepLinkAction","ensureUserIsLoggedIn","freePlay","registerActionToExecuteWhenFreePlayIsAvailable","hasVouchers","userMenu","openRewards","ControlCenterDeeplinkAction","_extractParams","openControlCenterFull","ControlCenterOpenSource","deeplink","ControlCenterDeeplink","splittedParams","isIncreaseLimitsDisabled","toLowerCase","ForgotPasswordDeeplinkAction","openForgotPassword","CrossDeepLinkAction","linksNavigation","openPoker","openSport","DeepLinkActionsFactoryLegacyStrategy","_actionsPrototypes","cashier","my_account","redirect","terminate","deepLinkParser","parser","getParserFromCurrentRoute","_createActionsFromParser","getParserFromDeepLinkObject","actionsDescriptors","getActionsDescriptors","getDeepLinkBuilder","actionDescriptor","actionPrototype","DeepLinkActionsFactoryService","_strategies","strategy"],"sourceRoot":""}