{"version":3,"file":"static/js/service-omg.00466958.chunk.js","mappings":"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","sources":["app-react/services/omg-proxy/omg-message-collection.ts","app-react/services/omg-proxy/omg.service.ts"],"sourcesContent":["import {IServiceFactoryExtended} from \"../service-factory-extended.interface\";\nimport {OmgRawMessage} from \"./omg.service.interface\";\nimport { observable, runInAction, makeObservable } from \"mobx\";\nimport {Check} from \"@sparkware/app-utils\";\nimport {LocalStorageKeys} from \"../storage/local-storage-keys\";\n\nexport class OmgMessageModel {\n constructor(public readonly rawMessage: OmgRawMessage) {\n }\n\n public get id(): string {\n return this.rawMessage[\"@id\"];\n }\n\n public get displayInGame(): boolean {\n const inGame = this.rawMessage[\"@displayInGame\"]?.toString()?.toLowerCase();\n return inGame === 'true' || inGame === '1';\n }\n\n public get messageType(): string {\n return this.rawMessage[\"@messageType\"];\n }\n\n public get templateId(): string {\n return this.rawMessage[\"@templateId\"];\n }\n\n toXml(): string {\n return ``\n }\n}\n\nexport class OmgMessageCollection {\n constructor(private readonly services: IServiceFactoryExtended) {\n makeObservable(this);\n\n this._displayedMessages = this._getPersistedMessages();\n }\n\n @observable\n private _allMessages: OmgMessageModel[] = [];\n\n @observable.ref\n private _displayedMessages: OmgRawMessage[] = [];\n\n push(messages: OmgRawMessage | OmgRawMessage[]): void {\n\n if(!messages) {\n return;\n }\n\n let messagesAsArray: OmgRawMessage[] = [];\n\n if(Check.isArray(messages)) {\n messagesAsArray = messages;\n } else {\n messagesAsArray.push(messages); //this is because if there is only one message the server doesn't return an array but instead an object.\n }\n runInAction(() => {\n for(let m of messagesAsArray) {\n const existingMessageIndex = this._allMessages.findIndex(existingMessage => existingMessage.id === m[\"@id\"]);\n if(existingMessageIndex >= 0) {\n this._allMessages[existingMessageIndex] = new OmgMessageModel(m);\n } else {\n this._allMessages.push(new OmgMessageModel(m));\n }\n }\n });\n }\n\n clear(): void {\n runInAction(() => {\n this._allMessages = [];\n this._displayedMessages = [];\n });\n this._removePersistedMessages();\n }\n\n\n public markMessagesAsDisplayed(displayedMessages: OmgMessageModel[]): void {\n displayedMessages = displayedMessages ?? [];\n const messagesToPersist: Record = this._getPersistedMessages().toDictionary(msg => msg[\"@id\"]);\n for(let newMsg of displayedMessages) {\n messagesToPersist[newMsg.id] = newMsg.rawMessage;\n }\n\n if(Check.isEmpty(messagesToPersist)) {\n this._removePersistedMessages();\n } else {\n this.services.localStorage.setJson(LocalStorageKeys.uccMessages, Object.values(messagesToPersist));\n }\n\n runInAction(() => {\n this._displayedMessages = Object.values(messagesToPersist);\n });\n }\n\n private _removePersistedMessages(): void {\n this.services.localStorage.removeItem(LocalStorageKeys.uccMessages);\n }\n\n private _getPersistedMessages(): OmgRawMessage[] {\n return this.services.localStorage.getJson(LocalStorageKeys.uccMessages) || [];\n }\n\n public getMessagesToDisplay(): OmgMessageModel[] {\n const alreadyDisplayedMessages = this._displayedMessages.toDictionary(msg => msg[\"@id\"]);\n const newMessagesToDisplay: OmgMessageModel[] = [];\n\n for(let msg of this._allMessages) {\n if(!alreadyDisplayedMessages[msg.id]) {\n newMessagesToDisplay.push(msg);\n }\n }\n\n if(newMessagesToDisplay.length > 0) {\n return newMessagesToDisplay.slice(0, Math.min(3, newMessagesToDisplay.length));\n }\n\n return this._allMessages.slice(0, Math.min(3, this._allMessages.length));\n }\n\n}","import {ServiceBase} from \"../ServiceBase\";\nimport {IServiceFactoryExtended} from \"../service-factory-extended.interface\";\nimport {IOmgService} from \"./omg.service.interface\";\nimport {OmgMessageCollection, OmgMessageModel} from \"./omg-message-collection\";\nimport {ExternalLinksZIndexes} from \"../external-links/external-links-z-indexes\";\nimport {GNWP_SOURCES} from \"../gnwp/gnwp-consts\";\nimport {Check} from \"@sparkware/app-utils\";\nimport {IOpenOmgOptions} from \"../external-links/external-links.service.interface\";\nimport {when} from \"mobx\";\nimport {\n IOMGParsedData\n} from \"../../../sdk/src/services/player_messages_service/firebase/handlers/messages_handler_interfaces\";\n\ninterface IShowMessagesOptions {\n markAsDisplayed: boolean;\n}\n\nexport class OmgService extends ServiceBase implements IOmgService {\n\n constructor(services: IServiceFactoryExtended) {\n super(services);\n\n this._messageCollection = new OmgMessageCollection(services);\n this._routesToBeIgnored = this._parseRoutesToBeIgnored();\n\n\n this.reaction(() => this.services.user.isAuthorized,\n this._onAuthorizationStateChangedHandler,\n {\n fireImmediately: true\n });\n\n this.services.sdk.events.onFirebaseOmgReceived(this._onFirebaseOmgReceivedHandler)\n\n this.services.sdk.events.onExternalLinkClosed(this._onExternalLinkClosedHandler);\n\n this.services.sdk.events.onDepositWidgetClosed(this._onDepositWidgetClosedHandler)\n }\n\n private readonly _routesToBeIgnored: string[] = [];\n\n private _parseRoutesToBeIgnored(): string[] {\n const ignorePopupURLs = this.services.configuration.servicesConfigs.Omg.ignorePopopURLs;\n if(!ignorePopupURLs) {\n return [];\n }\n\n try {\n const result = JSON.parse(ignorePopupURLs);\n if(Check.isArray(result)) {\n return result.map(path => path.toString().toLowerCase())\n } else {\n this.services.logger.error(`Omg.ignorePopopURLs configuration is not an array of strings`);\n }\n\n } catch (err) {\n this.services.logger.error(`Failed to parse Omg.ignorePopopURLs configuration`, err);\n return [];\n }\n }\n\n private _shouldIgnoreOmgForCurrentRoute(): boolean {\n const currentPathName = this.services.location.currentUri.pathName.toString().toLowerCase();\n for(let route of this._routesToBeIgnored) {\n if(currentPathName.startsWith(route)) {\n return true;\n }\n }\n\n return false;\n }\n\n\n private _onAuthorizationStateChangedHandler = async (isAuthorized: boolean): Promise => {\n if(isAuthorized) {\n await this._readOmgMessagesFromServer();\n await this._showMessages(this._messageCollection.getMessagesToDisplay(), {\n markAsDisplayed: true\n });\n } else {\n this._messageCollection.clear();\n }\n }\n\n private _onExternalLinkClosedHandler = async (source: string) => {\n if (GNWP_SOURCES.CASHIER === source || GNWP_SOURCES.MY_ACCOUNT === source || GNWP_SOURCES.OMG === source) {\n await this._readOmgMessagesFromServer();\n }\n }\n\n private _onDepositWidgetClosedHandler = async () => {\n await this._readOmgMessagesFromServer();\n }\n\n private _onFirebaseOmgReceivedHandler = async (omgData: IOMGParsedData) => {\n let zIndex: ExternalLinksZIndexes = ExternalLinksZIndexes.Omg;\n if((await this.services.gameRunner).currentRunningGame && omgData.OpenedWithinGame === '0') {\n zIndex = ExternalLinksZIndexes.OmgBehindTheGame;\n }\n await this._openOMG({\n messages: omgData.Messages,\n openedWithinGame: omgData.OpenedWithinGame,\n zIndex: zIndex\n });\n }\n\n get numberOfAwaitingMessages() {\n return this._messageCollection.getMessagesToDisplay().length;\n }\n\n private readonly _messageCollection: OmgMessageCollection;\n\n\n public async openOmgAwaitingMessages(): Promise {\n await this._showMessages(this._messageCollection.getMessagesToDisplay(), {\n markAsDisplayed: true\n });\n }\n\n private async _readOmgMessagesFromServer() {\n const response = await this.services.api.oMGController.getAwaitingMessages();\n\n if(response.MessagesJSON) {\n this._messageCollection.push(response.MessagesJSON);\n } else {\n this._messageCollection.clear();\n }\n }\n\n private _convertMessagesToXml(messagesToDisplay: OmgMessageModel[]): string {\n return `${messagesToDisplay.map(msg => msg.toXml()).join()}`\n }\n\n private async _showMessages(messagesToDisplay: OmgMessageModel[], options: IShowMessagesOptions): Promise {\n if(messagesToDisplay.length === 0) {\n return;\n }\n\n if(options.markAsDisplayed) {\n this._messageCollection.markMessagesAsDisplayed(messagesToDisplay);\n }\n\n await this._openOMG({\n messages: this._convertMessagesToXml(messagesToDisplay),\n openedWithinGame: '0',\n zIndex: ExternalLinksZIndexes.OmgBehindTheGame\n });\n }\n\n private async _openOMG(options: IOpenOmgOptions): Promise {\n if(!this._shouldIgnoreOmgForCurrentRoute()) {\n if (this.services.onboardingTour.isOpened) {\n when(() => !this.services.onboardingTour.isOpened, async () => {\n await (await this.services.externalLinks).openOMG(options);\n })\n } else {\n await (await this.services.externalLinks).openOMG(options);\n }\n }\n }\n}\n"],"names":["OmgMessageModel","rawMessage","this","inGame","toString","toLowerCase","id","templateId","messageType","displayInGame","OmgMessageCollection","observable","services","makeObservable","_displayedMessages","_getPersistedMessages","messages","messagesAsArray","Check","push","runInAction","m","existingMessageIndex","_allMessages","findIndex","existingMessage","_removePersistedMessages","displayedMessages","messagesToPersist","toDictionary","msg","newMsg","localStorage","setJson","LocalStorageKeys","Object","values","removeItem","getJson","alreadyDisplayedMessages","newMessagesToDisplay","length","slice","Math","min","OmgService","_routesToBeIgnored","_onAuthorizationStateChangedHandler","isAuthorized","_readOmgMessagesFromServer","_showMessages","_messageCollection","getMessagesToDisplay","markAsDisplayed","clear","_onExternalLinkClosedHandler","source","GNWP_SOURCES","_onDepositWidgetClosedHandler","_onFirebaseOmgReceivedHandler","omgData","zIndex","ExternalLinksZIndexes","gameRunner","currentRunningGame","OpenedWithinGame","_openOMG","Messages","openedWithinGame","_parseRoutesToBeIgnored","reaction","user","fireImmediately","sdk","events","onFirebaseOmgReceived","onExternalLinkClosed","onDepositWidgetClosed","ignorePopupURLs","configuration","servicesConfigs","Omg","ignorePopopURLs","result","JSON","parse","map","path","logger","error","err","currentPathName","location","currentUri","pathName","route","startsWith","api","oMGController","getAwaitingMessages","response","MessagesJSON","messagesToDisplay","toXml","join","options","markMessagesAsDisplayed","_convertMessagesToXml","_shouldIgnoreOmgForCurrentRoute","onboardingTour","isOpened","when","externalLinks","openOMG","ServiceBase"],"sourceRoot":""}