@vgroup/dialbox 0.1.59 → 0.1.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"vgroup-dialbox.mjs","sources":["../../../projects/dialbox/src/lib/dialbox.service.ts","../../../projects/dialbox/src/lib/dialbox.component.ts","../../../projects/dialbox/src/lib/environments/environments.ts","../../../projects/dialbox/src/lib/keypad.ts","../../../projects/dialbox/src/lib/service/ip-address.service.ts","../../../projects/dialbox/src/lib/service/extension.service.ts","../../../projects/dialbox/src/lib/shared/global-constant.ts","../../../projects/dialbox/src/lib/service/notification.service.ts","../../../projects/dialbox/src/lib/service/twilio.service.ts","../../../projects/dialbox/src/lib/components/call-progress/incoming-call/incoming-call.component.ts","../../../projects/dialbox/src/lib/components/call-progress/incoming-call/incoming-call.component.html","../../../projects/dialbox/src/lib/components/call-progress/call-progress.component.ts","../../../projects/dialbox/src/lib/components/call-progress/call-progress.component.html","../../../projects/dialbox/src/lib/components/caller-id-dialog/caller-id-dialog.component.ts","../../../projects/dialbox/src/lib/components/caller-id-dialog/caller-id-dialog.component.html","../../../projects/dialbox/src/lib/dialbox.module.ts","../../../projects/dialbox/src/public-api.ts","../../../projects/dialbox/src/vgroup-dialbox.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialboxService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-dialbox',\n template: `\n <p>\n dialbox works!\n </p>\n `,\n styles: [\n ]\n})\nexport class DialboxComponent {\n\n}\n","export const environment = {\r\n abb: \"d\",\r\n production: false,\r\n secureCookies: true,\r\n feUrl: 'https://dev.vgroupinc.com:91/',\r\n apiUrl: 'https://apis.vgroupinc.com/test_softphone',\r\n captchaKey: \"6LfpOmEaAAAAAGsI6JXlMzOl3b7rW4YmYXFDjldD\",\r\n stripePublishableKey: \"pk_test_51K6aTuBiNVV2TMlQfmBWY8jziwiDo0IZ3TrqWPqth1m32cpMAAg5Qpi2AlSMDEAX6hCZRBXoTzBB1uQQLc8B4tco00q2SgG6zO\",\r\n sessionTimeout: 15,\r\n deviceType: \"web\",\r\n appVersion: \"2.3\",\r\n channelId: '61481b12e138eb7dc3007579',\r\n c2c_support_point_id: '60424735f74ac306c1bfa900',\r\n c2c_support_channel_id: '677f67f3be93ab507fbbfdfc',\r\n c2c_point_url: 'https://bit.ly/3blWnPv',\r\n c2c_call_label_id: 'ye2XFLfOHCr12GFVRzPh',\r\n c2c_email_label_id: 'mvjVgOP2VCiYsVovQqdq',\r\n radarAPIKey: 'prj_live_sk_569b6f639edde6120a26f703511c61aaecd3f7ef',\r\n firebase: {\r\n apiKey: \"AIzaSyCA8LSPrqlDq_thk26LhBQexAQeY6pkU5Y\",\r\n authDomain: \"softphone-d5777.firebaseapp.com\",\r\n projectId: \"softphone-d5777\",\r\n storageBucket: \"softphone-d5777.appspot.com\",\r\n messagingSenderId: \"850812494538\",\r\n appId: \"1:850812494538:web:74f8a30fc18e28ded78a33\",\r\n measurementId: \"G-NGXTSV9SH3\",\r\n vapidKey: \"BD6EgcQgbZTjOQfleG3YlEc0_SajB03prqTdDy-qGJkxTxezbq-A_qtuXE1l3yT47o8hnTAbTKBcH15D2AJB2To\"\r\n },\r\n perspectiveApiKey: 'AIzaSyClf32lvLH4QOy-vOnzLzwSNntKIgapH8s'\r\n};\r\n\r\n\r\n","export const keypad: any[] =\r\n [\r\n {\r\n num: 1,\r\n text: 'voicemail'\r\n },\r\n {\r\n num: 2,\r\n text: 'abc'\r\n },\r\n {\r\n num: 3,\r\n text: 'def'\r\n }, {\r\n num: 4,\r\n text: 'ghi'\r\n }, {\r\n num: 5,\r\n text: 'jkl'\r\n }, {\r\n num: 6,\r\n text: 'mno'\r\n }, {\r\n num: 7,\r\n text: 'pqrs'\r\n }, {\r\n num: 8,\r\n text: 'tuv'\r\n }, {\r\n num: 9,\r\n text: 'wxyz'\r\n },\r\n {\r\n num: '*',\r\n text: ' '\r\n },\r\n {\r\n num: 0,\r\n text: '+'\r\n },\r\n {\r\n num: '#',\r\n text: ''\r\n }\r\n ];\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { environment } from \"../environments/environments\";\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IpAddressService {\r\n private apiUrl = 'https://api.radar.io/v1/geocode/ip';\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n getIpAddressInfo(): Observable<any> {\r\n const authKey = environment.radarAPIKey;\r\n const httpOptions = {\r\n headers: new HttpHeaders({ 'Authorization': authKey }),\r\n fraud: true\r\n } as any;\r\n\r\n return this.http.get(this.apiUrl, httpOptions).pipe(\r\n catchError((error) => {\r\n return throwError(new Error(\"Network is blocking the server, please check the proxy or your network.\"));\r\n })\r\n );\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\r\nimport { environment } from \"../environments/environments\";\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { IpAddressService } from './ip-address.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExtensionService {\r\n private callSid: string = '';\r\n private recordCall: any;\r\n\r\n messageSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n private channelId = environment.channelId;\r\n currentMessage = this.messageSource.asObservable();\r\n platform: string = 'web';\r\n\r\n dedicatedStateSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n dedicatedState = this.dedicatedStateSource.asObservable();\r\n callerIdStateSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n callerIdState = this.callerIdStateSource.asObservable();\r\n sendSmsSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n sendMessage = this.sendSmsSource.asObservable();\r\n draftSmsSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n draftMessage = this.draftSmsSource.asObservable();\r\n isInputFocus$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n token: string = localStorage.getItem('ext_token') || '';\r\n isNewContactAdded: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n isProfileUpdated: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private callerIdSubject = new BehaviorSubject<any>(null);\r\n callerId$ = this.callerIdSubject.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private ipAddressService: IpAddressService,\r\n ) {}\r\n\r\n setCallSid(callSid:any, recordCall:any){\r\n this.callSid = callSid;\r\n this.recordCall = recordCall;\r\n }\r\n getCallSid(){\r\n return {\r\n callSid: this.callSid,\r\n recordCall: this.recordCall\r\n }\r\n }\r\n setCallerId(callerId:any){\r\n this.callerIdSubject.next(callerId);\r\n }\r\n changeMessage(message:any){\r\n this.messageSource.next(message);\r\n }\r\n\r\n initiateCall(payload: any): Observable<any> {\r\n return this.fetchBlockedCountries().pipe(\r\n switchMap((blockedCountries: string[]) => {\r\n return this.ipAddressService.getIpAddressInfo().pipe(\r\n switchMap((ipAddressInfo: any) => {\r\n const params = {\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': 'Bearer ' + localStorage.getItem('ext_token'),\r\n 'ip-address': ipAddressInfo.ip,\r\n 'ip-country': ipAddressInfo.address.country,\r\n };\r\n payload = { ...payload, proxy: ipAddressInfo.proxy.toString() };\r\n const httpOptions = { headers: new HttpHeaders(params) };\r\n return this.http.post(environment.apiUrl + '/utilities/ext/ur/initiate/call', payload, httpOptions).pipe(\r\n catchError(error => {\r\n return throwError(error);\r\n })\r\n );\r\n }),\r\n catchError(error => {\r\n return throwError(error);\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n fetchBlockedCountries(){\r\n return this.http.get<any>(environment.apiUrl + '/global/master/ur/blacklisted/countrylist').pipe(\r\n map((response:any) => {\r\n if (response.response === 'Success' && Array.isArray(response.countries)) {\r\n return response.countries.map((country:any) => country.isocode);\r\n } else {\r\n throw new Error('Unable to fetch blocked countries');\r\n }\r\n })\r\n )\r\n }\r\n\r\n getIncomingCallToken(deviceId:any){\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n }\r\n const params = new HttpParams().set('deviceId', deviceId);\r\n return this.http.get(environment.apiUrl + '/utilities/twilio/incomingcall/token/web', { headers, params});\r\n }\r\n\r\n getOutgoingCallToken(payload:any){\r\n const params = {\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token'),\r\n 'c2c-request': (window as any).location.hostname\r\n }\r\n const httpOptions = { headers: new HttpHeaders(params) };\r\n return this.http.post(environment.apiUrl + '/utilities/ext/ur/generate/token', payload, httpOptions);\r\n }\r\n\r\n getCallRecording(callSid:any){\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': 'Bearer ' + localStorage.getItem('ext_token')\r\n })\r\n const httpOptions = { headers: headers };\r\n return this.http.post(environment.apiUrl + '/utilities/twilio/call/callrecording?callSid='+callSid, {}, httpOptions);\r\n }\r\n\r\n pauseOrResumeRecording(callSid:string, status:'pause'|'resume'){\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': 'Bearer ' + localStorage.getItem('ext_token')\r\n });\r\n const httpOptions = { headers: headers };\r\n return this.http.post(environment.apiUrl + `/utilities/twilio/update/recording/status?callSid=${callSid}&status=${status}`, {}, httpOptions);\r\n }\r\n\r\n getCallStatus(callAuthId:string){\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': 'Bearer ' + localStorage.getItem('ext_token')\r\n });\r\n const httpOptions = { headers: headers };\r\n return this.http.get(environment.apiUrl + `/utilities/twilio/call/status/${callAuthId}`, httpOptions);\r\n }\r\n\r\n // sms & phonebook APIs (selected subset used by UI)\r\n readContacts(token:string){\r\n const params = {\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': \"Bearer \" + token\r\n }\r\n const httpOptions = { headers: new HttpHeaders(params)};\r\n return this.http.get(environment.apiUrl + '/utilities/phonebook/read/contacts', httpOptions);\r\n }\r\n\r\n sendSms(c2c_latlong:string, c2c_request:string, dtModel:any){\r\n return this.fetchBlockedCountries().pipe(\r\n switchMap((blockedCountries:string[]) => {\r\n return this.ipAddressService.getIpAddressInfo().pipe(\r\n switchMap((ipAddressInfo:any) => {\r\n if (blockedCountries.includes(ipAddressInfo.address.countryCode)) {\r\n return throwError({message:['User from blocked country']});\r\n } else {\r\n const params = {\r\n 'Content-Type': 'application/json',\r\n 'c2c-latlong': c2c_latlong,\r\n 'c2c-request': c2c_request,\r\n 'ip-address': ipAddressInfo.ip,\r\n 'ip-country': ipAddressInfo.address.country,\r\n }\r\n dtModel = { ...dtModel, proxy: ipAddressInfo.proxy.toString() };\r\n const httpOptions = { headers: new HttpHeaders(params)};\r\n return this.http.post(environment.apiUrl + '/utilities/ext/ur/send/sms', dtModel, httpOptions).pipe(\r\n catchError(error => throwError(error))\r\n );\r\n }\r\n }),\r\n catchError(error => throwError(error))\r\n )\r\n }),\r\n catchError(error => throwError(error))\r\n )\r\n }\r\n\r\n getUserInformation(twilioAuthId: string){\r\n const httpOptions = { \r\n headers: new HttpHeaders({ \r\n 'Content-Type': 'application/json', \r\n 'Auth-Key': 'Bearer ' + this.token \r\n })\r\n };\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/twilio/c2c/information/'+twilioAuthId, httpOptions);\r\n }\r\n\r\n getIPDetailsForCall(recordId: string, callStatus: string, deviceId?: any): Observable<any> {\r\n return this.ipAddressService.getIpAddressInfo().pipe(\r\n switchMap((ipAddressInfo: any) => {\r\n const IpObj = {\r\n 'ipAddress': ipAddressInfo.ip,\r\n 'ipCountry': ipAddressInfo.address.country,\r\n 'recordId': recordId,\r\n 'callStatus': callStatus,\r\n };\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token'), 'deviceId': deviceId }) };\r\n \r\n return this.http.post<[]>(environment.apiUrl + '/utilities/twilio/incoming/call/ip', IpObj, httpOptions).pipe(\r\n catchError(postError => {\r\n // console.log('Error during HTTP POST request:', postError);\r\n return throwError(postError);\r\n })\r\n );\r\n }),\r\n catchError(ipError => {\r\n // console.log('Error fetching IP address info:', ipError);\r\n return throwError(ipError);\r\n })\r\n );\r\n }\r\n}\r\n\r\n\r\n","export const GlobalConstant = {\r\n ErrorMsg500: \"Unable to process request. Please try again later.\",\r\n isSMSVisible: true,\r\n dedicatedNumText: 'C2C Number'\r\n};\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Call } from '@twilio/voice-sdk';\r\nimport { TwilioService } from './twilio.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n twilioCallData?: Call;\r\n twilioAuthId?: string;\r\n\r\n constructor(\r\n private twilioService: TwilioService\r\n ) {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.addEventListener('message', this.handleServiceWorkerMessage.bind(this));\r\n }\r\n }\r\n\r\n redirectUrl = window.location.href;\r\n showNotification(callData: any) {\r\n this.twilioAuthId = callData.customParameters.get('twilioAuthId');\r\n this.twilioCallData = callData;\r\n const incomingNumber = callData.parameters.From;\r\n const callerName = callData.customParameters.get('name');\r\n const callerImage = callData.customParameters.get('image');\r\n if (('serviceWorker' in navigator))\r\n {\r\n navigator.serviceWorker.ready.then((registration: any) => {\r\n const options = {\r\n body: `Incoming call from ${callerName || incomingNumber}`,\r\n icon: callerImage,\r\n actions: [\r\n { \r\n action: 'accept', \r\n title: 'Accept', \r\n icon: '../../../assets/images/notification-icons/call-accept-icon.png' \r\n },\r\n { \r\n action: 'reject', \r\n title: 'Reject', \r\n icon: '../../../assets/images/notification-icons/call-reject-icon.jpg' \r\n }\r\n ],\r\n data: {\r\n url: this.redirectUrl,\r\n },\r\n requireInteraction: true,\r\n \r\n };\r\n registration.showNotification('Icoming Call', options);\r\n })\r\n }\r\n }\r\n\r\n private handleServiceWorkerMessage(event: MessageEvent) {\r\n if (!event.data) return;\r\n \r\n switch (event.data.action) {\r\n case 'accept':\r\n this.onNotificationAccept();\r\n break;\r\n case 'reject':\r\n this.onNotificationReject();\r\n break;\r\n default:\r\n console.log('default action:');\r\n break;\r\n }\r\n }\r\n onNotificationAccept(){\r\n this.twilioService.callhandleFromNotification.next({ callStatus: 'accept'})\r\n }\r\n \r\n onNotificationReject(){\r\n this.twilioService.callhandleFromNotification.next({ callStatus: 'reject'})\r\n }\r\n \r\n}\r\n\r\n\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, shareReplay, tap } from 'rxjs/operators';\r\nimport { Device, Call } from '@twilio/voice-sdk';\r\nimport { ExtensionService } from './extension.service';\r\nimport { NotificationService } from './notification.service';\r\nimport { environment } from '../environments/environments';\r\n\r\nexport interface DialPayload {\r\n number: string;\r\n name: string;\r\n img: string;\r\n callerId: string;\r\n isDialFromHistory: boolean;\r\n from: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root' \r\n})\r\nexport class TwilioService {\r\n \r\n openInProgressDialpad = new BehaviorSubject<boolean>(false);\r\n currentCall = new BehaviorSubject<Call | null>(null);\r\n currentCallState = new BehaviorSubject<any>('none'); //in-progress, out-progress, none\r\n device:any;\r\n incomingCallToken?:string;\r\n outgoingCallToken?:string;\r\n callType = new BehaviorSubject<string>('NIL');\r\n isIncomingCallPicked = new BehaviorSubject<boolean>(false); // for both incoming and outgoing\r\n token:any = localStorage.getItem('ext_token');\r\n isNewContactAdded = new BehaviorSubject<boolean>(false);\r\n updateRecentCall = new BehaviorSubject<boolean>(false);\r\n callhandleFromNotification = new BehaviorSubject<any>({});\r\n\r\n endCall = new BehaviorSubject<boolean>(false);\r\n dialNumberFromOtherModule = new BehaviorSubject<DialPayload>({ number: '', name: '', img: '', callerId: '', isDialFromHistory: false, from: '' });\r\n\r\n toggleCallerIdAlert = new BehaviorSubject<boolean>(true);\r\n isTrialOver = new BehaviorSubject<boolean>(false);\r\n isPaymentDue = new BehaviorSubject<boolean>(false);\r\n isAvailableNumber = new BehaviorSubject<boolean>(false);\r\n callerIdList = new BehaviorSubject<any[]>([]);\r\n triggerSMSReload = new BehaviorSubject<boolean>(false);\r\n\r\n private tokenInitialized = false;\r\n private tokenInitialization$: Observable<any> | null = null;\r\n deviceId: any;\r\n\r\n constructor(\r\n private http: HttpClient, \r\n private extensionService: ExtensionService,\r\n private notificationSerivce: NotificationService\r\n ) {\r\n this.initializeToken();\r\n }\r\n\r\n private initializeToken() {\r\n if (this.tokenInitialized) {\r\n return this.tokenInitialization$ || of(null);\r\n }\r\n\r\n this.tokenInitialization$ = this.extensionService.getIncomingCallToken(this.deviceId).pipe(\r\n tap((data: any) => {\r\n this.incomingCallToken = data.token;\r\n localStorage.setItem('in-token', data.token);\r\n this.tokenInitialized = true;\r\n console.log('dfdfdsfdsfds');\r\n this.initializeDevice();\r\n }),\r\n catchError(error => {\r\n console.error('Error initializing Twilio token:', error);\r\n return throwError(() => error);\r\n }),\r\n shareReplay(1) // Cache the result for subsequent subscribers\r\n );\r\n\r\n return this.tokenInitialization$;\r\n }\r\n\r\n public initializeTwilioDevice(deviceId: any) {\r\n this.deviceId = deviceId;\r\n if (this.tokenInitialized && this.incomingCallToken) {\r\n this.initializeDevice();\r\n } else {\r\n this.initializeToken().subscribe();\r\n }\r\n }\r\n\r\n private initializeDevice() {\r\n if (this.device) {\r\n this.device.destroy();\r\n }\r\n\r\n if (!this.incomingCallToken) {\r\n console.error('No Twilio token available');\r\n return;\r\n }\r\n\r\n this.device = new Device(this.incomingCallToken, { \r\n allowIncomingWhileBusy: true,\r\n closeProtection: true\r\n });\r\n console.log(\"device created\")\r\n \r\n this.device.register();\r\n\r\n this.device.on('incoming', (call: Call) => {\r\n console.log(\"incoming call\",call)\r\n this.currentCall.next(call);\r\n this.callType.next('INCOMING');\r\n this.currentCallState.next('incoming');\r\n this.notificationSerivce.showNotification(call);\r\n });\r\n\r\n this.device.on('error', (error: any) => {\r\n console.error('Twilio Device Error:', error);\r\n // Reset initialization state on error to allow retry\r\n this.tokenInitialized = false;\r\n });\r\n\r\n this.device.on('registered', () => {\r\n console.log('Twilio Device registered successfully');\r\n });\r\n\r\n this.device.on('unregistered', () => {\r\n console.log('Twilio Device unregistered');\r\n this.tokenInitialized = false;\r\n });\r\n }\r\n\r\n // onIncomingCall(){\r\n // this.device.on('incoming', (call:any) => {\r\n // console.log(call);\r\n \r\n // //call.accept();\r\n // });\r\n // }\r\n saveContact(payload: any): Observable<[]> {\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/add/contacts/manually', payload, httpOptions);\r\n }\r\n updateContact(payload:any){\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + this.token}) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/update/contact', payload, httpOptions);\r\n }\r\n \r\n deleteContact(id:string){\r\n let payload = {\r\n phonebookid: id\r\n }\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/delete/contact/'+id,payload, httpOptions);\r\n }\r\n getContactList(){\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/phonebook/read/contacts', httpOptions);\r\n }\r\n\r\n addContactToFavourite(payload: any){\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/update/favourite', payload, httpOptions);\r\n }\r\n\r\n getFavouritContacts(){\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/phonebook/favourite/contacts', httpOptions);\r\n }\r\n\r\n getRecentCalls(pageIndex?: string, pageSize?: string,){\r\n // let params = new HttpParams();\r\n // params = params.set('size', pageSize);\r\n // params = params.set('page', pageIndex);\r\n const headers = { 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') };\r\n const httpOptions ={headers}\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/phonebook/recent/calls', httpOptions);\r\n }\r\n deleteRecentCallLog(id:string| string[]){\r\n let payload = {\r\n recordId: id\r\n }\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/delete/calls/'+id,payload, httpOptions);\r\n }\r\n\r\n uploadPhoto(payload: any){\r\n let httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n })\r\n };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/upload/photo',payload, httpOptions);\r\n }\r\n\r\n deletePhoto(id:string){\r\n let payload = {\r\n phonebookid: id\r\n }\r\n let httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n })\r\n };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/delete/photo/'+id,payload, httpOptions);\r\n }\r\n\r\n // toggleCallerIdAlertFn(val: any) {\r\n // let httpOptions = {\r\n // headers: new HttpHeaders({\r\n // 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n // })\r\n // };\r\n // return this.http.put<[]>(environment.apiUrl + '/utilities/softphone/callerid/alert/' + val, {}, httpOptions);\r\n // }\r\n toggleCoutryCodeToast(val:any){\r\n let httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n })\r\n };\r\n return this.http.put<[]>(environment.apiUrl + '/utilities/softphone/countrycode/alert/' + val, {}, httpOptions);\r\n }\r\n getToNumber(dialledNo: string, isoCode: string) {\r\n const httpOptions = {\r\n headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }),\r\n params: new HttpParams().set('isoCode', isoCode)\r\n };\r\n const params = new HttpParams().set('isoCode', isoCode)\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/softphone/check/countryCode/' + dialledNo, httpOptions);\r\n } \r\n \r\n}\r\n\r\n\r\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Call } from '@twilio/voice-sdk';\r\nimport { ExtensionService } from '../../../service/extension.service';\r\nimport { TwilioService } from '../../../service/twilio.service';\r\nimport { GlobalConstant } from '../../../shared/global-constant';\r\nimport { NotificationService } from '../../../service/notification.service';\r\nimport swal from 'sweetalert2';\r\nimport { interval, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-incoming-call',\r\n templateUrl: './incoming-call.component.html',\r\n styleUrls: ['./incoming-call.component.css']\r\n})\r\nexport class IncomingCallComponent implements OnInit {\r\n @Input() incomingCallData:any;\r\n @Input() newIncomingCallsList:any;\r\n @Input() deviceId:any;\r\n showRingAnimation:boolean=true;\r\n selectedIncomingCall:any={};\r\n twilioCallData?: Call;\r\n twilioAuthId?:string;\r\n dedicatedNum:string='';\r\n CallSid:any;\r\n recordCall?:boolean;\r\n shouldRecordCall:boolean=false;\r\n isClickExpand:boolean=false;\r\n isRecording:boolean=false;\r\n isPaused:boolean=false;\r\n isTwilioConnected:boolean=false;\r\n @Output() closeIncomingCallDiv: EventEmitter<{show:number, call:any}> = new EventEmitter<{show:number, call:any}>();\r\n @Output() incomingCallsNewList: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() selectedIncomingCallInfo: EventEmitter<any> = new EventEmitter<any>();\r\n isMute?:boolean;\r\n disbaleEndCallBtn:boolean=false;\r\n incomingCallSid:string='';\r\n incomingRecordCall:boolean=false;\r\n timerSubscription?: Subscription;\r\n timeElapsed:number=0;\r\n\r\n constructor(\r\n private extensionService: ExtensionService,\r\n private twilioService: TwilioService,\r\n private notificationSerivce: NotificationService,\r\n ) {\r\n console.log('IncomingCallComponent')\r\n }\r\n ngOnInit(): void {\r\n console.log('IncomingCallComponent ngOnInit');\r\n try {\r\n this.twilioService.currentCall.subscribe((call:any) => {\r\n if (call) {\r\n this.twilioCallData = call;\r\n this.twilioAuthId = call.customParameters.get('twilioAuthId');\r\n if (!call.parameters) { call.parameters = {}; }\r\n this.sendIPforIncomingCall(this.twilioAuthId,'');\r\n\r\n call.on('cancel', () => {\r\n if (this.incomingCallData && this.incomingCallData.parameters && this.incomingCallData.parameters.CallSid) {\r\n this.newIncomingCallsList = this.newIncomingCallsList.filter((item:any) => item.parameters && item.parameters.CallSid !== this.incomingCallData.parameters.CallSid);\r\n }\r\n this.rejectCallFromList(call);\r\n });\r\n call.on('disconnect', () => {\r\n if (this.incomingCallData && this.incomingCallData.parameters && this.incomingCallData.parameters.CallSid) {\r\n this.newIncomingCallsList = this.newIncomingCallsList.filter((item:any) => item.parameters && item.parameters.CallSid !== this.incomingCallData.parameters.CallSid);\r\n }\r\n this.rejectCallFromList(call);\r\n })\r\n }\r\n })\r\n } catch(e){\r\n console.log(e)\r\n }\r\n }\r\n\r\n acceptCallFromList(data?:any){\r\n if (!data) { return; }\r\n // Disconnect any other connected call before accepting this one\r\n if (this.newIncomingCallsList && this.newIncomingCallsList.length) {\r\n const otherConnected = this.newIncomingCallsList.find((item:any) => item.isCallConnected && item !== data);\r\n if (otherConnected) {\r\n try { otherConnected.disconnect(); } catch {}\r\n otherConnected.isCallConnected = false;\r\n otherConnected.isFirstCall = false; \r\n }\r\n }\r\n\r\n // Accept this call and mark as the active one\r\n data.accept();\r\n data.isCallConnected = true;\r\n data.isFirstCall = true;\r\n this.sendIPforIncomingCall(data.customParameters.get('twilioAuthId'), 'answered').then(() => {\r\n this.extensionService.setCallSid(this.CallSid, this.recordCall);\r\n this.closeIncomingCallWrapper(1);\r\n });\r\n }\r\n\r\n rejectCallFromList(data?:any){\r\n if (!data) return;\r\n if (data.reject) data.reject();\r\n if (data.disconnect) data.disconnect();\r\n if (data.parameters) {\r\n data.parameters['isCallConnected'] = false; // Should be false when rejecting\r\n }\r\n\r\n if (data.customParameters) {\r\n this.sendIPforIncomingCall(data.customParameters.get('twilioAuthId'), 'answered')\r\n }\r\n\r\n if (this.newIncomingCallsList && data && data.parameters && data.parameters.CallSid) {\r\n this.newIncomingCallsList = this.newIncomingCallsList.filter((item:any) => item.parameters && item.parameters.CallSid !== data.parameters.CallSid);\r\n this.incomingCallsNewList.emit(this.newIncomingCallsList);\r\n if (this.newIncomingCallsList.length == 0) {\r\n this.closeIncomingCallDiv.emit({show: 0, call: data});\r\n }\r\n }\r\n }\r\n\r\n closeIncomingCallWrapper(val:any){\r\n this.closeIncomingCallDiv.emit({show: val, call: this.twilioCallData});\r\n }\r\n toggleMute(data:any){\r\n this.isMute = !this.isMute;\r\n data.mute(this.isMute)\r\n }\r\n\r\n sendIPforIncomingCall(recordId:any, callstatus:any): Promise<void> {\r\n console.log('sendIPforIncomingCall')\r\n return new Promise((resolve, reject) => {\r\n this.extensionService.getIPDetailsForCall(recordId, callstatus, this.deviceId).subscribe((res:any) => {\r\n const resp: any = res;\r\n if (res.status == 200) {\r\n if (resp.callAuth) {\r\n this.CallSid = resp.callAuth.callSid;\r\n this.recordCall = resp.callAuth.recordCall;\r\n // Handle the recordCall flag\r\n if (resp.callAuth.recordCall) {\r\n this.shouldRecordCall = true;\r\n } else {\r\n this.shouldRecordCall = false;\r\n }\r\n } else {\r\n // swal(\"Error\", \"Missing call authentication details.\", \"error\");\r\n }\r\n resolve();\r\n } else {\r\n swal(\"Error\", resp.message.join(\"<br/>\"), \"error\");\r\n resolve();\r\n }\r\n }, (error:any) => {\r\n swal(\"Error\", GlobalConstant.ErrorMsg500, \"error\");\r\n resolve();\r\n })\r\n })\r\n }\r\n\r\n onUserInfoByCallSid(){\r\n if (this.selectedIncomingCall && this.selectedIncomingCall.userInfo) {\r\n }\r\n return this.selectedIncomingCall ? Object.keys(this.selectedIncomingCall).length ? true : false : false;\r\n }\r\n\r\n onClickExpand(data?: any): void {\r\n if (this.selectedIncomingCall === data && this.isClickExpand) {\r\n this.isClickExpand = false;\r\n this.selectedIncomingCall = null;\r\n this.selectedIncomingCallInfo.emit({});\r\n return;\r\n }\r\n this.isClickExpand = true;\r\n this.selectedIncomingCall = data;\r\n \r\n if (this.selectedIncomingCall) {\r\n this.selectedIncomingCall['isClickExpand'] = true;\r\n \r\n if (this.newIncomingCallsList && this.newIncomingCallsList.length > 0) {\r\n this.newIncomingCallsList.forEach((call:any) => {\r\n if (call !== this.selectedIncomingCall) {\r\n call['isClickExpand'] = false;\r\n }\r\n });\r\n }\r\n this.selectedIncomingCallInfo.emit(this.selectedIncomingCall)\r\n \r\n if (!this.selectedIncomingCall.userInfo || this.selectedIncomingCall.userInfo.status == 201){\r\n this.getUserInformation(this.selectedIncomingCall)\r\n }\r\n }\r\n }\r\n\r\n getUserInformation(incomingCallData:any) {\r\n let data = this.fromEntries(Array.from(incomingCallData.customParameters.entries()));\r\n this.extensionService.getUserInformation(data['twilioAuthId']).subscribe(response => {\r\n setTimeout(()=>{\r\n incomingCallData['userInfo'] = response\r\n }, 5000)\r\n }, error => {\r\n console.error('Error starting recording', error);\r\n })\r\n }\r\n\r\n fromEntries(entries: [string, any][]): Record<string, any> {\r\n return entries.reduce((acc, [key, value]) => {\r\n (acc as any)[key] = value;\r\n return acc;\r\n }, {} as Record<string, any>); \r\n }\r\n\r\n toggleRecording(sid:any){\r\n if (this.isRecording) {\r\n this.stopRecording();\r\n } else {\r\n this.startRecording();\r\n }\r\n }\r\n\r\n startRecording(){\r\n let sid;\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n sid = this.incomingCallSid ? this.incomingCallSid : this.CallSid;\r\n // if (!this.incomingRecordCall && !this.recordCall) {\r\n // return;\r\n // }\r\n this.extensionService.getCallRecording(sid).subscribe(response => {\r\n this.isRecording = true;\r\n this.isPaused = false;\r\n // this.timeElapsed = 0;\r\n this.startTimer1();\r\n }, error => {\r\n console.error('Error starting recording', error);\r\n });\r\n }\r\n stopRecording(){\r\n // if (!this.incomingRecordCall && !this.recordCall) {\r\n // return;\r\n // }\r\n this.isRecording = false;\r\n this.isPaused = false;\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n }\r\n }\r\n pauseRecording(){\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n const sid = this.incomingCallSid ? this.incomingCallSid : this.CallSid;\r\n // if (!this.incomingRecordCall && !this.recordCall) {\r\n // return;\r\n // }\r\n this.extensionService.pauseOrResumeRecording(sid, 'pause').subscribe(response => {\r\n // this.stopRecordingTimer();\r\n this.isPaused = true;\r\n }, error => {\r\n console.error('Error pausing recording:', error);\r\n // Consider updating the UI to show the error state\r\n });\r\n }\r\n resumeRecording(sid:any){\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n sid = this.incomingCallSid ? this.incomingCallSid : this.CallSid;\r\n // if (!this.incomingRecordCall && !this.recordCall) {\r\n // return; // Skip if recording is not enabled\r\n // }\r\n this.extensionService.pauseOrResumeRecording(sid, 'resume').subscribe(response => {\r\n this.isPaused = false;\r\n this.startTimer1();\r\n }, error => {\r\n console.error('Error resuming recording', error);\r\n });\r\n }\r\n\r\n private startTimer1() {\r\n this.timerSubscription = interval(1000).subscribe(() => {\r\n this.timeElapsed++;\r\n });\r\n }\r\n \r\n stopRecordingTimer(){\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe(); // Pause the timer\r\n this.timerSubscription = undefined; // Optionally reset the subscription\r\n }\r\n }\r\n}\r\n\r\n\r\n","<div class=\"call-container\" style=\"width: 100%; left: 116px;\" *ngIf=\"newIncomingCallsList?.length > 0\">\r\n <div class=\"collops\">\r\n <div class=\"d-flex w-100\">\r\n <div class=\"d-flex flex-column container-fluid\" >\r\n <div class=\"callToNum\">Incoming call <br/><span>{{dedicatedNum}}</span></div>\r\n <ng-container *ngFor=\"let data of newIncomingCallsList\"> \r\n <div class=\"p-2 \">\r\n <div class=\"call-info-wrapper w-100 d-flex align-items-center\">\r\n <div class=\"img\">\r\n <img class=\"avatar-img-wrapper\" [src]=\"data?.img\" alt=\"\" width=\"45\" />\r\n </div>\r\n <div class=\"d-flex justify-content-between w-100 align-items-center mr-2\">\r\n <div class=\"callerDetails-wrapper\">\r\n <h5 class=\"break-word\">{{data?.userInfo?.c2cInformation?.name || '-'}}</h5>\r\n <p class=\"break-word\">{{data?.userInfo?.displayNum ? data?.userInfo?.c2cInformation?.number : data?.userInfo?.c2cInformation?.number }}</p>\r\n </div> \r\n <div class=\"d-flex align-items-center\">\r\n <button class=\"call-btn-wrapper receive-btn\" *ngIf=\"!data?.isCallConnected\">\r\n <span class=\"material-symbols-outlined\" (click)=\"acceptCallFromList(data)\"> call </span>\r\n </button>\r\n <button class=\"call-btn-wrapper mute-btn\" *ngIf=\"data?.isCallConnected\" (click)=\"toggleMute(data)\" [ngClass]=\"{'active-mute': isMute}\">\r\n <span class=\"material-symbols-outlined\" *ngIf=\"isMute\"> mic_off </span>\r\n <span class=\"material-symbols-outlined\" *ngIf=\"!isMute\"> mic</span>\r\n </button>\r\n <div class=\"record-btn-container\">\r\n <button class=\"record-btn start-stop\" *ngIf=\"!isRecording\" [ngClass]=\"{'recording': isRecording, 'stopped': !isRecording}\" (click)=\"toggleRecording('')\" [title]=\"isRecording ? 'Stop Recording' : 'Start Recording'\" [disabled]=\"disbaleEndCallBtn\">\r\n <span class=\"recording-icon\"></span>\r\n </button> \r\n <div class=\"pause-resume-btns\">\r\n <button class=\"record-btn pause-resume\" *ngIf=\"isRecording && !isPaused\" (click)=\"pauseRecording()\">\r\n <span class=\"material-symbols-outlined\"> pause </span>\r\n </button>\r\n <button class=\"record-btn pause-resume\" *ngIf=\"isPaused\" (click)=\"resumeRecording('')\">\r\n <span class=\"material-symbols-outlined\"> play_arrow </span>\r\n </button>\r\n </div>\r\n </div>\r\n <button class=\"call-btn-wrapper reject-btn\">\r\n <span class=\"material-symbols-outlined\" (click)=\"rejectCallFromList(data)\"> call_end </span>\r\n </button>\r\n <div class=\"togglearrow-arrow me-2\" id=\"togglearrow\" (click)=\"onClickExpand(data)\"><i class=\"fa fa-angle-right\"></i></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"call-container p-3 text-white model-content\" *ngIf=\"isClickExpand \"> \r\n <div class=\"mb-2\" style=\"width: 100%; height: 100%;\">\r\n <div class=\"call-animation\" [ngClass]=\"{'call-animation-play': showRingAnimation}\">\r\n <img class=\"avatar-img\" [src]=\"incomingCallData.img\" alt=\"\" width=\"100\" />\r\n </div>\r\n <div class=\"text-center\">\r\n <h3 class=\"text-white\">{{selectedIncomingCall?.userInfo?.c2cInformation?.name || '-'}}</h3>\r\n </div>\r\n <div class=\"f-13\">\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 d-flex align-items-center mb-2\">\r\n <div class=\"me-2\">Subject:</div>\r\n <div class=\"ml-2\">{{selectedIncomingCall?.userInfo?.c2cInformation?.subject || '-'}}</div>\r\n </div> \r\n </div>\r\n\r\n <div class=\"row mb-2\">\r\n <div class=\"col-12 d-flex align-items-center mb-2\">\r\n <div class=\"me-2\">Email:</div>\r\n <div>{{selectedIncomingCall?.userInfo?.c2cInformation?.email || '-'}}</div>\r\n </div> \r\n </div>\r\n\r\n <div class=\"row mb-2\">\r\n <div class=\"col-6 mb-2\">\r\n <div class=\"\">Number:</div>\r\n <div class=\"\">{{selectedIncomingCall?.userInfo?.c2cInformation?.number}}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"\">Language:</div>\r\n <div class=\"ml-2\">{{selectedIncomingCall?.userInfo?.c2cInformation?.language || '-'}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-2\">\r\n <div class=\"col-6 mb-2\">\r\n <div class=\"\">Extension:</div>\r\n <div class=\"ml-2\">{{selectedIncomingCall?.userInfo?.c2cInformation?.extension || '-'}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 d-flex align-items-center mb-2\">\r\n <div class=\"me-2\">Image:</div>\r\n <div class=\"text-ellipsis\">\r\n <ng-container *ngIf=\"selectedIncomingCall?.userInfo?.c2cInformation?.image && selectedIncomingCall?.userInfo?.c2cInformation?.image !== '-'; else noImage\">\r\n <img src=\"{{selectedIncomingCall?.userInfo?.c2cInformation?.image}}\" alt=\"\" width=\"42\" height=\"42\" class=\"ml-2\"/>\r\n </ng-container>\r\n <ng-template #noImage>\r\n <span class=\"ml-2\">No Image Available</span>\r\n </ng-template>\r\n </div>\r\n </div> \r\n </div>\r\n\r\n <div class=\" mb-4\">\r\n <div class=\"\">\r\n <div class=\"\">Message:</div>\r\n <div class=\"text-ellipsis\">{{selectedIncomingCall?.userInfo?.c2cInformation?.message || '-'}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-2\">\r\n <div class=\"col-6 mb-2\">\r\n <div class=\"\">Point Name:</div>\r\n <div class=\"\">{{selectedIncomingCall?.userInfo?.c2cInformation?.pointName || '-'}}</div>\r\n </div>\r\n <div class=\"col-6 mb-2\">\r\n <div class=\"\">Source Name:</div>\r\n <div class=\"\">{{selectedIncomingCall?.userInfo?.c2cInformation?.sourceName || '-'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"call-action-btns mt-0\">\r\n <button class=\"call-btn receive-btn\" *ngIf=\"!selectedIncomingCall?.isCallConnected\">\r\n <span class=\"material-symbols-outlined\" (click)=\"acceptCallFromList(selectedIncomingCall)\"> call </span>\r\n </button>\r\n <button class=\"call-btn mute-btn\" *ngIf=\"selectedIncomingCall?.isCallConnected\" (click)=\"toggleMute(selectedIncomingCall)\" [ngClass]=\"{'active-mute': isMute}\">\r\n <span class=\"material-symbols-outlined\" *ngIf=\"isMute\"> mic_off </span>\r\n <span class=\"material-symbols-outlined\" *ngIf=\"!isMute\"> mic </span>\r\n </button>\r\n <button class=\"call-btn reject-btn\">\r\n <span class=\"material-symbols-outlined\" (click)=\"rejectCallFromList(selectedIncomingCall)\"> call_end </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"wave-container\">\r\n <svg class=\"waves\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 24 150 28\" preserveAspectRatio=\"none\" shape-rendering=\"auto\" [ngStyle]=\"{'width': '756px'}\">\r\n <defs>\r\n <path id=\"gentle-wave\" d=\"M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z\" />\r\n </defs>\r\n <g class=\"parallax\">\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"0\" fill=\"rgba(255,255,255,0.7)\" />\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"3\" fill=\"rgba(255,255,255,0.5)\" /> \r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"7\" fill=\"#fff\" />\r\n </g>\r\n </svg>\r\n </div>\r\n</div>\r\n\r\n\r\n","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Call, Device } from '@twilio/voice-sdk';\r\nimport { ExtensionService } from '../../service/extension.service';\r\nimport { environment } from '../../environments/environments';\r\nimport swal from 'sweetalert2';\r\nimport { keypad } from '../../keypad';\r\nimport { interval, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-call-progress',\r\n templateUrl: './call-progress.component.html',\r\n styleUrls: ['./call-progress.component.css']\r\n})\r\nexport class CallProgressComponent implements OnInit, OnChanges, AfterViewInit {\r\n @Input() callData: any;\r\n @Input() newIncomingCallData?: Call;\r\n @Input() newIncomingCallsList:any=[];\r\n @Input() deviceId:any;\r\n @Output() endCallEvent: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() incomingCallsNewInfo: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() minimiseEvent: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n device?: Device;\r\n call?: Call;\r\n showRingAnimation: boolean = false;\r\n timer: string = '00:00';\r\n intervalId: any;\r\n showKeypad: boolean = false;\r\n keypadVal = keypad;\r\n callInput: string = '';\r\n isMute: boolean = false;\r\n disbaleEndCallBtn: boolean = true;\r\n showClearBtn:boolean = false;\r\n isCollops=false;\r\n\r\n // Incoming call variables\r\n incomingCallDiv: boolean = false;\r\n @Output() incomingCallInitiated: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n // Recording\r\n callSid:any;\r\n isRecording:boolean=false;\r\n isPaused:boolean=false;\r\n timerSubscription?: Subscription;\r\n timeElapsed = 0; // in seconds\r\n recordCall:boolean=false;\r\n incomingCallSid:any;\r\n callStatus:string='ringing';\r\n incomingRecordCall?:any;\r\n selectedIncomingCall:any;\r\n\r\n isMinimised:boolean=false;\r\n\r\n constructor(private extensionService: ExtensionService, private cdr: ChangeDetectorRef) {\r\n console.log('Call Progress Component');\r\n }\r\n\r\n ngOnInit() {\r\n console.log('Call Progress Component');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) { \r\n console.log('Call Progress Component ngOnChanges');\r\n if (changes['callData']) { \r\n if (changes['callData'].currentValue?.isIncomingCall) {\r\n this.incomingCallDiv = true;\r\n this.cdr.detectChanges(); \r\n } else {\r\n this.startCall(changes['callData'].currentValue);\r\n }\r\n }\r\n if (changes['newIncomingCallData']) {\r\n try {\r\n if (changes['newIncomingCallData'].currentValue) {\r\n if (this.call && (this.call.status() == 'open')) {\r\n this.call.disconnect();\r\n this.call = changes['newIncomingCallData'].currentValue;\r\n this.call?.accept();\r\n this.callData.phone = this.call?.parameters['From'];\r\n this.callData.name = this.call?.customParameters.get('name');\r\n this.callData.img = this.call?.customParameters.get('image') || 'assets/images/user.jpg';\r\n this.incomingCallInitiated.emit();\r\n this.startTimer();\r\n }\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // reserved\r\n }\r\n\r\n async startCall(callData:any) {\r\n try {\r\n this.showRingAnimation = true;\r\n const payload = {\r\n channelId: environment.channelId,\r\n userId: localStorage.getItem('userId'),\r\n to: callData.phone,\r\n scope: 'local',\r\n fromNumber: callData.from\r\n };\r\n\r\n const response:any = await this.initiateCall(payload);\r\n if (response.status == 200) {\r\n const { id: callAuthId, recordCall } = await this.getCallAuthId(response);\r\n this.getUserInformation(callAuthId)\r\n this.recordCall = recordCall; // Store the recordCall value\r\n const tokenData: any = await this.getOutgoingCallToken(callAuthId);\r\n await this.connectToDevice(tokenData.token, callData);\r\n\r\n // Poll the status for 30-45 seconds\r\n this.pollCallStatus(callAuthId);\r\n } else if (response.status == 201) {\r\n swal(\"Error\", response.message.join(\"<br/>\"), \"error\");\r\n this.endCall();\r\n }\r\n \r\n } catch (error) {\r\n this.showRingAnimation = false;\r\n this.handleError(error);\r\n this.endCall();\r\n }\r\n }\r\n\r\n private async initiateCall(payload:any){\r\n return await this.extensionService.initiateCall(payload).toPromise();\r\n }\r\n\r\n private async getCallAuthId(response:any) {\r\n return {\r\n id: response.callauth.id,\r\n recordCall: response.callauth.recordCall\r\n };\r\n }\r\n\r\n private async getOutgoingCallToken(callAuthId:string){\r\n return await this.extensionService.getOutgoingCallToken({ authId: callAuthId }).toPromise();\r\n }\r\n\r\n private async connectToDevice(token:any, callData:any){\r\n const options:any = {\r\n codecPreferences: ['opus', 'pcmu'],\r\n closeProtection: true,\r\n };\r\n\r\n this.device = new Device(token.value, options);\r\n this.call = await this.device.connect({\r\n params: {\r\n From: callData.from,\r\n To: callData.phone,\r\n Env: environment.abb,\r\n Token: token.id,\r\n Ext: callData.extNum\r\n },\r\n rtcConstraints: { audio: { deviceId: 'default' } },\r\n });\r\n this.setupEventListeners();\r\n }\r\n\r\n private setupEventListeners(){\r\n this.startTimer();\r\n this.device?.on('error', (err:any) => {\r\n console.log(err);\r\n this.showRingAnimation = false;\r\n this.stopTimer();\r\n });\r\n\r\n this.call?.on('error', (error:any) => {\r\n this.showRingAnimation = false;\r\n this.stopTimer();\r\n });\r\n\r\n this.call?.on('disconnect', () => {\r\n this.endCall();\r\n });\r\n\r\n this.call?.on('ringing', () => {\r\n });\r\n\r\n this.call?.on('reject', () => {\r\n this.endCall();\r\n });\r\n\r\n this.call?.on('accept', () => {\r\n this.showRingAnimation = false;\r\n this.disbaleEndCallBtn = false;\r\n });\r\n\r\n this.call?.on('messageReceived', (message:any) => {\r\n });\r\n }\r\n\r\n private startTimer(){\r\n let seconds = 0;\r\n this.intervalId = setInterval(() => {\r\n seconds++;\r\n this.timer = this.formatTime(seconds);\r\n }, 1000);\r\n }\r\n private stopTimer(){\r\n clearInterval(this.intervalId);\r\n this.timer = '00:00';\r\n }\r\n private formatTime(totalSeconds: number): string {\r\n const minutes = Math.floor(totalSeconds / 60);\r\n const seconds = totalSeconds % 60;\r\n return `${this.pad(minutes)}:${this.pad(seconds)}`;\r\n }\r\n private pad(value: number): string {\r\n return value < 10 ? `0${value}` : `${value}`;\r\n }\r\n private handleError(error:any){\r\n swal(\"Error\", error, \"error\");\r\n }\r\n\r\n endCall(){\r\n this.endCallEvent.emit();\r\n if (this.call) {\r\n this.call.disconnect();\r\n }\r\n\r\n this.showRingAnimation = false;\r\n this.stopTimer();\r\n this.maximiseDialpad();\r\n }\r\n\r\n toggleMute(){\r\n this.isMute = !this.isMute;\r\n this.call?.mute(this.isMute);\r\n }\r\n toggleKeypad(){\r\n this.showKeypad = !this.showKeypad;\r\n this.callInput = '';\r\n }\r\n onCallInputs(num:any){\r\n try {\r\n if (Number.isInteger(num) || num == '+' || num == '*' || num == '#') {\r\n if (num == '#') {\r\n new Audio(`/assets/dial-tones/dtmf/dtmf-hash-.mp3`).play();\r\n } else if (num == '*') {\r\n new Audio(`/assets/dial-tones/dtmf/dtmf-star-.mp3`).play();\r\n } else {\r\n new Audio(`/assets/dial-tones/dtmf/dtmf-${num}-.mp3`).play();\r\n }\r\n\r\n this.callInput = this.callInput + String(num);\r\n this.showClearBtn = true;\r\n }\r\n let str = String(num);\r\n this.call?.sendDigits(str);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n onCallInputEnter(ev:any){\r\n try {\r\n this.call?.sendDigits(String(ev.key));\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n closeIncomingCall(data:any){\r\n if (data.show) {\r\n this.startTimer();\r\n this.disbaleEndCallBtn = false;\r\n this.call = data.call;\r\n\r\n const incomingDetail = this.extensionService.getCallSid();\r\n this.incomingRecordCall = incomingDetail.recordCall;\r\n\r\n if (this.incomingRecordCall) {\r\n this.startRecording();\r\n } else {\r\n this.isRecording = false;\r\n }\r\n this.cdr.detectChanges();\r\n } else {\r\n this.endCallEvent.emit();\r\n }\r\n }\r\n clearInputs(){\r\n this.callInput = this.callInput.slice(0, -1);\r\n }\r\n minimiseDialpad(){\r\n this.minimiseEvent.emit(true);\r\n this.isMinimised = true;\r\n }\r\n maximiseDialpad(){\r\n this.minimiseEvent.emit(false);\r\n this.isMinimised = false;\r\n }\r\n\r\n toggleRecording(){\r\n if (this.isRecording) {\r\n this.stopRecording();\r\n } else {\r\n this.startRecording();\r\n }\r\n }\r\n startRecording(){\r\n let sid;\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n sid = this.incomingCallSid ? this.incomingCallSid : this.callSid;\r\n\r\n this.extensionService.getCallRecording(sid).subscribe(response => {\r\n this.isRecording = true;\r\n this.isPaused = false; \r\n this.timeElapsed = 0;\r\n this.startTimer1();\r\n }, error => {\r\n console.error('Error starting recording', error);\r\n });\r\n }\r\n stopRecording(){\r\n this.isRecording = false;\r\n this.isPaused = false;\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n }\r\n }\r\n pauseRecording(){\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n const sid = this.incomingCallSid ? this.incomingCallSid : this.callSid;\r\n this.extensionService.pauseOrResumeRecording(sid, 'pause').subscribe(response => {\r\n this.stopRecordingTimer();\r\n this.isPaused = true;\r\n }, error => {\r\n console.error('Error pausing recording:', error);\r\n });\r\n }\r\n resumeRecording(){\r\n let sid;\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n sid = this.incomingCallSid ? this.incomingCallSid : this.callSid;\r\n this.extensionService.pauseOrResumeRecording(sid, 'resume').subscribe(response => {\r\n this.isPaused = false;\r\n this.startTimer1();\r\n }, error => {\r\n console.error('Error resuming recording', error);\r\n });\r\n }\r\n\r\n private startTimer1(){\r\n this.timerSubscription = interval(1000).subscribe(() => {\r\n this.timeElapsed++;\r\n });\r\n }\r\n private stopRecordingTimer(){\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe(); // Pause the timer\r\n this.timerSubscription = undefined; // Optionally reset the subscription\r\n }\r\n }\r\n getFormattedTime(){\r\n const minutes = Math.floor(this.timeElapsed / 60);\r\n const seconds = this.timeElapsed % 60;\r\n return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\r\n }\r\n\r\n pollCallStatus(callAuthId:string){\r\n const maxTime = 30000; // Poll for up to 30 seconds\r\n const pollInterval = 3000; // Poll every 3 seconds\r\n let elapsedTime = 0;\r\n const intervalId = setInterval(async () => {\r\n elapsedTime += pollInterval;\r\n try{\r\n const statusResponse:any = await this.extensionService.getCallStatus(callAuthId).toPromise();\r\n if (statusResponse && statusResponse.callDetails) {\r\n this.callStatus = statusResponse.callDetails.callStatus;\r\n if (this.callStatus === 'in-progress') {\r\n this.callSid = statusResponse.callDetails.callSid;\r\n if (this.recordCall && !this.isRecording) {\r\n this.startRecording();\r\n }\r\n clearInterval(intervalId);\r\n } else if (this.callStatus === 'completed') {\r\n clearInterval(intervalId);\r\n this.endCall();\r\n this.stopRecording();\r\n } else if (this.callStatus === 'ringing') {\r\n // Continue polling; do not clear the interval yet\r\n }\r\n }\r\n } catch (error){\r\n clearInterval(intervalId);\r\n }\r\n if (elapsedTime >= maxTime) {\r\n clearInterval(intervalId);\r\n }\r\n }, pollInterval);\r\n }\r\n\r\n getUserInformation(id:any){\r\n this.extensionService.getUserInformation(id).subscribe(response => {\r\n console.log(response)\r\n }, error => {\r\n console.error('Error starting recording', error);\r\n })\r\n }\r\n incomingCallsNewList(data:any){\r\n this.newIncomingCallsList = data;\r\n this.incomingCallsNewInfo.emit(this.newIncomingCallsList);\r\n }\r\n selectedIncomingCallInfo(data:any){\r\n this.selectedIncomingCall = data;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.callData.dial = false;\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n\r\n\r\n","<div class=\"call-container\" *ngIf=\"!isMinimised\" [ngClass]=\"{'collops': isCollops, 'incoming-call-container': selectedIncomingCall?.isClickExpand }\">\r\n <lib-incoming-call *ngIf=\"incomingCallDiv\" [incomingCallData]=\"callData\" [deviceId]=\"deviceId\" [newIncomingCallsList]=\"newIncomingCallsList\" (closeIncomingCallDiv)=\"closeIncomingCall($event)\" \r\n (incomingCallsNewList)=\"incomingCallsNewList($event)\" (selectedIncomingCallInfo)=\"selectedIncomingCallInfo($event)\"></lib-incoming-call>\r\n <div [ngStyle]=\"{'display': 'flex', 'flex-direction': 'column', 'position': 'relative', 'width': '100%', 'left': callData?.isIncomingCall ? '100px' : '0'}\">\r\n \r\n <div class=\"call-animation\" [ngClass]=\"{'call-animation-play': showRingAnimation}\">\r\n <img class=\"avatar-img\" [src]=\"callData.img\" alt=\"\" width=\"120\" />\r\n </div>\r\n <div class=\"callerDetails\">\r\n <h1 [ngStyle]=\"{'margin-top': showKeypad ? '0': '8px'}\">{{callData.name}}</h1>\r\n <p>{{callData.displayNum ? callData.displayNum : callData.phone }}</p>\r\n <h4 style=\"margin-top: 4px\">{{timer}}</h4>\r\n </div>\r\n <div class=\"record-action-btns\" [ngStyle]=\"{'margin-top': showKeypad ? '0': '20px'}\">\r\n <div class=\"record-btn-container\">\r\n <button class=\"record-btn start-stop\" *ngIf=\"!isRecording\" [ngClass]=\"{'recording': isRecording, 'stopped': !isRecording}\" (click)=\"toggleRecording()\" [title]=\"isRecording ? 'Stop Recording' : 'Start Recording'\" [disabled]=\"disbaleEndCallBtn\">\r\n <span class=\"recording-icon\"></span>\r\n </button> \r\n <div class=\"pause-resume-btns\">\r\n <button class=\"record-btn pause-resume\" *ngIf=\"isRecording && !isPaused\" (click)=\"pauseRecording()\">\r\n <span class=\"material-symbols-outlined\"> pause </span>\r\n </button>\r\n <button class=\"record-btn pause-resume\" *ngIf=\"isPaused\" (click)=\"resumeRecording()\">\r\n <span class=\"material-symbols-outlined\"> play_arrow </span>\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isRecording\" class=\"timer-display\">\r\n {{ getFormattedTime() }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"showKeypad\" class=\"sendDigit\">\r\n <input type=\"text\" name=\"call-inputs\" id=\"call-input\" [(ngModel)]=\"callInput\" (keyup)=\"onCallInputEnter($event)\">\r\n <span class=\"material-symbols-outlined input-clear-btn\" *ngIf=\"callInput\" (click)=\"clearInputs()\">close_small</span>\r\n </div>\r\n <div class=\"btn-container justify-content-center\" *ngIf=\"showKeypad\">\r\n <div class=\"key-btn\" *ngFor=\"let key of keypadVal\" (click)=\"onCallInputs(key.num)\">\r\n {{key.num}}\r\n <span class=\"btn-albhabets\">{{key.text ? key.text : '&nbsp;'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"call-action-btns\" [ngStyle]=\"{'margin-top': showKeypad ? '0': '160px'}\">\r\n <button class=\"call-sec-btn\" [disabled]=\"disbaleEndCallBtn\" [ngStyle]=\"{'top': showKeypad ? '0': '-70px'}\" (click)=\"toggleMute()\">\r\n <span class=\"material-symbols-outlined\" *ngIf=\"isMute\"> mic_off </span>\r\n <span class=\"material-symbols-outlined\" *ngIf=\"!isMute\"> mic </span>\r\n\r\n </button>\r\n <button class=\"call-btn end-call-btn\" [disabled]=\"disbaleEndCallBtn\" (click)=\"endCall()\">\r\n <span class=\"material-symbols-outlined\"> call_end </span>\r\n </button>\r\n <button class=\"call-sec-btn\" [ngStyle]=\"{'top': showKeypad ? '0': '-70px'}\" [disabled]=\"disbaleEndCallBtn\">\r\n <span class=\"material-symbols-outlined\" (click)=\"toggleKeypad()\"> transition_dissolve </span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"wave-container\">\r\n <svg class=\"waves\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 24 150 28\" preserveAspectRatio=\"none\" shape-rendering=\"auto\">\r\n <defs>\r\n <path id=\"gentle-wave\" d=\"M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z\" />\r\n </defs>\r\n <g class=\"parallax\">\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"0\" fill=\"rgba(255,255,255,0.7)\" />\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"3\" fill=\"rgba(255,255,255,0.5)\" />\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"7\" fill=\"#fff\" />\r\n </g>\r\n </svg>\r\n </div>\r\n</div>\r\n\r\n<div class=\"min-call-container\" *ngIf=\"isMinimised\">\r\n <span class=\"material-symbols-outlined fullscreen\" (click)=\"maximiseDialpad()\"> open_in_full </span>\r\n <div style=\"display: flex; width: 100%\">\r\n <div>\r\n <div class=\"min-call-animation\" id=\"call-avatar\">\r\n <img class=\"min-avatar-img\" [src]=\"callData.img\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"min-callerDetails\">\r\n <div class=\"name\">\r\n {{callData.name}}\r\n </div>\r\n <p style=\"margin: 0\">{{callData.displayNum ? callData.displayNum : callData.phone }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"min-btn-container\">\r\n <div class=\"min-timer\">{{timer}}</div>\r\n <button class=\"min-call-sec-btn\" (click)=\"toggleMute()\" [disabled]=\"disbaleEndCallBtn\">\r\n <span class=\"material-symbols-outlined\" *ngIf=\"isMute\"> mic_off </span>\r\n <span class=\"material-symbols-outlined\" *ngIf=\"!isMute\"> mic </span>\r\n </button>\r\n <button class=\"min-call-btn end-call-btn\" [disabled]=\"disbaleEndCallBtn\" (click)=\"endCall()\">\r\n <span class=\"material-symbols-outlined\"> call_end </span>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TwilioService } from '../../service/twilio.service';\r\n\r\n@Component({\r\n selector: 'lib-caller-id-dialog',\r\n templateUrl: './caller-id-dialog.component.html',\r\n styleUrls: ['./caller-id-dialog.component.css']\r\n})\r\nexport class CallerIdDialogComponent implements OnInit {\r\n storedTheme: string = localStorage.getItem('theme-color') || 'blue';\r\n alertToggle: boolean = true;\r\n constructor(\r\n private router: Router,\r\n private twilServ: TwilioService,\r\n ) {}\r\n\r\n token:string = '';\r\n ngOnInit(){\r\n this.alertToggle = (localStorage.getItem('alertToggle') == 'true') ? true : false;\r\n this.token = localStorage.getItem('ext_token') || '';\r\n }\r\n onConfirm(): void {\r\n // noop; kept for parity\r\n }\r\n onCancel(): void {\r\n // noop; kept for parity\r\n }\r\n redirectToCallingPreference(){\r\n this.router.navigateByUrl('/extension/caller-id/' + this.token);\r\n // downstream consumers expect to capture this; in app usage it closes dialog\r\n }\r\n proceed(){\r\n // downstream consumers expect to capture this; in app usage it closes dialog\r\n }\r\n closeModal(){\r\n // downstream consumers expect to capture this; in app usage it closes dialog\r\n }\r\n hideMessage(ev:any){\r\n this.twilServ.toggleCallerIdAlert.next(ev.target.checked);\r\n let val = ev.target.checked ? 'true' : 'false';\r\n localStorage.setItem('isAlertEnable', val);\r\n }\r\n doNotShowAgain(){\r\n console.log('doNotShowAgain')\r\n }\r\n}\r\n\r\n\r\n","<div class=\"main-theme {{storedTheme}}\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\"> Caller ID Not Set</h5>\r\n <button class=\"close\" (click)=\"closeModal()\">\r\n <span>x</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <p class=\"mb-1\"><strong>There is no caller ID set in your account</strong> <br /></p>\r\n <p>The receiver will not be able to identify your call or call you back</p>\r\n <div class=\"d-flex align-items-center justify-content-center\">\r\n <input type=\"checkbox\" checked (change)=\"hideMessage($event)\" [(ngModel)]=\"alertToggle\" class=\"mr-2\">\r\n <label for=\"\" class=\"mb-0 text-muted\">I do not want to see this message again</label>\r\n </div>\r\n <button class=\"btn btn-black-outline\" (click)=\"doNotShowAgain()\">Do not show this message again</button>\r\n </div>\r\n <div class=\"modal-footer border-top d-flex justify-content-between\">\r\n <button class=\"btn btn-black-outline\" (click)=\"redirectToCallingPreference()\">Click to set caller ID</button>\r\n \r\n <button class=\"btn btn-blue ms-2\" (click)=\"proceed()\">Proceed without Caller ID</button>\r\n </div>\r\n</div>\r\n\r\n\r\n","import { NgModule } from '@angular/core';\nimport { DialboxComponent } from './dialbox.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CallProgressComponent } from './components/call-progress/call-progress.component';\nimport { IncomingCallComponent } from './components/call-progress/incoming-call/incoming-call.component';\nimport { CallerIdDialogComponent } from './components/caller-id-dialog/caller-id-dialog.component';\n\n\n\n@NgModule({\n declarations: [\n DialboxComponent,\n CallProgressComponent,\n CallerIdDialogComponent,\n IncomingCallComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule\n ],\n exports: [\n DialboxComponent,\n IncomingCallComponent,\n CallProgressComponent,\n CallerIdDialogComponent\n ]\n})\nexport class DialboxModule { }\n","/*\n * Public API Surface of dialbox\n */\n\nexport * from './lib/dialbox.service';\nexport * from './lib/dialbox.component';\nexport * from './lib/dialbox.module';\nexport * from './lib/service/ip-address.service';\nexport * from './lib/service/extension.service';\nexport * from './lib/service/twilio.service';\nexport * from './lib/service/notification.service';\nexport * from './lib/environments/environments';\nexport * from './lib/shared/global-constant';\nexport * from './lib/keypad';\nexport * from './lib/components/call-progress/call-progress.component';\nexport * from './lib/components/call-progress/incoming-call/incoming-call.component';\nexport * from './lib/components/caller-id-dialog/caller-id-dialog.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.IpAddressService","i1.TwilioService","i2.ExtensionService","i3.NotificationService","i1.ExtensionService","i2.TwilioService","i2","i4.IncomingCallComponent","i1"],"mappings":"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"}
1
+ {"version":3,"file":"vgroup-dialbox.mjs","sources":["../../../projects/dialbox/src/lib/dialbox.service.ts","../../../projects/dialbox/src/lib/environments/environments.ts","../../../projects/dialbox/src/lib/keypad.ts","../../../projects/dialbox/src/lib/service/ip-address.service.ts","../../../projects/dialbox/src/lib/service/extension.service.ts","../../../projects/dialbox/src/lib/shared/global-constant.ts","../../../projects/dialbox/src/lib/service/notification.service.ts","../../../projects/dialbox/src/lib/service/twilio.service.ts","../../../projects/dialbox/src/lib/components/call-progress/incoming-call/incoming-call.component.ts","../../../projects/dialbox/src/lib/components/call-progress/incoming-call/incoming-call.component.html","../../../projects/dialbox/src/lib/components/call-progress/call-progress.component.ts","../../../projects/dialbox/src/lib/components/call-progress/call-progress.component.html","../../../projects/dialbox/src/lib/dialbox.component.ts","../../../projects/dialbox/src/lib/components/caller-id-dialog/caller-id-dialog.component.ts","../../../projects/dialbox/src/lib/components/caller-id-dialog/caller-id-dialog.component.html","../../../projects/dialbox/src/lib/dialbox.module.ts","../../../projects/dialbox/src/public-api.ts","../../../projects/dialbox/src/vgroup-dialbox.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialboxService {\n\n constructor() { }\n}\n","export const environment = {\r\n abb: \"d\",\r\n production: false,\r\n secureCookies: true,\r\n feUrl: 'https://dev.vgroupinc.com:91/',\r\n apiUrl: 'https://apis.vgroupinc.com/test_softphone',\r\n captchaKey: \"6LfpOmEaAAAAAGsI6JXlMzOl3b7rW4YmYXFDjldD\",\r\n stripePublishableKey: \"pk_test_51K6aTuBiNVV2TMlQfmBWY8jziwiDo0IZ3TrqWPqth1m32cpMAAg5Qpi2AlSMDEAX6hCZRBXoTzBB1uQQLc8B4tco00q2SgG6zO\",\r\n sessionTimeout: 15,\r\n deviceType: \"web\",\r\n appVersion: \"2.3\",\r\n channelId: '61481b12e138eb7dc3007579',\r\n c2c_support_point_id: '60424735f74ac306c1bfa900',\r\n c2c_support_channel_id: '677f67f3be93ab507fbbfdfc',\r\n c2c_point_url: 'https://bit.ly/3blWnPv',\r\n c2c_call_label_id: 'ye2XFLfOHCr12GFVRzPh',\r\n c2c_email_label_id: 'mvjVgOP2VCiYsVovQqdq',\r\n radarAPIKey: 'prj_live_sk_569b6f639edde6120a26f703511c61aaecd3f7ef',\r\n firebase: {\r\n apiKey: \"AIzaSyCA8LSPrqlDq_thk26LhBQexAQeY6pkU5Y\",\r\n authDomain: \"softphone-d5777.firebaseapp.com\",\r\n projectId: \"softphone-d5777\",\r\n storageBucket: \"softphone-d5777.appspot.com\",\r\n messagingSenderId: \"850812494538\",\r\n appId: \"1:850812494538:web:74f8a30fc18e28ded78a33\",\r\n measurementId: \"G-NGXTSV9SH3\",\r\n vapidKey: \"BD6EgcQgbZTjOQfleG3YlEc0_SajB03prqTdDy-qGJkxTxezbq-A_qtuXE1l3yT47o8hnTAbTKBcH15D2AJB2To\"\r\n },\r\n perspectiveApiKey: 'AIzaSyClf32lvLH4QOy-vOnzLzwSNntKIgapH8s'\r\n};\r\n\r\n\r\n","export const keypad: any[] =\r\n [\r\n {\r\n num: 1,\r\n text: 'voicemail'\r\n },\r\n {\r\n num: 2,\r\n text: 'abc'\r\n },\r\n {\r\n num: 3,\r\n text: 'def'\r\n }, {\r\n num: 4,\r\n text: 'ghi'\r\n }, {\r\n num: 5,\r\n text: 'jkl'\r\n }, {\r\n num: 6,\r\n text: 'mno'\r\n }, {\r\n num: 7,\r\n text: 'pqrs'\r\n }, {\r\n num: 8,\r\n text: 'tuv'\r\n }, {\r\n num: 9,\r\n text: 'wxyz'\r\n },\r\n {\r\n num: '*',\r\n text: ' '\r\n },\r\n {\r\n num: 0,\r\n text: '+'\r\n },\r\n {\r\n num: '#',\r\n text: ''\r\n }\r\n ];\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { environment } from \"../environments/environments\";\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class IpAddressService {\r\n private apiUrl = 'https://api.radar.io/v1/geocode/ip';\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n getIpAddressInfo(): Observable<any> {\r\n const authKey = environment.radarAPIKey;\r\n const httpOptions = {\r\n headers: new HttpHeaders({ 'Authorization': authKey }),\r\n fraud: true\r\n } as any;\r\n\r\n return this.http.get(this.apiUrl, httpOptions).pipe(\r\n catchError((error) => {\r\n return throwError(new Error(\"Network is blocking the server, please check the proxy or your network.\"));\r\n })\r\n );\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\r\nimport { environment } from \"../environments/environments\";\r\nimport { catchError, map, switchMap } from 'rxjs/operators';\r\nimport { IpAddressService } from './ip-address.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExtensionService {\r\n private callSid: string = '';\r\n private recordCall: any;\r\n\r\n messageSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n private channelId = environment.channelId;\r\n currentMessage = this.messageSource.asObservable();\r\n platform: string = 'web';\r\n\r\n dedicatedStateSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n dedicatedState = this.dedicatedStateSource.asObservable();\r\n callerIdStateSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n callerIdState = this.callerIdStateSource.asObservable();\r\n sendSmsSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n sendMessage = this.sendSmsSource.asObservable();\r\n draftSmsSource: BehaviorSubject<any> = new BehaviorSubject('');\r\n draftMessage = this.draftSmsSource.asObservable();\r\n isInputFocus$: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n token: string = localStorage.getItem('ext_token') || '';\r\n isNewContactAdded: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n isProfileUpdated: BehaviorSubject<boolean> = new BehaviorSubject(false);\r\n private callerIdSubject = new BehaviorSubject<any>(null);\r\n callerId$ = this.callerIdSubject.asObservable();\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private ipAddressService: IpAddressService,\r\n ) {}\r\n\r\n setCallSid(callSid:any, recordCall:any){\r\n this.callSid = callSid;\r\n this.recordCall = recordCall;\r\n }\r\n getCallSid(){\r\n return {\r\n callSid: this.callSid,\r\n recordCall: this.recordCall\r\n }\r\n }\r\n setCallerId(callerId:any){\r\n this.callerIdSubject.next(callerId);\r\n }\r\n changeMessage(message:any){\r\n this.messageSource.next(message);\r\n }\r\n\r\n initiateCall(payload: any): Observable<any> {\r\n return this.fetchBlockedCountries().pipe(\r\n switchMap((blockedCountries: string[]) => {\r\n return this.ipAddressService.getIpAddressInfo().pipe(\r\n switchMap((ipAddressInfo: any) => {\r\n const params = {\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': 'Bearer ' + localStorage.getItem('ext_token'),\r\n 'ip-address': ipAddressInfo.ip,\r\n 'ip-country': ipAddressInfo.address.country,\r\n };\r\n payload = { ...payload, proxy: ipAddressInfo.proxy.toString() };\r\n const httpOptions = { headers: new HttpHeaders(params) };\r\n return this.http.post(environment.apiUrl + '/utilities/ext/ur/initiate/call', payload, httpOptions).pipe(\r\n catchError(error => {\r\n return throwError(error);\r\n })\r\n );\r\n }),\r\n catchError(error => {\r\n return throwError(error);\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n fetchBlockedCountries(){\r\n return this.http.get<any>(environment.apiUrl + '/global/master/ur/blacklisted/countrylist').pipe(\r\n map((response:any) => {\r\n if (response.response === 'Success' && Array.isArray(response.countries)) {\r\n return response.countries.map((country:any) => country.isocode);\r\n } else {\r\n throw new Error('Unable to fetch blocked countries');\r\n }\r\n })\r\n )\r\n }\r\n\r\n getIncomingCallToken(deviceId:any){\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n }\r\n const params = new HttpParams().set('deviceId', deviceId);\r\n return this.http.get(environment.apiUrl + '/utilities/twilio/incomingcall/token/web', { headers, params});\r\n }\r\n\r\n getOutgoingCallToken(payload:any){\r\n const params = {\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token'),\r\n 'c2c-request': (window as any).location.hostname\r\n }\r\n const httpOptions = { headers: new HttpHeaders(params) };\r\n return this.http.post(environment.apiUrl + '/utilities/ext/ur/generate/token', payload, httpOptions);\r\n }\r\n\r\n getCallRecording(callSid:any){\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': 'Bearer ' + localStorage.getItem('ext_token')\r\n })\r\n const httpOptions = { headers: headers };\r\n return this.http.post(environment.apiUrl + '/utilities/twilio/call/callrecording?callSid='+callSid, {}, httpOptions);\r\n }\r\n\r\n pauseOrResumeRecording(callSid:string, status:'pause'|'resume'){\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': 'Bearer ' + localStorage.getItem('ext_token')\r\n });\r\n const httpOptions = { headers: headers };\r\n return this.http.post(environment.apiUrl + `/utilities/twilio/update/recording/status?callSid=${callSid}&status=${status}`, {}, httpOptions);\r\n }\r\n\r\n getCallStatus(callAuthId:string){\r\n const headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': 'Bearer ' + localStorage.getItem('ext_token')\r\n });\r\n const httpOptions = { headers: headers };\r\n return this.http.get(environment.apiUrl + `/utilities/twilio/call/status/${callAuthId}`, httpOptions);\r\n }\r\n\r\n // sms & phonebook APIs (selected subset used by UI)\r\n readContacts(token:string){\r\n const params = {\r\n 'Content-Type': 'application/json',\r\n 'Auth-Key': \"Bearer \" + token\r\n }\r\n const httpOptions = { headers: new HttpHeaders(params)};\r\n return this.http.get(environment.apiUrl + '/utilities/phonebook/read/contacts', httpOptions);\r\n }\r\n\r\n sendSms(c2c_latlong:string, c2c_request:string, dtModel:any){\r\n return this.fetchBlockedCountries().pipe(\r\n switchMap((blockedCountries:string[]) => {\r\n return this.ipAddressService.getIpAddressInfo().pipe(\r\n switchMap((ipAddressInfo:any) => {\r\n if (blockedCountries.includes(ipAddressInfo.address.countryCode)) {\r\n return throwError({message:['User from blocked country']});\r\n } else {\r\n const params = {\r\n 'Content-Type': 'application/json',\r\n 'c2c-latlong': c2c_latlong,\r\n 'c2c-request': c2c_request,\r\n 'ip-address': ipAddressInfo.ip,\r\n 'ip-country': ipAddressInfo.address.country,\r\n }\r\n dtModel = { ...dtModel, proxy: ipAddressInfo.proxy.toString() };\r\n const httpOptions = { headers: new HttpHeaders(params)};\r\n return this.http.post(environment.apiUrl + '/utilities/ext/ur/send/sms', dtModel, httpOptions).pipe(\r\n catchError(error => throwError(error))\r\n );\r\n }\r\n }),\r\n catchError(error => throwError(error))\r\n )\r\n }),\r\n catchError(error => throwError(error))\r\n )\r\n }\r\n\r\n getUserInformation(twilioAuthId: string){\r\n const httpOptions = { \r\n headers: new HttpHeaders({ \r\n 'Content-Type': 'application/json', \r\n 'Auth-Key': 'Bearer ' + this.token \r\n })\r\n };\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/twilio/c2c/information/'+twilioAuthId, httpOptions);\r\n }\r\n\r\n getIPDetailsForCall(recordId: string, callStatus: string, deviceId?: any): Observable<any> {\r\n return this.ipAddressService.getIpAddressInfo().pipe(\r\n switchMap((ipAddressInfo: any) => {\r\n const IpObj = {\r\n 'ipAddress': ipAddressInfo.ip,\r\n 'ipCountry': ipAddressInfo.address.country,\r\n 'recordId': recordId,\r\n 'callStatus': callStatus,\r\n };\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token'), 'deviceId': deviceId }) };\r\n \r\n return this.http.post<[]>(environment.apiUrl + '/utilities/twilio/incoming/call/ip', IpObj, httpOptions).pipe(\r\n catchError(postError => {\r\n // console.log('Error during HTTP POST request:', postError);\r\n return throwError(postError);\r\n })\r\n );\r\n }),\r\n catchError(ipError => {\r\n // console.log('Error fetching IP address info:', ipError);\r\n return throwError(ipError);\r\n })\r\n );\r\n }\r\n}\r\n\r\n\r\n","export const GlobalConstant = {\r\n ErrorMsg500: \"Unable to process request. Please try again later.\",\r\n isSMSVisible: true,\r\n dedicatedNumText: 'C2C Number'\r\n};\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Call } from '@twilio/voice-sdk';\r\nimport { TwilioService } from './twilio.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NotificationService {\r\n twilioCallData?: Call;\r\n twilioAuthId?: string;\r\n\r\n constructor(\r\n private twilioService: TwilioService\r\n ) {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.addEventListener('message', this.handleServiceWorkerMessage.bind(this));\r\n }\r\n }\r\n\r\n redirectUrl = window.location.href;\r\n showNotification(callData: any) {\r\n this.twilioAuthId = callData.customParameters.get('twilioAuthId');\r\n this.twilioCallData = callData;\r\n const incomingNumber = callData.parameters.From;\r\n const callerName = callData.customParameters.get('name');\r\n const callerImage = callData.customParameters.get('image');\r\n if (('serviceWorker' in navigator))\r\n {\r\n navigator.serviceWorker.ready.then((registration: any) => {\r\n const options = {\r\n body: `Incoming call from ${callerName || incomingNumber}`,\r\n icon: callerImage,\r\n actions: [\r\n { \r\n action: 'accept', \r\n title: 'Accept', \r\n icon: '../../../assets/images/notification-icons/call-accept-icon.png' \r\n },\r\n { \r\n action: 'reject', \r\n title: 'Reject', \r\n icon: '../../../assets/images/notification-icons/call-reject-icon.jpg' \r\n }\r\n ],\r\n data: {\r\n url: this.redirectUrl,\r\n },\r\n requireInteraction: true,\r\n \r\n };\r\n registration.showNotification('Icoming Call', options);\r\n })\r\n }\r\n }\r\n\r\n private handleServiceWorkerMessage(event: MessageEvent) {\r\n if (!event.data) return;\r\n \r\n switch (event.data.action) {\r\n case 'accept':\r\n this.onNotificationAccept();\r\n break;\r\n case 'reject':\r\n this.onNotificationReject();\r\n break;\r\n default:\r\n console.log('default action:');\r\n break;\r\n }\r\n }\r\n onNotificationAccept(){\r\n this.twilioService.callhandleFromNotification.next({ callStatus: 'accept'})\r\n }\r\n \r\n onNotificationReject(){\r\n this.twilioService.callhandleFromNotification.next({ callStatus: 'reject'})\r\n }\r\n \r\n}\r\n\r\n\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, of, throwError } from 'rxjs';\r\nimport { catchError, shareReplay, tap } from 'rxjs/operators';\r\nimport { Device, Call } from '@twilio/voice-sdk';\r\nimport { ExtensionService } from './extension.service';\r\nimport { NotificationService } from './notification.service';\r\nimport { environment } from '../environments/environments';\r\n\r\nexport interface DialPayload {\r\n number: string;\r\n name: string;\r\n img: string;\r\n callerId: string;\r\n isDialFromHistory: boolean;\r\n from: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root' \r\n})\r\nexport class TwilioService {\r\n \r\n openInProgressDialpad = new BehaviorSubject<boolean>(false);\r\n currentCall = new BehaviorSubject<Call | null>(null);\r\n currentCallState = new BehaviorSubject<any>('none'); //in-progress, out-progress, none\r\n device:any;\r\n incomingCallToken?:string;\r\n outgoingCallToken?:string;\r\n callType = new BehaviorSubject<string>('NIL');\r\n isIncomingCallPicked = new BehaviorSubject<boolean>(false); // for both incoming and outgoing\r\n token:any = localStorage.getItem('ext_token');\r\n isNewContactAdded = new BehaviorSubject<boolean>(false);\r\n updateRecentCall = new BehaviorSubject<boolean>(false);\r\n callhandleFromNotification = new BehaviorSubject<any>({});\r\n\r\n endCall = new BehaviorSubject<boolean>(false);\r\n dialNumberFromOtherModule = new BehaviorSubject<DialPayload>({ number: '', name: '', img: '', callerId: '', isDialFromHistory: false, from: '' });\r\n\r\n toggleCallerIdAlert = new BehaviorSubject<boolean>(true);\r\n isTrialOver = new BehaviorSubject<boolean>(false);\r\n isPaymentDue = new BehaviorSubject<boolean>(false);\r\n isAvailableNumber = new BehaviorSubject<boolean>(false);\r\n callerIdList = new BehaviorSubject<any[]>([]);\r\n triggerSMSReload = new BehaviorSubject<boolean>(false);\r\n\r\n private tokenInitialized = false;\r\n private tokenInitialization$: Observable<any> | null = null;\r\n deviceId: any;\r\n\r\n constructor(\r\n private http: HttpClient, \r\n private extensionService: ExtensionService,\r\n private notificationSerivce: NotificationService\r\n ) {\r\n this.initializeToken();\r\n }\r\n\r\n private initializeToken() {\r\n if (this.tokenInitialized) {\r\n return this.tokenInitialization$ || of(null);\r\n }\r\n\r\n this.tokenInitialization$ = this.extensionService.getIncomingCallToken(this.deviceId).pipe(\r\n tap((data: any) => {\r\n this.incomingCallToken = data.token;\r\n localStorage.setItem('in-token', data.token);\r\n this.tokenInitialized = true;\r\n console.log('dfdfdsfdsfds');\r\n this.initializeDevice();\r\n }),\r\n catchError(error => {\r\n console.error('Error initializing Twilio token:', error);\r\n return throwError(() => error);\r\n }),\r\n shareReplay(1) // Cache the result for subsequent subscribers\r\n );\r\n\r\n return this.tokenInitialization$;\r\n }\r\n\r\n public initializeTwilioDevice(deviceId: any) {\r\n this.deviceId = deviceId;\r\n if (this.tokenInitialized && this.incomingCallToken) {\r\n this.initializeDevice();\r\n } else {\r\n this.initializeToken().subscribe();\r\n }\r\n }\r\n\r\n private initializeDevice() {\r\n if (this.device) {\r\n this.device.destroy();\r\n }\r\n\r\n if (!this.incomingCallToken) {\r\n console.error('No Twilio token available');\r\n return;\r\n }\r\n\r\n this.device = new Device(this.incomingCallToken, { \r\n allowIncomingWhileBusy: true,\r\n closeProtection: true\r\n });\r\n console.log(\"device created\")\r\n \r\n this.device.register();\r\n\r\n this.device.on('incoming', (call: Call) => {\r\n console.log(\"incoming call\",call)\r\n this.currentCall.next(call);\r\n this.callType.next('INCOMING');\r\n this.currentCallState.next('incoming');\r\n this.notificationSerivce.showNotification(call);\r\n });\r\n\r\n this.device.on('error', (error: any) => {\r\n console.error('Twilio Device Error:', error);\r\n // Reset initialization state on error to allow retry\r\n this.tokenInitialized = false;\r\n });\r\n\r\n this.device.on('registered', () => {\r\n console.log('Twilio Device registered successfully');\r\n });\r\n\r\n this.device.on('unregistered', () => {\r\n console.log('Twilio Device unregistered');\r\n this.tokenInitialized = false;\r\n });\r\n }\r\n\r\n // onIncomingCall(){\r\n // this.device.on('incoming', (call:any) => {\r\n // console.log(call);\r\n \r\n // //call.accept();\r\n // });\r\n // }\r\n saveContact(payload: any): Observable<[]> {\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/add/contacts/manually', payload, httpOptions);\r\n }\r\n updateContact(payload:any){\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + this.token}) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/update/contact', payload, httpOptions);\r\n }\r\n \r\n deleteContact(id:string){\r\n let payload = {\r\n phonebookid: id\r\n }\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/delete/contact/'+id,payload, httpOptions);\r\n }\r\n getContactList(){\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/phonebook/read/contacts', httpOptions);\r\n }\r\n\r\n addContactToFavourite(payload: any){\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/update/favourite', payload, httpOptions);\r\n }\r\n\r\n getFavouritContacts(){\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/phonebook/favourite/contacts', httpOptions);\r\n }\r\n\r\n getRecentCalls(pageIndex?: string, pageSize?: string,){\r\n // let params = new HttpParams();\r\n // params = params.set('size', pageSize);\r\n // params = params.set('page', pageIndex);\r\n const headers = { 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') };\r\n const httpOptions ={headers}\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/phonebook/recent/calls', httpOptions);\r\n }\r\n deleteRecentCallLog(id:string| string[]){\r\n let payload = {\r\n recordId: id\r\n }\r\n const httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }) };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/delete/calls/'+id,payload, httpOptions);\r\n }\r\n\r\n uploadPhoto(payload: any){\r\n let httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n })\r\n };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/upload/photo',payload, httpOptions);\r\n }\r\n\r\n deletePhoto(id:string){\r\n let payload = {\r\n phonebookid: id\r\n }\r\n let httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n })\r\n };\r\n return this.http.post<[]>(environment.apiUrl + '/utilities/phonebook/delete/photo/'+id,payload, httpOptions);\r\n }\r\n\r\n // toggleCallerIdAlertFn(val: any) {\r\n // let httpOptions = {\r\n // headers: new HttpHeaders({\r\n // 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n // })\r\n // };\r\n // return this.http.put<[]>(environment.apiUrl + '/utilities/softphone/callerid/alert/' + val, {}, httpOptions);\r\n // }\r\n toggleCoutryCodeToast(val:any){\r\n let httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token')\r\n })\r\n };\r\n return this.http.put<[]>(environment.apiUrl + '/utilities/softphone/countrycode/alert/' + val, {}, httpOptions);\r\n }\r\n getToNumber(dialledNo: string, isoCode: string) {\r\n const httpOptions = {\r\n headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Auth-Key': \"Bearer \" + localStorage.getItem('ext_token') }),\r\n params: new HttpParams().set('isoCode', isoCode)\r\n };\r\n const params = new HttpParams().set('isoCode', isoCode)\r\n return this.http.get<[]>(environment.apiUrl + '/utilities/softphone/check/countryCode/' + dialledNo, httpOptions);\r\n } \r\n \r\n}\r\n\r\n\r\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Call } from '@twilio/voice-sdk';\r\nimport { ExtensionService } from '../../../service/extension.service';\r\nimport { TwilioService } from '../../../service/twilio.service';\r\nimport { GlobalConstant } from '../../../shared/global-constant';\r\nimport { NotificationService } from '../../../service/notification.service';\r\nimport swal from 'sweetalert2';\r\nimport { interval, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-incoming-call',\r\n templateUrl: './incoming-call.component.html',\r\n styleUrls: ['./incoming-call.component.css']\r\n})\r\nexport class IncomingCallComponent implements OnInit {\r\n @Input() incomingCallData:any;\r\n @Input() newIncomingCallsList:any;\r\n @Input() deviceId:any;\r\n showRingAnimation:boolean=true;\r\n selectedIncomingCall:any={};\r\n twilioCallData?: Call;\r\n twilioAuthId?:string;\r\n dedicatedNum:string='';\r\n CallSid:any;\r\n recordCall?:boolean;\r\n shouldRecordCall:boolean=false;\r\n isClickExpand:boolean=false;\r\n isRecording:boolean=false;\r\n isPaused:boolean=false;\r\n isTwilioConnected:boolean=false;\r\n @Output() closeIncomingCallDiv: EventEmitter<{show:number, call:any}> = new EventEmitter<{show:number, call:any}>();\r\n @Output() incomingCallsNewList: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() selectedIncomingCallInfo: EventEmitter<any> = new EventEmitter<any>();\r\n isMute?:boolean;\r\n disbaleEndCallBtn:boolean=false;\r\n incomingCallSid:string='';\r\n incomingRecordCall:boolean=false;\r\n timerSubscription?: Subscription;\r\n timeElapsed:number=0;\r\n\r\n constructor(\r\n private extensionService: ExtensionService,\r\n private twilioService: TwilioService,\r\n private notificationSerivce: NotificationService,\r\n ) {\r\n console.log('IncomingCallComponent')\r\n }\r\n ngOnInit(): void {\r\n console.log('IncomingCallComponent ngOnInit');\r\n try {\r\n this.twilioService.currentCall.subscribe((call:any) => {\r\n if (call) {\r\n this.twilioCallData = call;\r\n this.twilioAuthId = call.customParameters.get('twilioAuthId');\r\n if (!call.parameters) { call.parameters = {}; }\r\n this.sendIPforIncomingCall(this.twilioAuthId,'');\r\n\r\n call.on('cancel', () => {\r\n if (this.incomingCallData && this.incomingCallData.parameters && this.incomingCallData.parameters.CallSid) {\r\n this.newIncomingCallsList = this.newIncomingCallsList.filter((item:any) => item.parameters && item.parameters.CallSid !== this.incomingCallData.parameters.CallSid);\r\n }\r\n this.rejectCallFromList(call);\r\n });\r\n call.on('disconnect', () => {\r\n if (this.incomingCallData && this.incomingCallData.parameters && this.incomingCallData.parameters.CallSid) {\r\n this.newIncomingCallsList = this.newIncomingCallsList.filter((item:any) => item.parameters && item.parameters.CallSid !== this.incomingCallData.parameters.CallSid);\r\n }\r\n this.rejectCallFromList(call);\r\n })\r\n }\r\n })\r\n } catch(e){\r\n console.log(e)\r\n }\r\n }\r\n\r\n acceptCallFromList(data?:any){\r\n if (!data) { return; }\r\n // Disconnect any other connected call before accepting this one\r\n if (this.newIncomingCallsList && this.newIncomingCallsList.length) {\r\n const otherConnected = this.newIncomingCallsList.find((item:any) => item.isCallConnected && item !== data);\r\n if (otherConnected) {\r\n try { otherConnected.disconnect(); } catch {}\r\n otherConnected.isCallConnected = false;\r\n otherConnected.isFirstCall = false; \r\n }\r\n }\r\n\r\n // Accept this call and mark as the active one\r\n data.accept();\r\n data.isCallConnected = true;\r\n data.isFirstCall = true;\r\n this.sendIPforIncomingCall(data.customParameters.get('twilioAuthId'), 'answered').then(() => {\r\n this.extensionService.setCallSid(this.CallSid, this.recordCall);\r\n this.closeIncomingCallWrapper(1);\r\n });\r\n }\r\n\r\n rejectCallFromList(data?:any){\r\n if (!data) return;\r\n if (data.reject) data.reject();\r\n if (data.disconnect) data.disconnect();\r\n if (data.parameters) {\r\n data.parameters['isCallConnected'] = false; // Should be false when rejecting\r\n }\r\n\r\n if (data.customParameters) {\r\n this.sendIPforIncomingCall(data.customParameters.get('twilioAuthId'), 'answered')\r\n }\r\n\r\n if (this.newIncomingCallsList && data && data.parameters && data.parameters.CallSid) {\r\n this.newIncomingCallsList = this.newIncomingCallsList.filter((item:any) => item.parameters && item.parameters.CallSid !== data.parameters.CallSid);\r\n this.incomingCallsNewList.emit(this.newIncomingCallsList);\r\n if (this.newIncomingCallsList.length == 0) {\r\n this.closeIncomingCallDiv.emit({show: 0, call: data});\r\n }\r\n }\r\n }\r\n\r\n closeIncomingCallWrapper(val:any){\r\n this.closeIncomingCallDiv.emit({show: val, call: this.twilioCallData});\r\n }\r\n toggleMute(data:any){\r\n this.isMute = !this.isMute;\r\n data.mute(this.isMute)\r\n }\r\n\r\n sendIPforIncomingCall(recordId:any, callstatus:any): Promise<void> {\r\n console.log('sendIPforIncomingCall')\r\n return new Promise((resolve, reject) => {\r\n this.extensionService.getIPDetailsForCall(recordId, callstatus, this.deviceId).subscribe((res:any) => {\r\n const resp: any = res;\r\n if (res.status == 200) {\r\n if (resp.callAuth) {\r\n this.CallSid = resp.callAuth.callSid;\r\n this.recordCall = resp.callAuth.recordCall;\r\n // Handle the recordCall flag\r\n if (resp.callAuth.recordCall) {\r\n this.shouldRecordCall = true;\r\n } else {\r\n this.shouldRecordCall = false;\r\n }\r\n } else {\r\n // swal(\"Error\", \"Missing call authentication details.\", \"error\");\r\n }\r\n resolve();\r\n } else {\r\n swal(\"Error\", resp.message.join(\"<br/>\"), \"error\");\r\n resolve();\r\n }\r\n }, (error:any) => {\r\n swal(\"Error\", GlobalConstant.ErrorMsg500, \"error\");\r\n resolve();\r\n })\r\n })\r\n }\r\n\r\n onUserInfoByCallSid(){\r\n if (this.selectedIncomingCall && this.selectedIncomingCall.userInfo) {\r\n }\r\n return this.selectedIncomingCall ? Object.keys(this.selectedIncomingCall).length ? true : false : false;\r\n }\r\n\r\n onClickExpand(data?: any): void {\r\n if (this.selectedIncomingCall === data && this.isClickExpand) {\r\n this.isClickExpand = false;\r\n this.selectedIncomingCall = null;\r\n this.selectedIncomingCallInfo.emit({});\r\n return;\r\n }\r\n this.isClickExpand = true;\r\n this.selectedIncomingCall = data;\r\n \r\n if (this.selectedIncomingCall) {\r\n this.selectedIncomingCall['isClickExpand'] = true;\r\n \r\n if (this.newIncomingCallsList && this.newIncomingCallsList.length > 0) {\r\n this.newIncomingCallsList.forEach((call:any) => {\r\n if (call !== this.selectedIncomingCall) {\r\n call['isClickExpand'] = false;\r\n }\r\n });\r\n }\r\n this.selectedIncomingCallInfo.emit(this.selectedIncomingCall)\r\n \r\n if (!this.selectedIncomingCall.userInfo || this.selectedIncomingCall.userInfo.status == 201){\r\n this.getUserInformation(this.selectedIncomingCall)\r\n }\r\n }\r\n }\r\n\r\n getUserInformation(incomingCallData:any) {\r\n let data = this.fromEntries(Array.from(incomingCallData.customParameters.entries()));\r\n this.extensionService.getUserInformation(data['twilioAuthId']).subscribe(response => {\r\n setTimeout(()=>{\r\n incomingCallData['userInfo'] = response\r\n }, 5000)\r\n }, error => {\r\n console.error('Error starting recording', error);\r\n })\r\n }\r\n\r\n fromEntries(entries: [string, any][]): Record<string, any> {\r\n return entries.reduce((acc, [key, value]) => {\r\n (acc as any)[key] = value;\r\n return acc;\r\n }, {} as Record<string, any>); \r\n }\r\n\r\n toggleRecording(sid:any){\r\n if (this.isRecording) {\r\n this.stopRecording();\r\n } else {\r\n this.startRecording();\r\n }\r\n }\r\n\r\n startRecording(){\r\n let sid;\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n sid = this.incomingCallSid ? this.incomingCallSid : this.CallSid;\r\n // if (!this.incomingRecordCall && !this.recordCall) {\r\n // return;\r\n // }\r\n this.extensionService.getCallRecording(sid).subscribe(response => {\r\n this.isRecording = true;\r\n this.isPaused = false;\r\n // this.timeElapsed = 0;\r\n this.startTimer1();\r\n }, error => {\r\n console.error('Error starting recording', error);\r\n });\r\n }\r\n stopRecording(){\r\n // if (!this.incomingRecordCall && !this.recordCall) {\r\n // return;\r\n // }\r\n this.isRecording = false;\r\n this.isPaused = false;\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n }\r\n }\r\n pauseRecording(){\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n const sid = this.incomingCallSid ? this.incomingCallSid : this.CallSid;\r\n // if (!this.incomingRecordCall && !this.recordCall) {\r\n // return;\r\n // }\r\n this.extensionService.pauseOrResumeRecording(sid, 'pause').subscribe(response => {\r\n // this.stopRecordingTimer();\r\n this.isPaused = true;\r\n }, error => {\r\n console.error('Error pausing recording:', error);\r\n // Consider updating the UI to show the error state\r\n });\r\n }\r\n resumeRecording(sid:any){\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n sid = this.incomingCallSid ? this.incomingCallSid : this.CallSid;\r\n // if (!this.incomingRecordCall && !this.recordCall) {\r\n // return; // Skip if recording is not enabled\r\n // }\r\n this.extensionService.pauseOrResumeRecording(sid, 'resume').subscribe(response => {\r\n this.isPaused = false;\r\n this.startTimer1();\r\n }, error => {\r\n console.error('Error resuming recording', error);\r\n });\r\n }\r\n\r\n private startTimer1() {\r\n this.timerSubscription = interval(1000).subscribe(() => {\r\n this.timeElapsed++;\r\n });\r\n }\r\n \r\n stopRecordingTimer(){\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe(); // Pause the timer\r\n this.timerSubscription = undefined; // Optionally reset the subscription\r\n }\r\n }\r\n}\r\n\r\n\r\n","<div class=\"call-container\" style=\"width: 100%; left: 116px;\" *ngIf=\"newIncomingCallsList?.length > 0\">\r\n <div class=\"collops\">\r\n <div class=\"d-flex w-100\">\r\n <div class=\"d-flex flex-column container-fluid\" >\r\n <div class=\"callToNum\">Incoming call <br/><span>{{dedicatedNum}}</span></div>\r\n <ng-container *ngFor=\"let data of newIncomingCallsList\"> \r\n <div class=\"p-2 \">\r\n <div class=\"call-info-wrapper w-100 d-flex align-items-center\">\r\n <div class=\"img\">\r\n <img class=\"avatar-img-wrapper\" [src]=\"data?.img\" alt=\"\" width=\"45\" />\r\n </div>\r\n <div class=\"d-flex justify-content-between w-100 align-items-center mr-2\">\r\n <div class=\"callerDetails-wrapper\">\r\n <h5 class=\"break-word\">{{data?.userInfo?.c2cInformation?.name || '-'}}</h5>\r\n <p class=\"break-word\">{{data?.userInfo?.displayNum ? data?.userInfo?.c2cInformation?.number : data?.userInfo?.c2cInformation?.number }}</p>\r\n </div> \r\n <div class=\"d-flex align-items-center\">\r\n <button class=\"call-btn-wrapper receive-btn\" *ngIf=\"!data?.isCallConnected\">\r\n <span class=\"material-symbols-outlined\" (click)=\"acceptCallFromList(data)\"> call </span>\r\n </button>\r\n <button class=\"call-btn-wrapper mute-btn\" *ngIf=\"data?.isCallConnected\" (click)=\"toggleMute(data)\" [ngClass]=\"{'active-mute': isMute}\">\r\n <span class=\"material-symbols-outlined\" *ngIf=\"isMute\"> mic_off </span>\r\n <span class=\"material-symbols-outlined\" *ngIf=\"!isMute\"> mic</span>\r\n </button>\r\n <div class=\"record-btn-container\">\r\n <button class=\"record-btn start-stop\" *ngIf=\"!isRecording\" [ngClass]=\"{'recording': isRecording, 'stopped': !isRecording}\" (click)=\"toggleRecording('')\" [title]=\"isRecording ? 'Stop Recording' : 'Start Recording'\" [disabled]=\"disbaleEndCallBtn\">\r\n <span class=\"recording-icon\"></span>\r\n </button> \r\n <div class=\"pause-resume-btns\">\r\n <button class=\"record-btn pause-resume\" *ngIf=\"isRecording && !isPaused\" (click)=\"pauseRecording()\">\r\n <span class=\"material-symbols-outlined\"> pause </span>\r\n </button>\r\n <button class=\"record-btn pause-resume\" *ngIf=\"isPaused\" (click)=\"resumeRecording('')\">\r\n <span class=\"material-symbols-outlined\"> play_arrow </span>\r\n </button>\r\n </div>\r\n </div>\r\n <button class=\"call-btn-wrapper reject-btn\">\r\n <span class=\"material-symbols-outlined\" (click)=\"rejectCallFromList(data)\"> call_end </span>\r\n </button>\r\n <div class=\"togglearrow-arrow me-2\" id=\"togglearrow\" (click)=\"onClickExpand(data)\"><i class=\"fa fa-angle-right\"></i></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"call-container p-3 text-white model-content\" *ngIf=\"isClickExpand \"> \r\n <div class=\"mb-2\" style=\"width: 100%; height: 100%;\">\r\n <div class=\"call-animation\" [ngClass]=\"{'call-animation-play': showRingAnimation}\">\r\n <img class=\"avatar-img\" [src]=\"incomingCallData.img\" alt=\"\" width=\"100\" />\r\n </div>\r\n <div class=\"text-center\">\r\n <h3 class=\"text-white\">{{selectedIncomingCall?.userInfo?.c2cInformation?.name || '-'}}</h3>\r\n </div>\r\n <div class=\"f-13\">\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 d-flex align-items-center mb-2\">\r\n <div class=\"me-2\">Subject:</div>\r\n <div class=\"ml-2\">{{selectedIncomingCall?.userInfo?.c2cInformation?.subject || '-'}}</div>\r\n </div> \r\n </div>\r\n\r\n <div class=\"row mb-2\">\r\n <div class=\"col-12 d-flex align-items-center mb-2\">\r\n <div class=\"me-2\">Email:</div>\r\n <div>{{selectedIncomingCall?.userInfo?.c2cInformation?.email || '-'}}</div>\r\n </div> \r\n </div>\r\n\r\n <div class=\"row mb-2\">\r\n <div class=\"col-6 mb-2\">\r\n <div class=\"\">Number:</div>\r\n <div class=\"\">{{selectedIncomingCall?.userInfo?.c2cInformation?.number}}</div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"\">Language:</div>\r\n <div class=\"ml-2\">{{selectedIncomingCall?.userInfo?.c2cInformation?.language || '-'}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-2\">\r\n <div class=\"col-6 mb-2\">\r\n <div class=\"\">Extension:</div>\r\n <div class=\"ml-2\">{{selectedIncomingCall?.userInfo?.c2cInformation?.extension || '-'}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-3\">\r\n <div class=\"col-12 d-flex align-items-center mb-2\">\r\n <div class=\"me-2\">Image:</div>\r\n <div class=\"text-ellipsis\">\r\n <ng-container *ngIf=\"selectedIncomingCall?.userInfo?.c2cInformation?.image && selectedIncomingCall?.userInfo?.c2cInformation?.image !== '-'; else noImage\">\r\n <img src=\"{{selectedIncomingCall?.userInfo?.c2cInformation?.image}}\" alt=\"\" width=\"42\" height=\"42\" class=\"ml-2\"/>\r\n </ng-container>\r\n <ng-template #noImage>\r\n <span class=\"ml-2\">No Image Available</span>\r\n </ng-template>\r\n </div>\r\n </div> \r\n </div>\r\n\r\n <div class=\" mb-4\">\r\n <div class=\"\">\r\n <div class=\"\">Message:</div>\r\n <div class=\"text-ellipsis\">{{selectedIncomingCall?.userInfo?.c2cInformation?.message || '-'}}</div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-2\">\r\n <div class=\"col-6 mb-2\">\r\n <div class=\"\">Point Name:</div>\r\n <div class=\"\">{{selectedIncomingCall?.userInfo?.c2cInformation?.pointName || '-'}}</div>\r\n </div>\r\n <div class=\"col-6 mb-2\">\r\n <div class=\"\">Source Name:</div>\r\n <div class=\"\">{{selectedIncomingCall?.userInfo?.c2cInformation?.sourceName || '-'}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"call-action-btns mt-0\">\r\n <button class=\"call-btn receive-btn\" *ngIf=\"!selectedIncomingCall?.isCallConnected\">\r\n <span class=\"material-symbols-outlined\" (click)=\"acceptCallFromList(selectedIncomingCall)\"> call </span>\r\n </button>\r\n <button class=\"call-btn mute-btn\" *ngIf=\"selectedIncomingCall?.isCallConnected\" (click)=\"toggleMute(selectedIncomingCall)\" [ngClass]=\"{'active-mute': isMute}\">\r\n <span class=\"material-symbols-outlined\" *ngIf=\"isMute\"> mic_off </span>\r\n <span class=\"material-symbols-outlined\" *ngIf=\"!isMute\"> mic </span>\r\n </button>\r\n <button class=\"call-btn reject-btn\">\r\n <span class=\"material-symbols-outlined\" (click)=\"rejectCallFromList(selectedIncomingCall)\"> call_end </span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"wave-container\">\r\n <svg class=\"waves\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 24 150 28\" preserveAspectRatio=\"none\" shape-rendering=\"auto\" [ngStyle]=\"{'width': '756px'}\">\r\n <defs>\r\n <path id=\"gentle-wave\" d=\"M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z\" />\r\n </defs>\r\n <g class=\"parallax\">\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"0\" fill=\"rgba(255,255,255,0.7)\" />\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"3\" fill=\"rgba(255,255,255,0.5)\" /> \r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"7\" fill=\"#fff\" />\r\n </g>\r\n </svg>\r\n </div>\r\n</div>\r\n\r\n\r\n","import { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Call, Device } from '@twilio/voice-sdk';\r\nimport { ExtensionService } from '../../service/extension.service';\r\nimport { environment } from '../../environments/environments';\r\nimport swal from 'sweetalert2';\r\nimport { keypad } from '../../keypad';\r\nimport { interval, Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-call-progress',\r\n templateUrl: './call-progress.component.html',\r\n styleUrls: ['./call-progress.component.css']\r\n})\r\nexport class CallProgressComponent implements OnInit, OnChanges, AfterViewInit {\r\n @Input() callData: any;\r\n @Input() newIncomingCallData?: Call;\r\n @Input() newIncomingCallsList:any=[];\r\n @Input() deviceId:any;\r\n @Output() endCallEvent: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() incomingCallsNewInfo: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() minimiseEvent: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n device?: Device;\r\n call?: Call;\r\n showRingAnimation: boolean = false;\r\n timer: string = '00:00';\r\n intervalId: any;\r\n showKeypad: boolean = false;\r\n keypadVal = keypad;\r\n callInput: string = '';\r\n isMute: boolean = false;\r\n disbaleEndCallBtn: boolean = true;\r\n showClearBtn:boolean = false;\r\n isCollops=false;\r\n\r\n // Incoming call variables\r\n incomingCallDiv: boolean = false;\r\n @Output() incomingCallInitiated: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n // Recording\r\n callSid:any;\r\n isRecording:boolean=false;\r\n isPaused:boolean=false;\r\n timerSubscription?: Subscription;\r\n timeElapsed = 0; // in seconds\r\n recordCall:boolean=false;\r\n incomingCallSid:any;\r\n callStatus:string='ringing';\r\n incomingRecordCall?:any;\r\n selectedIncomingCall:any;\r\n\r\n isMinimised:boolean=false;\r\n\r\n constructor(private extensionService: ExtensionService, private cdr: ChangeDetectorRef) {\r\n console.log('Call Progress Component');\r\n }\r\n\r\n ngOnInit() {\r\n console.log('Call Progress Component');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) { \r\n console.log('Call Progress Component ngOnChanges');\r\n if (changes['callData']) { \r\n if (changes['callData'].currentValue?.isIncomingCall) {\r\n this.incomingCallDiv = true;\r\n this.cdr.detectChanges(); \r\n } else {\r\n this.startCall(changes['callData'].currentValue);\r\n }\r\n }\r\n if (changes['newIncomingCallData']) {\r\n try {\r\n if (changes['newIncomingCallData'].currentValue) {\r\n if (this.call && (this.call.status() == 'open')) {\r\n this.call.disconnect();\r\n this.call = changes['newIncomingCallData'].currentValue;\r\n this.call?.accept();\r\n this.callData.phone = this.call?.parameters['From'];\r\n this.callData.name = this.call?.customParameters.get('name');\r\n this.callData.img = this.call?.customParameters.get('image') || 'assets/images/user.jpg';\r\n this.incomingCallInitiated.emit();\r\n this.startTimer();\r\n }\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n // reserved\r\n }\r\n\r\n async startCall(callData:any) {\r\n try {\r\n this.showRingAnimation = true;\r\n const payload = {\r\n channelId: environment.channelId,\r\n userId: localStorage.getItem('userId'),\r\n to: callData.phone,\r\n scope: 'local',\r\n fromNumber: callData.from\r\n };\r\n\r\n const response:any = await this.initiateCall(payload);\r\n if (response.status == 200) {\r\n const { id: callAuthId, recordCall } = await this.getCallAuthId(response);\r\n this.getUserInformation(callAuthId)\r\n this.recordCall = recordCall; // Store the recordCall value\r\n const tokenData: any = await this.getOutgoingCallToken(callAuthId);\r\n await this.connectToDevice(tokenData.token, callData);\r\n\r\n // Poll the status for 30-45 seconds\r\n this.pollCallStatus(callAuthId);\r\n } else if (response.status == 201) {\r\n swal(\"Error\", response.message.join(\"<br/>\"), \"error\");\r\n this.endCall();\r\n }\r\n \r\n } catch (error) {\r\n this.showRingAnimation = false;\r\n this.handleError(error);\r\n this.endCall();\r\n }\r\n }\r\n\r\n private async initiateCall(payload:any){\r\n return await this.extensionService.initiateCall(payload).toPromise();\r\n }\r\n\r\n private async getCallAuthId(response:any) {\r\n return {\r\n id: response.callauth.id,\r\n recordCall: response.callauth.recordCall\r\n };\r\n }\r\n\r\n private async getOutgoingCallToken(callAuthId:string){\r\n return await this.extensionService.getOutgoingCallToken({ authId: callAuthId }).toPromise();\r\n }\r\n\r\n private async connectToDevice(token:any, callData:any){\r\n const options:any = {\r\n codecPreferences: ['opus', 'pcmu'],\r\n closeProtection: true,\r\n };\r\n\r\n this.device = new Device(token.value, options);\r\n this.call = await this.device.connect({\r\n params: {\r\n From: callData.from,\r\n To: callData.phone,\r\n Env: environment.abb,\r\n Token: token.id,\r\n Ext: callData.extNum\r\n },\r\n rtcConstraints: { audio: { deviceId: 'default' } },\r\n });\r\n this.setupEventListeners();\r\n }\r\n\r\n private setupEventListeners(){\r\n this.startTimer();\r\n this.device?.on('error', (err:any) => {\r\n console.log(err);\r\n this.showRingAnimation = false;\r\n this.stopTimer();\r\n });\r\n\r\n this.call?.on('error', (error:any) => {\r\n this.showRingAnimation = false;\r\n this.stopTimer();\r\n });\r\n\r\n this.call?.on('disconnect', () => {\r\n this.endCall();\r\n });\r\n\r\n this.call?.on('ringing', () => {\r\n });\r\n\r\n this.call?.on('reject', () => {\r\n this.endCall();\r\n });\r\n\r\n this.call?.on('accept', () => {\r\n this.showRingAnimation = false;\r\n this.disbaleEndCallBtn = false;\r\n });\r\n\r\n this.call?.on('messageReceived', (message:any) => {\r\n });\r\n }\r\n\r\n private startTimer(){\r\n let seconds = 0;\r\n this.intervalId = setInterval(() => {\r\n seconds++;\r\n this.timer = this.formatTime(seconds);\r\n }, 1000);\r\n }\r\n private stopTimer(){\r\n clearInterval(this.intervalId);\r\n this.timer = '00:00';\r\n }\r\n private formatTime(totalSeconds: number): string {\r\n const minutes = Math.floor(totalSeconds / 60);\r\n const seconds = totalSeconds % 60;\r\n return `${this.pad(minutes)}:${this.pad(seconds)}`;\r\n }\r\n private pad(value: number): string {\r\n return value < 10 ? `0${value}` : `${value}`;\r\n }\r\n private handleError(error:any){\r\n swal(\"Error\", error, \"error\");\r\n }\r\n\r\n endCall(){\r\n this.endCallEvent.emit();\r\n if (this.call) {\r\n this.call.disconnect();\r\n }\r\n\r\n this.showRingAnimation = false;\r\n this.stopTimer();\r\n this.maximiseDialpad();\r\n }\r\n\r\n toggleMute(){\r\n this.isMute = !this.isMute;\r\n this.call?.mute(this.isMute);\r\n }\r\n toggleKeypad(){\r\n this.showKeypad = !this.showKeypad;\r\n this.callInput = '';\r\n }\r\n onCallInputs(num:any){\r\n try {\r\n if (Number.isInteger(num) || num == '+' || num == '*' || num == '#') {\r\n if (num == '#') {\r\n new Audio(`/assets/dial-tones/dtmf/dtmf-hash-.mp3`).play();\r\n } else if (num == '*') {\r\n new Audio(`/assets/dial-tones/dtmf/dtmf-star-.mp3`).play();\r\n } else {\r\n new Audio(`/assets/dial-tones/dtmf/dtmf-${num}-.mp3`).play();\r\n }\r\n\r\n this.callInput = this.callInput + String(num);\r\n this.showClearBtn = true;\r\n }\r\n let str = String(num);\r\n this.call?.sendDigits(str);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n onCallInputEnter(ev:any){\r\n try {\r\n this.call?.sendDigits(String(ev.key));\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n closeIncomingCall(data:any){\r\n if (data.show) {\r\n this.startTimer();\r\n this.disbaleEndCallBtn = false;\r\n this.call = data.call;\r\n\r\n const incomingDetail = this.extensionService.getCallSid();\r\n this.incomingRecordCall = incomingDetail.recordCall;\r\n\r\n if (this.incomingRecordCall) {\r\n this.startRecording();\r\n } else {\r\n this.isRecording = false;\r\n }\r\n this.cdr.detectChanges();\r\n } else {\r\n this.endCallEvent.emit();\r\n }\r\n }\r\n clearInputs(){\r\n this.callInput = this.callInput.slice(0, -1);\r\n }\r\n minimiseDialpad(){\r\n this.minimiseEvent.emit(true);\r\n this.isMinimised = true;\r\n }\r\n maximiseDialpad(){\r\n this.minimiseEvent.emit(false);\r\n this.isMinimised = false;\r\n }\r\n\r\n toggleRecording(){\r\n if (this.isRecording) {\r\n this.stopRecording();\r\n } else {\r\n this.startRecording();\r\n }\r\n }\r\n startRecording(){\r\n let sid;\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n sid = this.incomingCallSid ? this.incomingCallSid : this.callSid;\r\n\r\n this.extensionService.getCallRecording(sid).subscribe(response => {\r\n this.isRecording = true;\r\n this.isPaused = false; \r\n this.timeElapsed = 0;\r\n this.startTimer1();\r\n }, error => {\r\n console.error('Error starting recording', error);\r\n });\r\n }\r\n stopRecording(){\r\n this.isRecording = false;\r\n this.isPaused = false;\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n }\r\n }\r\n pauseRecording(){\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n const sid = this.incomingCallSid ? this.incomingCallSid : this.callSid;\r\n this.extensionService.pauseOrResumeRecording(sid, 'pause').subscribe(response => {\r\n this.stopRecordingTimer();\r\n this.isPaused = true;\r\n }, error => {\r\n console.error('Error pausing recording:', error);\r\n });\r\n }\r\n resumeRecording(){\r\n let sid;\r\n const details = this.extensionService.getCallSid();\r\n this.incomingCallSid = details.callSid;\r\n this.incomingRecordCall = details.recordCall;\r\n sid = this.incomingCallSid ? this.incomingCallSid : this.callSid;\r\n this.extensionService.pauseOrResumeRecording(sid, 'resume').subscribe(response => {\r\n this.isPaused = false;\r\n this.startTimer1();\r\n }, error => {\r\n console.error('Error resuming recording', error);\r\n });\r\n }\r\n\r\n private startTimer1(){\r\n this.timerSubscription = interval(1000).subscribe(() => {\r\n this.timeElapsed++;\r\n });\r\n }\r\n private stopRecordingTimer(){\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe(); // Pause the timer\r\n this.timerSubscription = undefined; // Optionally reset the subscription\r\n }\r\n }\r\n getFormattedTime(){\r\n const minutes = Math.floor(this.timeElapsed / 60);\r\n const seconds = this.timeElapsed % 60;\r\n return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\r\n }\r\n\r\n pollCallStatus(callAuthId:string){\r\n const maxTime = 30000; // Poll for up to 30 seconds\r\n const pollInterval = 3000; // Poll every 3 seconds\r\n let elapsedTime = 0;\r\n const intervalId = setInterval(async () => {\r\n elapsedTime += pollInterval;\r\n try{\r\n const statusResponse:any = await this.extensionService.getCallStatus(callAuthId).toPromise();\r\n if (statusResponse && statusResponse.callDetails) {\r\n this.callStatus = statusResponse.callDetails.callStatus;\r\n if (this.callStatus === 'in-progress') {\r\n this.callSid = statusResponse.callDetails.callSid;\r\n if (this.recordCall && !this.isRecording) {\r\n this.startRecording();\r\n }\r\n clearInterval(intervalId);\r\n } else if (this.callStatus === 'completed') {\r\n clearInterval(intervalId);\r\n this.endCall();\r\n this.stopRecording();\r\n } else if (this.callStatus === 'ringing') {\r\n // Continue polling; do not clear the interval yet\r\n }\r\n }\r\n } catch (error){\r\n clearInterval(intervalId);\r\n }\r\n if (elapsedTime >= maxTime) {\r\n clearInterval(intervalId);\r\n }\r\n }, pollInterval);\r\n }\r\n\r\n getUserInformation(id:any){\r\n this.extensionService.getUserInformation(id).subscribe(response => {\r\n console.log(response)\r\n }, error => {\r\n console.error('Error starting recording', error);\r\n })\r\n }\r\n incomingCallsNewList(data:any){\r\n this.newIncomingCallsList = data;\r\n this.incomingCallsNewInfo.emit(this.newIncomingCallsList);\r\n }\r\n selectedIncomingCallInfo(data:any){\r\n this.selectedIncomingCall = data;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.callData.dial = false;\r\n if (this.timerSubscription) {\r\n this.timerSubscription.unsubscribe();\r\n }\r\n }\r\n}\r\n\r\n\r\n","<div class=\"call-container\" *ngIf=\"!isMinimised\" [ngClass]=\"{'collops': isCollops, 'incoming-call-container': selectedIncomingCall?.isClickExpand }\">\r\n <lib-incoming-call *ngIf=\"incomingCallDiv\" [incomingCallData]=\"callData\" [deviceId]=\"deviceId\" [newIncomingCallsList]=\"newIncomingCallsList\" (closeIncomingCallDiv)=\"closeIncomingCall($event)\" \r\n (incomingCallsNewList)=\"incomingCallsNewList($event)\" (selectedIncomingCallInfo)=\"selectedIncomingCallInfo($event)\"></lib-incoming-call>\r\n <div [ngStyle]=\"{'display': 'flex', 'flex-direction': 'column', 'position': 'relative', 'width': '100%', 'left': callData?.isIncomingCall ? '100px' : '0'}\">\r\n \r\n <div class=\"call-animation\" [ngClass]=\"{'call-animation-play': showRingAnimation}\">\r\n <img class=\"avatar-img\" [src]=\"callData.img\" alt=\"\" width=\"120\" />\r\n </div>\r\n <div class=\"callerDetails\">\r\n <h1 [ngStyle]=\"{'margin-top': showKeypad ? '0': '8px'}\">{{callData.name}}</h1>\r\n <p>{{callData.displayNum ? callData.displayNum : callData.phone }}</p>\r\n <h4 style=\"margin-top: 4px\">{{timer}}</h4>\r\n </div>\r\n <div class=\"record-action-btns\" [ngStyle]=\"{'margin-top': showKeypad ? '0': '20px'}\">\r\n <div class=\"record-btn-container\">\r\n <button class=\"record-btn start-stop\" *ngIf=\"!isRecording\" [ngClass]=\"{'recording': isRecording, 'stopped': !isRecording}\" (click)=\"toggleRecording()\" [title]=\"isRecording ? 'Stop Recording' : 'Start Recording'\" [disabled]=\"disbaleEndCallBtn\">\r\n <span class=\"recording-icon\"></span>\r\n </button> \r\n <div class=\"pause-resume-btns\">\r\n <button class=\"record-btn pause-resume\" *ngIf=\"isRecording && !isPaused\" (click)=\"pauseRecording()\">\r\n <span class=\"material-symbols-outlined\"> pause </span>\r\n </button>\r\n <button class=\"record-btn pause-resume\" *ngIf=\"isPaused\" (click)=\"resumeRecording()\">\r\n <span class=\"material-symbols-outlined\"> play_arrow </span>\r\n </button>\r\n </div>\r\n </div>\r\n <div *ngIf=\"isRecording\" class=\"timer-display\">\r\n {{ getFormattedTime() }}\r\n </div>\r\n </div>\r\n <div *ngIf=\"showKeypad\" class=\"sendDigit\">\r\n <input type=\"text\" name=\"call-inputs\" id=\"call-input\" [(ngModel)]=\"callInput\" (keyup)=\"onCallInputEnter($event)\">\r\n <span class=\"material-symbols-outlined input-clear-btn\" *ngIf=\"callInput\" (click)=\"clearInputs()\">close_small</span>\r\n </div>\r\n <div class=\"btn-container justify-content-center\" *ngIf=\"showKeypad\">\r\n <div class=\"key-btn\" *ngFor=\"let key of keypadVal\" (click)=\"onCallInputs(key.num)\">\r\n {{key.num}}\r\n <span class=\"btn-albhabets\">{{key.text ? key.text : '&nbsp;'}}</span>\r\n </div>\r\n </div>\r\n <div class=\"call-action-btns\" [ngStyle]=\"{'margin-top': showKeypad ? '0': '160px'}\">\r\n <button class=\"call-sec-btn\" [disabled]=\"disbaleEndCallBtn\" [ngStyle]=\"{'top': showKeypad ? '0': '-70px'}\" (click)=\"toggleMute()\">\r\n <span class=\"material-symbols-outlined\" *ngIf=\"isMute\"> mic_off </span>\r\n <span class=\"material-symbols-outlined\" *ngIf=\"!isMute\"> mic </span>\r\n\r\n </button>\r\n <button class=\"call-btn end-call-btn\" [disabled]=\"disbaleEndCallBtn\" (click)=\"endCall()\">\r\n <span class=\"material-symbols-outlined\"> call_end </span>\r\n </button>\r\n <button class=\"call-sec-btn\" [ngStyle]=\"{'top': showKeypad ? '0': '-70px'}\" [disabled]=\"disbaleEndCallBtn\">\r\n <span class=\"material-symbols-outlined\" (click)=\"toggleKeypad()\"> transition_dissolve </span>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"wave-container\">\r\n <svg class=\"waves\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n viewBox=\"0 24 150 28\" preserveAspectRatio=\"none\" shape-rendering=\"auto\">\r\n <defs>\r\n <path id=\"gentle-wave\" d=\"M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z\" />\r\n </defs>\r\n <g class=\"parallax\">\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"0\" fill=\"rgba(255,255,255,0.7)\" />\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"3\" fill=\"rgba(255,255,255,0.5)\" />\r\n <use xlink:href=\"#gentle-wave\" x=\"48\" y=\"7\" fill=\"#fff\" />\r\n </g>\r\n </svg>\r\n </div>\r\n</div>\r\n\r\n<div class=\"min-call-container\" *ngIf=\"isMinimised\">\r\n <span class=\"material-symbols-outlined fullscreen\" (click)=\"maximiseDialpad()\"> open_in_full </span>\r\n <div style=\"display: flex; width: 100%\">\r\n <div>\r\n <div class=\"min-call-animation\" id=\"call-avatar\">\r\n <img class=\"min-avatar-img\" [src]=\"callData.img\" alt=\"\" />\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"min-callerDetails\">\r\n <div class=\"name\">\r\n {{callData.name}}\r\n </div>\r\n <p style=\"margin: 0\">{{callData.displayNum ? callData.displayNum : callData.phone }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"min-btn-container\">\r\n <div class=\"min-timer\">{{timer}}</div>\r\n <button class=\"min-call-sec-btn\" (click)=\"toggleMute()\" [disabled]=\"disbaleEndCallBtn\">\r\n <span class=\"material-symbols-outlined\" *ngIf=\"isMute\"> mic_off </span>\r\n <span class=\"material-symbols-outlined\" *ngIf=\"!isMute\"> mic </span>\r\n </button>\r\n <button class=\"min-call-btn end-call-btn\" [disabled]=\"disbaleEndCallBtn\" (click)=\"endCall()\">\r\n <span class=\"material-symbols-outlined\"> call_end </span>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CallProgressComponent } from './components/call-progress/call-progress.component';\n\n@Component({\n selector: 'lib-dialbox',\n template: `\n <div *ngIf=\"!isDialpadHidden\">\n <lib-call-progress\n [callData]=\"contactInfo\"\n [deviceId]=\"deviceId\"\n (endCallEvent)=\"onEndCall()\"\n (minimiseEvent)=\"onMinimise($event)\">\n </lib-call-progress>\n </div>\n `,\n styles: [\n ]\n})\nexport class DialboxComponent {\n @Input() isDialpadHidden: boolean = false;\n @Input() contactInfo: any;\n @Input() deviceId: any;\n\n @Output() closeDialpadEvent: EventEmitter<void> = new EventEmitter<void>();\n @Output() minimiseEvent: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n onEndCall() {\n this.closeDialpadEvent.emit();\n }\n\n onMinimise(val: boolean) {\n this.minimiseEvent.emit(val);\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TwilioService } from '../../service/twilio.service';\r\n\r\n@Component({\r\n selector: 'lib-caller-id-dialog',\r\n templateUrl: './caller-id-dialog.component.html',\r\n styleUrls: ['./caller-id-dialog.component.css']\r\n})\r\nexport class CallerIdDialogComponent implements OnInit {\r\n storedTheme: string = localStorage.getItem('theme-color') || 'blue';\r\n alertToggle: boolean = true;\r\n constructor(\r\n private router: Router,\r\n private twilServ: TwilioService,\r\n ) {}\r\n\r\n token:string = '';\r\n ngOnInit(){\r\n this.alertToggle = (localStorage.getItem('alertToggle') == 'true') ? true : false;\r\n this.token = localStorage.getItem('ext_token') || '';\r\n }\r\n onConfirm(): void {\r\n // noop; kept for parity\r\n }\r\n onCancel(): void {\r\n // noop; kept for parity\r\n }\r\n redirectToCallingPreference(){\r\n this.router.navigateByUrl('/extension/caller-id/' + this.token);\r\n // downstream consumers expect to capture this; in app usage it closes dialog\r\n }\r\n proceed(){\r\n // downstream consumers expect to capture this; in app usage it closes dialog\r\n }\r\n closeModal(){\r\n // downstream consumers expect to capture this; in app usage it closes dialog\r\n }\r\n hideMessage(ev:any){\r\n this.twilServ.toggleCallerIdAlert.next(ev.target.checked);\r\n let val = ev.target.checked ? 'true' : 'false';\r\n localStorage.setItem('isAlertEnable', val);\r\n }\r\n doNotShowAgain(){\r\n console.log('doNotShowAgain')\r\n }\r\n}\r\n\r\n\r\n","<div class=\"main-theme {{storedTheme}}\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\"> Caller ID Not Set</h5>\r\n <button class=\"close\" (click)=\"closeModal()\">\r\n <span>x</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <p class=\"mb-1\"><strong>There is no caller ID set in your account</strong> <br /></p>\r\n <p>The receiver will not be able to identify your call or call you back</p>\r\n <div class=\"d-flex align-items-center justify-content-center\">\r\n <input type=\"checkbox\" checked (change)=\"hideMessage($event)\" [(ngModel)]=\"alertToggle\" class=\"mr-2\">\r\n <label for=\"\" class=\"mb-0 text-muted\">I do not want to see this message again</label>\r\n </div>\r\n <button class=\"btn btn-black-outline\" (click)=\"doNotShowAgain()\">Do not show this message again</button>\r\n </div>\r\n <div class=\"modal-footer border-top d-flex justify-content-between\">\r\n <button class=\"btn btn-black-outline\" (click)=\"redirectToCallingPreference()\">Click to set caller ID</button>\r\n \r\n <button class=\"btn btn-blue ms-2\" (click)=\"proceed()\">Proceed without Caller ID</button>\r\n </div>\r\n</div>\r\n\r\n\r\n","import { NgModule } from '@angular/core';\nimport { DialboxComponent } from './dialbox.component';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CallProgressComponent } from './components/call-progress/call-progress.component';\nimport { IncomingCallComponent } from './components/call-progress/incoming-call/incoming-call.component';\nimport { CallerIdDialogComponent } from './components/caller-id-dialog/caller-id-dialog.component';\n\n\n\n@NgModule({\n declarations: [\n DialboxComponent,\n CallProgressComponent,\n CallerIdDialogComponent,\n IncomingCallComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n HttpClientModule\n ],\n exports: [\n DialboxComponent,\n IncomingCallComponent,\n CallProgressComponent,\n CallerIdDialogComponent\n ]\n})\nexport class DialboxModule { }\n","/*\n * Public API Surface of dialbox\n */\n\nexport * from './lib/dialbox.service';\nexport * from './lib/dialbox.component';\nexport * from './lib/dialbox.module';\nexport * from './lib/service/ip-address.service';\nexport * from './lib/service/extension.service';\nexport * from './lib/service/twilio.service';\nexport * from './lib/service/notification.service';\nexport * from './lib/environments/environments';\nexport * from './lib/shared/global-constant';\nexport * from './lib/keypad';\nexport * from './lib/components/call-progress/call-progress.component';\nexport * from './lib/components/call-progress/incoming-call/incoming-call.component';\nexport * from './lib/components/caller-id-dialog/caller-id-dialog.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.IpAddressService","i1.TwilioService","i2.ExtensionService","i3.NotificationService","i1.ExtensionService","i2.TwilioService","i2","i4.IncomingCallComponent","i1","i2.CallProgressComponent"],"mappings":"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"}