{ "version": 3, "sources": ["src/app/services/mixpanel.service.ts"], "sourcesContent": ["import { Injectable, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { Subject, distinctUntilChanged, takeUntil } from 'rxjs';\nimport { environment } from '../../environments/environment';\nimport { appVersion } from '../app.component';\nimport { selectIp, selectUser } from '../ngrx/data.reducer';\nimport { HelperService } from './helper.service';\nimport { HttpService } from './http.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MixpanelService implements OnDestroy {\n ipData: any;\n user: any;\n private destroy$ = new Subject();\n\n constructor(\n private http: HttpService,\n private store: Store,\n private router: Router,\n private helper: HelperService\n ) {\n this.store.select(selectIp)\n .pipe(\n takeUntil(this.destroy$), distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)))\n .subscribe(ip => this.ipData = ip);\n this.store.select(selectUser)\n .pipe(\n takeUntil(this.destroy$), distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)))\n .subscribe(user => this.user = user);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private trackEvent(eventType: string, data: any) {\n const cleanData = this.removeEmptyProperties(data);\n try {\n this.http\n .post(`api/Home/${eventType}`, cleanData, false, false)\n .pipe(takeUntil(this.destroy$), distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr)))\n .subscribe(() => { });\n } catch (error) {\n console.error('An error occurred while tracking event:', error);\n }\n }\n\n private removeEmptyProperties(obj: any): any {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, v]) => v !== null && v !== undefined && v !== '')\n );\n }\n\n private returnUpdatedProductDetails(detail: string): string {\n const cleanedDetail = (detail || '').trim().toLocaleLowerCase();\n switch (cleanedDetail) {\n case 'students only - 15 min':\n case 'only students - 15 min':\n case 'standard - 15 min':\n return '15 Minutes';\n case 'students only - 30 min':\n case 'only students - 30 min':\n case 'advance - 30 min':\n return '30 Minutes';\n case 'audio':\n return 'Voice Chat';\n case 'text':\n return 'Text Chat';\n case 'video':\n return 'Video Chat';\n default:\n return detail || '';\n }\n }\n trackPageVisit(\n apiPath: string = null,\n uniqueName: string = null,\n pageName: string = null,\n ParentPage: string = null,\n ChildPage: string = null,\n SubChildPage: string = null\n ): void {\n const replaceSpecialChars = (str: string) => str ? str.replace(/[-&]/g, (match: string) => (match === '&' ? ' & ' : ' ')) : '';\n const data = this.removeEmptyProperties({\n userId: this.user?.id || 0,\n url: window.location.href,\n pageName: this.helper.capitalizeFirstLetter(pageName) || this.router.url,\n uniqueName,\n categoryName: this.router.url.includes('creators')\n ? this.helper.capitalizeFirstLetter(replaceSpecialChars(this.router.url.split('/')[2]))\n : null,\n ParentPage: this.helper.capitalizeFirstLetter(ParentPage) || this.router.url,\n ChildPage: this.helper.capitalizeFirstLetter(replaceSpecialChars(ChildPage)) || this.router.url,\n SubChildPage: this.helper.capitalizeFirstLetter(replaceSpecialChars(SubChildPage)) ||\n (ParentPage || ChildPage ? 'All' : null),\n loggedInAs: this.helper.capitalizeFirstLetter(this.user?.userType) || 'Visitor',\n ...this.helper.returnExtraDetails()\n });\n this.trackEvent(apiPath || 'mixpanel-page-visit-event', data);\n }\n trackProductEvent(\n eventType: string,\n creatorName: string,\n product: string,\n productDetails: string,\n amount: number,\n username: string,\n paymentGateway?: string,\n paymentMethod?: string\n ): void {\n const data = this.removeEmptyProperties({\n ip: this.ipData?.ip,\n userId: this.user?.id || 0,\n username,\n url: window.location.href,\n operatingSystem: this.helper.capitalizeFirstLetter(this.helper.detectOS()),\n appVersion,\n device: this.helper.capitalizeFirstLetter(this.helper.detectOS()),\n source: 'Browser',\n loggedInAs: this.helper.capitalizeFirstLetter(this.user?.userType) || 'Visitor',\n browser: this.helper.capitalizeFirstLetter(this.helper.detectBrowserName()),\n creatorName,\n product: product.toLowerCase() === 'emeet' || product?.toLowerCase() === 'emeeting' ? 'eMeeting' : this.helper.capitalizeFirstLetter(product),\n productDetails: this.helper.capitalizeFirstLetter(this.returnUpdatedProductDetails(productDetails)),\n amount,\n paymentGateway: this.helper.capitalizeFirstLetter(paymentGateway),\n paymentMethod: this.helper.capitalizeFirstLetter(paymentMethod),\n });\n this.trackEvent(eventType, data);\n }\n}\n"], "mappings": "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", "names": ["MixpanelService", "constructor", "http", "store", "router", "helper", "destroy$", "Subject", "select", "selectIp", "pipe", "takeUntil", "distinctUntilChanged", "prev", "curr", "JSON", "stringify", "subscribe", "ip", "ipData", "selectUser", "user", "ngOnDestroy", "next", "complete", "trackEvent", "eventType", "data", "cleanData", "removeEmptyProperties", "post", "error", "console", "obj", "Object", "fromEntries", "entries", "filter", "_", "v", "returnUpdatedProductDetails", "detail", "trim", "toLocaleLowerCase", "trackPageVisit", "apiPath", "uniqueName", "pageName", "ParentPage", "ChildPage", "SubChildPage", "replaceSpecialChars", "str", "replace", "match", "__spreadValues", "userId", "id", "url", "window", "location", "href", "capitalizeFirstLetter", "categoryName", "includes", "split", "loggedInAs", "userType", "returnExtraDetails", "trackProductEvent", "creatorName", "product", "productDetails", "amount", "username", "paymentGateway", "paymentMethod", "operatingSystem", "detectOS", "appVersion", "device", "source", "browser", "detectBrowserName", "toLowerCase", "\u0275\u0275inject", "HttpService", "Store", "Router", "HelperService", "factory", "\u0275fac", "providedIn", "_MixpanelService"] }