@chat21/chat21-ionic 3.4.30 → 3.4.32-rc1

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.
Files changed (90) hide show
  1. package/CHANGELOG.md +131 -2
  2. package/angular.json +1 -0
  3. package/package.json +1 -1
  4. package/src/app/app.component.html +3 -1
  5. package/src/app/app.component.ts +72 -13
  6. package/src/app/chatlib/conversation-detail/message/image/image.component.html +1 -0
  7. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +19 -0
  8. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +14 -2
  9. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +39 -2
  10. package/src/app/chatlib/list-conversations-component/list-conversations.module.ts +14 -0
  11. package/src/app/components/canned-response/canned-response.component.html +26 -23
  12. package/src/app/components/canned-response/canned-response.component.scss +0 -2
  13. package/src/app/components/canned-response/canned-response.component.ts +3 -1
  14. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +24 -1
  15. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +30 -0
  16. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +39 -9
  17. package/src/app/components/conversation-info/info-content/info-content.component.ts +2 -2
  18. package/src/app/components/conversation-info/info-group/info-group.component.ts +23 -21
  19. package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.html +1 -1
  20. package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.ts +5 -1
  21. package/src/app/components/navbar/navbar.component.html +35 -9
  22. package/src/app/components/navbar/navbar.component.scss +64 -0
  23. package/src/app/components/navbar/navbar.component.ts +100 -42
  24. package/src/app/components/project-item/project-item.component.ts +79 -51
  25. package/src/app/components/sidebar/sidebar.component.html +65 -45
  26. package/src/app/components/sidebar/sidebar.component.ts +110 -117
  27. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +3 -3
  28. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +15 -22
  29. package/src/app/directives/html-entities-encode.pipe.ts +20 -5
  30. package/src/app/modals/create-ticket/create-ticket.page.ts +4 -2
  31. package/src/app/pages/conversation-detail/conversation-detail.page.html +7 -3
  32. package/src/app/pages/conversation-detail/conversation-detail.page.ts +95 -7
  33. package/src/app/pages/conversations-list/conversations-list.module.ts +3 -5
  34. package/src/app/pages/conversations-list/conversations-list.page.html +2 -0
  35. package/src/app/pages/conversations-list/conversations-list.page.ts +51 -11
  36. package/src/app/pages/unassigned-conversations/unassigned-conversations.module.ts +16 -4
  37. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +41 -17
  38. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +10 -1
  39. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +114 -9
  40. package/src/app/services/global-settings/global-settings.service.ts +11 -3
  41. package/src/app/services/nav-proxy.service.ts +0 -1
  42. package/src/app/services/project_users/project-users.service.spec.ts +16 -0
  43. package/src/app/services/project_users/project-users.service.ts +63 -0
  44. package/src/app/services/projects/project.service.ts +2 -1
  45. package/src/app/services/tiledesk/tiledesk.service.ts +21 -16
  46. package/src/app/services/triggerEvents/triggerEvents.ts +28 -0
  47. package/src/app/services/websocket/websocket-js.ts +59 -534
  48. package/src/app/services/websocket/websocket-js_old.ts +578 -0
  49. package/src/app/services/websocket/websocket.service.ts +59 -10
  50. package/src/app/services/websocket/websocket.worker.ts +242 -0
  51. package/src/app/shared/shared.module.ts +11 -2
  52. package/src/app/utils/globals.ts +2 -0
  53. package/src/app/utils/permissions.constants.ts +138 -0
  54. package/src/app/utils/project-utils.ts +2 -2
  55. package/src/app/utils/utils.ts +18 -1
  56. package/src/assets/i18n/ar.json +11 -1
  57. package/src/assets/i18n/az.json +11 -1
  58. package/src/assets/i18n/de.json +11 -1
  59. package/src/assets/i18n/en.json +11 -1
  60. package/src/assets/i18n/es.json +11 -1
  61. package/src/assets/i18n/fr.json +11 -1
  62. package/src/assets/i18n/it.json +13 -3
  63. package/src/assets/i18n/kk.json +11 -1
  64. package/src/assets/i18n/pt.json +11 -1
  65. package/src/assets/i18n/ru.json +11 -1
  66. package/src/assets/i18n/sr.json +11 -1
  67. package/src/assets/i18n/sv.json +11 -1
  68. package/src/assets/i18n/tr.json +11 -1
  69. package/src/assets/i18n/uk.json +11 -1
  70. package/src/assets/i18n/uz.json +12 -1
  71. package/src/assets/img/no_data_found.png +0 -0
  72. package/src/assets/js/agentDesktop-sdk.js +55 -0
  73. package/src/assets/js/chat21client.js +36 -0
  74. package/src/assets/js/mqtt-keepalive-worker.js +53 -0
  75. package/src/assets/test.html +5 -2
  76. package/src/chat-config-template.json +1 -0
  77. package/src/chat-config.json +1 -0
  78. package/src/chat21-core/models/projectUsers.ts +19 -0
  79. package/src/chat21-core/models/project_user.ts +2 -1
  80. package/src/chat21-core/providers/abstract/upload.service.ts +5 -1
  81. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
  82. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +136 -9
  83. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +1 -1
  84. package/src/chat21-core/providers/native/native-image-repo.ts +1 -1
  85. package/src/chat21-core/providers/native/native-upload-service.ts +143 -45
  86. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +3 -0
  87. package/src/chat21-core/utils/constants.ts +5 -0
  88. package/src/chat21-core/utils/convertRequestToConversation.ts +1 -1
  89. package/src/chat21-core/utils/utils.ts +53 -3
  90. package/src/variables.scss +3 -0
@@ -1,5 +1,6 @@
1
1
  import { Component, Input, OnInit, SecurityContext } from '@angular/core';
2
- import { ModalController } from '@ionic/angular';
2
+ import { AlertController, ModalController } from '@ionic/angular';
3
+ import { Router } from '@angular/router';
3
4
  import { NavProxyService } from 'src/app/services/nav-proxy.service';
4
5
  import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
5
6
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
@@ -7,6 +8,9 @@ import { DomSanitizer } from '@angular/platform-browser'
7
8
  import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service';
8
9
  import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
9
10
  import { EventsService } from 'src/app/services/events-service';
11
+ import { ConversationModel } from 'src/chat21-core/models/conversation';
12
+ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
13
+ import { TiledeskService } from 'src/app/services/tiledesk/tiledesk.service';
10
14
 
11
15
 
12
16
  @Component({
@@ -19,6 +23,14 @@ export class UnassignedConversationsPage implements OnInit {
19
23
  @Input() iframe_URL: any;
20
24
  @Input() callerBtn: string;
21
25
  @Input() isMobile: boolean;
26
+ /** Lista conversazioni unassigned passata da project-item (calcolata da wsRequestsList) */
27
+ @Input() unassignedConversations: ConversationModel[] = [];
28
+ @Input() stylesMap: Map<string, string>;
29
+ @Input() translationMapConversation: Map<string, string>;
30
+
31
+ /** Array salvato localmente per uso nella page */
32
+ unassignedConversationsList: ConversationModel[] = [];
33
+ uidConvSelected: string;
22
34
  // @Input() prjctsxpanel_url: any;
23
35
  // @Input() unassigned_convs_url: any;
24
36
 
@@ -34,19 +46,32 @@ export class UnassignedConversationsPage implements OnInit {
34
46
  constructor(
35
47
  private modalController: ModalController,
36
48
  private navService: NavProxyService,
49
+ private alertController: AlertController,
50
+ private router: Router,
37
51
  private sanitizer: DomSanitizer,
38
52
  private translateService: CustomTranslateService,
39
- private events : EventsService
53
+ private events: EventsService,
54
+ private tiledeskAuthService: TiledeskAuthService,
55
+ private tiledeskService: TiledeskService
40
56
  ) { }
41
57
 
42
58
  ngOnInit() {
43
59
  const keys = [
44
60
  'UnassignedConversations',
45
61
  'NewConversations',
46
- 'PIN_A_PROJECT'
62
+ 'PIN_A_PROJECT',
63
+ 'LABEL_MSG_PUSH_START_CHAT'
47
64
  ];
48
65
  this.translationMap = this.translateService.translateLanguage(keys);
49
- this.buildIFRAME();
66
+ this.unassignedConversationsList = this.unassignedConversations ?? [];
67
+ if (!this.stylesMap) {
68
+ this.stylesMap = new Map([['themeColor', '#165CEE']]);
69
+ }
70
+ if (!this.translationMapConversation) {
71
+ this.translationMapConversation = this.translateService.translateLanguage(['CLOSED', 'Resolve']);
72
+ }
73
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] unassignedConversationsList', this.unassignedConversationsList);
74
+ // this.buildIFRAME();
50
75
  this.listenToPostMsg();
51
76
  this.hideHotjarFeedbackBtn();
52
77
  this.events.subscribe('style', (data)=>this.loadStyle(data))
@@ -117,6 +142,46 @@ export class UnassignedConversationsPage implements OnInit {
117
142
 
118
143
  }
119
144
 
145
+ async presentAlertConfirmJoinRequest(request: ConversationModel) {
146
+ var iframeWin = <HTMLIFrameElement>document.getElementById("unassigned-convs-iframe")
147
+
148
+ const isIFrame = (input: HTMLElement | null): input is HTMLIFrameElement =>
149
+ input !== null && input.tagName === 'IFRAME';
150
+
151
+ const keys = ['YouAreAboutToJoinThisChat', 'Cancel', 'AreYouSure'];
152
+ const translationMap = this.translateService.translateLanguage(keys);
153
+
154
+ const alert = await this.alertController.create({
155
+ cssClass: 'my-custom-class',
156
+ header: translationMap.get('AreYouSure'),
157
+ message: translationMap.get('YouAreAboutToJoinThisChat'),
158
+ buttons: [
159
+ {
160
+ text: translationMap.get('Cancel'),
161
+ role: 'cancel',
162
+ cssClass: 'secondary',
163
+ handler: (blah) => {
164
+ }
165
+ }, {
166
+ text: 'Ok',
167
+ handler: () => {
168
+ let user = this.tiledeskAuthService.getCurrentUser();
169
+ this.tiledeskService.addParticipant(request.uid, user.uid, request.attributes.projectId).subscribe((res: any) => {
170
+ this.logger.log('[APP-COMP] addParticipant - RES ', res);
171
+ this.onClose(request);
172
+ }, (error) => {
173
+ this.logger.error('[APP-COMP] addParticipant - ERROR ', error);
174
+ }, () => {
175
+ this.logger.log('[APP-COMP] addParticipant - COMPLETE ');
176
+ });
177
+ }
178
+ }
179
+ ]
180
+ });
181
+
182
+ await alert.present();
183
+ }
184
+
120
185
  onLoad(iframe){
121
186
  let styleData = localStorage.getItem('custom_style')
122
187
  if(styleData && styleData !== 'undefined'){
@@ -185,18 +250,58 @@ export class UnassignedConversationsPage implements OnInit {
185
250
  }
186
251
 
187
252
 
188
- async onClose() {
253
+ onConversationSelected(conversation: ConversationModel) {
254
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] onConversationSelected', conversation);
255
+ this.uidConvSelected = conversation?.uid;
256
+ const fullName = conversation?.conversation_with_fullname || '';
257
+ const pageUrl = 'conversation-detail/' + conversation.uid + '/' + encodeURIComponent(fullName) + '/unassigned';
258
+ this.modalController.dismiss({ conversation }).then(() => {
259
+ this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
260
+ }).catch(() => {
261
+ this.navService.pop();
262
+ this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
263
+ });
264
+ }
265
+
266
+ onCloseConversation(conversation: ConversationModel) {
267
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] onCloseConversation', conversation);
268
+ this.tiledeskService.closeSupportGroup(conversation.attributes.projectId, conversation.uid).subscribe((res: any) => {
269
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] archiveRequest - RES ', res);
270
+ this.onClose();
271
+ }, (error) => {
272
+ this.logger.error('[UNASSIGNED-CONVS-PAGE] archiveRequest - ERROR ', error);
273
+ }, () => {
274
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] archiveRequest - COMPLETE ');
275
+ });
276
+ }
277
+
278
+ onJoinConversation(conversation: ConversationModel) {
279
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] onJoinConversation', conversation);
280
+ this.presentAlertConfirmJoinRequest(conversation)
281
+ }
282
+
283
+ onImageLoaded(conversation: ConversationModel) {
284
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] onImageLoaded', conversation);
285
+ }
286
+
287
+ onConversationLoaded(conversation: ConversationModel) {
288
+ this.logger.log('[UNASSIGNED-CONVS-PAGE] onConversationLoaded', conversation);
289
+ }
290
+
291
+ async onClose(conversation?: ConversationModel) {
189
292
  this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL')
190
- this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL isModalOpened ', await this.modalController.getTop())
191
293
  const isModalOpened = await this.modalController.getTop();
192
294
  this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL isModalOpened ', isModalOpened)
193
295
  if (isModalOpened) {
194
- this.modalController.dismiss({
195
- confirmed: true
196
- });
296
+ await this.modalController.dismiss({ confirmed: true });
197
297
  } else {
198
298
  this.navService.pop();
199
299
  }
300
+ if (conversation) {
301
+ const fullName = conversation.conversation_with_fullname || '';
302
+ const pageUrl = 'conversation-detail/' + conversation.uid + '/' + encodeURIComponent(fullName) + '/active';
303
+ this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
304
+ }
200
305
  }
201
306
 
202
307
  }
@@ -88,14 +88,14 @@ export class GlobalSettingsService {
88
88
  this.logger.debug('[GLOBAL-SET] setVariableFromStorage :::::::: SET VARIABLE ---------->', Object.keys(globals));
89
89
  for (const key of Object.keys(globals)) {
90
90
  const val = this.appStorageService.getItem(key);
91
- // this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals KEY ---------->', key);
92
- // this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals VAL ---------->', val);
91
+ this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals KEY ---------->', key);
92
+ this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals VAL ---------->', val);
93
93
  if (val && val !== null) {
94
94
  // globals.setParameter(key, val);
95
95
  globals[key] = stringToBoolean(val);
96
96
  }
97
97
  // this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals == ---------->', globals);
98
- }
98
+ }
99
99
  }
100
100
 
101
101
  /**
@@ -113,6 +113,7 @@ export class GlobalSettingsService {
113
113
  TEMP = getParameterByName(windowContext, 'tiledesk_supportMode');
114
114
  if (TEMP) {
115
115
  globals.supportMode = stringToBoolean(TEMP);
116
+ this.appStorageService.setItem('supportMode', String(globals.supportMode))
116
117
  }
117
118
 
118
119
  TEMP = getParameterByName(windowContext, 'tiledesk_lang');
@@ -138,6 +139,13 @@ export class GlobalSettingsService {
138
139
  TEMP = getParameterByName(windowContext, 'tiledesk_projectID');
139
140
  if (TEMP) {
140
141
  globals.projectID = TEMP;
142
+ this.appStorageService.setItem('projectID', TEMP)
143
+ }
144
+
145
+ TEMP = getParameterByName(windowContext, 'tiledesk_logOut');
146
+ if (TEMP) {
147
+ globals.logOut = stringToBoolean(TEMP);
148
+ this.appStorageService.setItem('logOut', TEMP)
141
149
  }
142
150
 
143
151
  }
@@ -4,7 +4,6 @@ import { Router, NavigationExtras } from '@angular/router';
4
4
 
5
5
  // utils
6
6
  import { checkPlatformIsMobile } from '../../chat21-core/utils/utils';
7
- // import { ConversationDetailPage } from '../pages/conversation-detail/conversation-detail.page';
8
7
 
9
8
  import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
10
9
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
@@ -0,0 +1,16 @@
1
+ import { TestBed } from '@angular/core/testing';
2
+
3
+ import { ProjectUsersService } from './project-users.service';
4
+
5
+ describe('ProjectUsersService', () => {
6
+ let service: ProjectUsersService;
7
+
8
+ beforeEach(() => {
9
+ TestBed.configureTestingModule({});
10
+ service = TestBed.inject(ProjectUsersService);
11
+ });
12
+
13
+ it('should be created', () => {
14
+ expect(service).toBeTruthy();
15
+ });
16
+ });
@@ -0,0 +1,63 @@
1
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+ import { map } from 'rxjs/operators';
5
+ import { ProjectUser } from 'src/chat21-core/models/projectUsers';
6
+ import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
7
+ import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
8
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
9
+
10
+ @Injectable({
11
+ providedIn: 'root'
12
+ })
13
+ export class ProjectUsersService {
14
+
15
+ private SERVER_BASE_URL: string;
16
+ private tiledeskToken: string;
17
+
18
+ private logger: LoggerService = LoggerInstance.getInstance();
19
+ constructor(
20
+ public http: HttpClient,
21
+ public appStorageService: AppStorageService
22
+ ) {}
23
+
24
+ initialize(serverBaseUrl: string) {
25
+ this.logger.log('[TILEDESK-PROJECT_USERS-SERV] - initialize serverBaseUrl', serverBaseUrl);
26
+ this.SERVER_BASE_URL = serverBaseUrl;
27
+ this.tiledeskToken = this.appStorageService.getItem('tiledeskToken')
28
+ }
29
+
30
+ public getProjectUsersByProjectId(project_id: string): Observable<ProjectUser[]> {
31
+ const url = this.SERVER_BASE_URL + project_id + '/project_users/';
32
+ this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER URL', url);
33
+
34
+ const httpOptions = {
35
+ headers: new HttpHeaders({
36
+ 'Content-Type': 'application/json',
37
+ Authorization: this.tiledeskToken
38
+ })
39
+ };
40
+ return this.http.get(url, httpOptions).pipe(map((res: any) => {
41
+ this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER RES ', res);
42
+ return res
43
+ }))
44
+ }
45
+
46
+ public getProjectUserByProjectId(project_id: string): Promise<ProjectUser> {
47
+ const url = this.SERVER_BASE_URL + project_id + '/project_users/me';
48
+ this.logger.log('[TILEDESK-SERVICE]- GET PROJECT-USER BY USER-ID - URL', url);
49
+
50
+ const httpOptions = {
51
+ headers: new HttpHeaders({
52
+ 'Content-Type': 'application/json',
53
+ Authorization: this.tiledeskToken
54
+ })
55
+ };
56
+
57
+ return this.http.get(url, httpOptions).pipe(map((res: any) => {
58
+ this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER RES ', res);
59
+ return res[0]
60
+ })).toPromise();
61
+ }
62
+
63
+ }
@@ -7,6 +7,7 @@ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance'
7
7
  import { AppConfigProvider } from '../app-config';
8
8
  import { Observable } from 'rxjs';
9
9
  import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
10
+ import { ProjectUser } from 'src/chat21-core/models/project_user';
10
11
 
11
12
  @Injectable({
12
13
  providedIn: 'root'
@@ -35,7 +36,7 @@ export class ProjectService {
35
36
  this.tiledeskToken = this.appStorageService.getItem('tiledeskToken')
36
37
  }
37
38
 
38
- public getProjects(): Observable<Project[]> {
39
+ public getProjects(): Observable<ProjectUser[]> {
39
40
  const url = this.SERVER_BASE_URL + "projects/";
40
41
  this.logger.log('[PROJECTS-SERVICE] getProjects - URL ', url);
41
42
 
@@ -93,22 +93,6 @@ export class TiledeskService {
93
93
  }))
94
94
  }
95
95
 
96
- public getProjectUsersByProjectId(project_id: string) {
97
- const url = this.SERVER_BASE_URL + project_id + '/project_users/';
98
- this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER URL', url);
99
-
100
- const httpOptions = {
101
- headers: new HttpHeaders({
102
- 'Content-Type': 'application/json',
103
- Authorization: this.tiledeskToken
104
- })
105
- };
106
- return this.http.get(url, httpOptions).pipe(map((res: any) => {
107
- this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER RES ', res);
108
- return res
109
- }))
110
- }
111
-
112
96
  public getAllLeadsActiveWithLimit(project_id: string, limit: number) {
113
97
  const url = this.SERVER_BASE_URL + project_id + '/leads?limit=' + limit + '&with_fullname=true';
114
98
  this.logger.log('[TILEDESK-SERVICE] - GET ALL ACTIVE LEADS (LIMIT 10000) - URL', url);
@@ -260,5 +244,26 @@ export class TiledeskService {
260
244
  return res
261
245
  }))
262
246
  }
247
+
248
+ // -----------------------------------------------------------------------------------------
249
+ // @ Add participant to request
250
+ // -----------------------------------------------------------------------------------------
251
+ public addParticipant(requestid: string, userid: string, project_id: string) {
252
+ const url = this.SERVER_BASE_URL + project_id + '/requests/' + requestid + '/participants';
253
+ this.logger.log('[TILEDESK-SERVICE] addParticipant - URL ', url)
254
+ const httpOptions = {
255
+ headers: new HttpHeaders({
256
+ 'Content-Type': 'application/json',
257
+ 'Authorization': this.tiledeskToken
258
+ })
259
+ };
260
+
261
+ const body = { 'member': userid };
262
+
263
+ return this.http.post(url, JSON.stringify(body), httpOptions).pipe(map((res: any) => {
264
+ this.logger.log('[TILEDESK-SERVICE] addParticipant - RES ', res);
265
+ return res
266
+ }))
267
+ }
263
268
 
264
269
  }
@@ -102,5 +102,33 @@ export class TriggerEvents {
102
102
  }
103
103
  }
104
104
 
105
+ public triggerOnUpdateNewConversationBadge(detailObj: {}) {
106
+ this.logger.debug(' ---------------- triggerOnUpdateNewConversationBadge ---------------- ', detailObj);
107
+ try {
108
+ const onBeforeInit = new CustomEvent('onUpdateNewConversationBadge', { detail: detailObj });
109
+ const windowContext = this.windowContext;
110
+ if (windowContext){
111
+ // windowContext.document.dispatchEvent(onNewConversation);
112
+ windowContext.postMessage({type: "onUpdateNewConversationBadge", detail: detailObj }, '*')
113
+ }
114
+ } catch (e) {
115
+ this.logger.error('[TRIGGER-HANDLER] > Error:' + e);
116
+ }
117
+ }
118
+
119
+ public triggerOnOpenTicketExternally(detailObj: {}) {
120
+ this.logger.debug(' ---------------- triggerOnOpenTicketExternally ---------------- ', detailObj);
121
+ try {
122
+ const onBeforeInit = new CustomEvent('onOpenTicketExternally', { detail: detailObj });
123
+ const windowContext = this.windowContext;
124
+ if (windowContext){
125
+ // windowContext.document.dispatchEvent(onNewConversation);
126
+ windowContext.postMessage({type: "onOpenTicketExternally", detail: detailObj }, '*')
127
+ }
128
+ } catch (e) {
129
+ this.logger.error('[TRIGGER-HANDLER] > Error:' + e);
130
+ }
131
+ }
132
+
105
133
 
106
134
  }