@chat21/chat21-ionic 3.4.27-rc8 → 3.4.27

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 (153) hide show
  1. package/CHANGELOG.md +4 -49
  2. package/angular.json +0 -1
  3. package/package.json +1 -1
  4. package/src/app/app.component.ts +13 -68
  5. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.scss +3 -3
  6. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +1 -1
  7. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +1 -1
  8. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.html +1 -1
  9. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.ts +4 -4
  10. package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.scss +3 -3
  11. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +9 -9
  12. package/src/app/components/bubbleMessageInfo-popover/bubbleinfo-popover.component.html +1 -1
  13. package/src/app/components/canned-response/canned-response.component.html +23 -26
  14. package/src/app/components/canned-response/canned-response.component.scss +2 -0
  15. package/src/app/components/canned-response/canned-response.component.ts +1 -3
  16. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +8 -8
  17. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +1 -24
  18. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +0 -30
  19. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +16 -29
  20. package/src/app/components/copilot-popover/copilot-popover.component.html +1 -1
  21. package/src/app/components/navbar/navbar.component.html +3 -3
  22. package/src/app/components/navbar/navbar.component.ts +38 -29
  23. package/src/app/components/project-item/project-item.component.ts +11 -11
  24. package/src/app/components/sidebar/sidebar.component.html +47 -67
  25. package/src/app/components/sidebar/sidebar.component.ts +117 -92
  26. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +4 -4
  27. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +14 -16
  28. package/src/app/modals/create-ticket/create-ticket.page.html +6 -6
  29. package/src/app/modals/create-ticket/create-ticket.page.ts +6 -8
  30. package/src/app/modals/loader-preview/loader-preview.page.ts +1 -1
  31. package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.scss +1 -1
  32. package/src/app/pages/conversation-detail/conversation-detail.page.html +3 -7
  33. package/src/app/pages/conversation-detail/conversation-detail.page.scss +1 -1
  34. package/src/app/pages/conversation-detail/conversation-detail.page.ts +4 -63
  35. package/src/app/pages/conversations-list/conversations-list.page.ts +8 -8
  36. package/src/app/pages/profile-info/profile-info.page.ts +3 -3
  37. package/src/app/services/brand/brand.service.ts +5 -5
  38. package/src/app/services/global-settings/global-settings.service.ts +2 -5
  39. package/src/app/services/tiledesk/tiledesk.service.ts +16 -0
  40. package/src/app/shared/shared.module.ts +0 -11
  41. package/src/app/utils/project-utils.ts +2 -2
  42. package/src/app/utils/utils-resources.ts +8 -7
  43. package/src/app/utils/utils.ts +1 -18
  44. package/src/assets/i18n/ar.json +1 -11
  45. package/src/assets/i18n/az.json +1 -11
  46. package/src/assets/i18n/de.json +1 -11
  47. package/src/assets/i18n/en.json +1 -11
  48. package/src/assets/i18n/es.json +1 -11
  49. package/src/assets/i18n/fr.json +1 -11
  50. package/src/assets/i18n/it.json +3 -13
  51. package/src/assets/i18n/kk.json +1 -11
  52. package/src/assets/i18n/pt.json +1 -11
  53. package/src/assets/i18n/ru.json +1 -11
  54. package/src/assets/i18n/sr.json +1 -11
  55. package/src/assets/i18n/sv.json +1 -11
  56. package/src/assets/i18n/tr.json +1 -11
  57. package/src/assets/i18n/uk.json +1 -11
  58. package/src/assets/i18n/uz.json +1 -12
  59. package/src/chat-config-template.json +0 -1
  60. package/src/chat-config.json +0 -1
  61. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
  62. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +1 -1
  63. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -3
  64. package/src/chat21-core/utils/constants.ts +2 -2
  65. package/src/chat21-core/utils/utils.ts +2 -10
  66. package/src/app/services/project_users/project-users.service.spec.ts +0 -16
  67. package/src/app/services/project_users/project-users.service.ts +0 -63
  68. package/src/app/utils/permissions.constants.ts +0 -138
  69. package/src/assets/js/agentDesktop-sdk.js +0 -47
  70. package/src/chat21-core/models/projectUsers.ts +0 -19
  71. /package/src/assets/{images → img}/channel_icons/chat21.svg +0 -0
  72. /package/src/assets/{images → img}/channel_icons/direct.svg +0 -0
  73. /package/src/assets/{images → img}/channel_icons/email-logo.svg +0 -0
  74. /package/src/assets/{images → img}/channel_icons/form-logo_v2.svg +0 -0
  75. /package/src/assets/{images → img}/channel_icons/group.svg +0 -0
  76. /package/src/assets/{images → img}/channel_icons/messenger-logo.svg +0 -0
  77. /package/src/assets/{images → img}/channel_icons/telegram-logo.svg +0 -0
  78. /package/src/assets/{images → img}/channel_icons/voice.svg +0 -0
  79. /package/src/assets/{images → img}/channel_icons/whatsapp-logo.svg +0 -0
  80. /package/src/assets/{images → img}/default-avatar-x-select.png +0 -0
  81. /package/src/assets/{images → img}/f21ico-done.svg +0 -0
  82. /package/src/assets/{images → img}/f21ico-done_all.svg +0 -0
  83. /package/src/assets/{images → img}/f21ico-schedule.svg +0 -0
  84. /package/src/assets/{images → img}/file-alt-solid.png +0 -0
  85. /package/src/assets/{images → img}/icons/copilot.svg +0 -0
  86. /package/src/assets/{images → img}/json-file.svg +0 -0
  87. /package/src/assets/{images → img}/language_flag/ar.png +0 -0
  88. /package/src/assets/{images → img}/language_flag/az.png +0 -0
  89. /package/src/assets/{images → img}/language_flag/bg.png +0 -0
  90. /package/src/assets/{images → img}/language_flag/ca.png +0 -0
  91. /package/src/assets/{images → img}/language_flag/cs.png +0 -0
  92. /package/src/assets/{images → img}/language_flag/da.png +0 -0
  93. /package/src/assets/{images → img}/language_flag/de.png +0 -0
  94. /package/src/assets/{images → img}/language_flag/el.png +0 -0
  95. /package/src/assets/{images → img}/language_flag/en.png +0 -0
  96. /package/src/assets/{images → img}/language_flag/es.png +0 -0
  97. /package/src/assets/{images → img}/language_flag/fa.png +0 -0
  98. /package/src/assets/{images → img}/language_flag/fi.png +0 -0
  99. /package/src/assets/{images → img}/language_flag/fr.png +0 -0
  100. /package/src/assets/{images → img}/language_flag/he.png +0 -0
  101. /package/src/assets/{images → img}/language_flag/hi.png +0 -0
  102. /package/src/assets/{images → img}/language_flag/hr.png +0 -0
  103. /package/src/assets/{images → img}/language_flag/hu.png +0 -0
  104. /package/src/assets/{images → img}/language_flag/id.png +0 -0
  105. /package/src/assets/{images → img}/language_flag/it.png +0 -0
  106. /package/src/assets/{images → img}/language_flag/ja.png +0 -0
  107. /package/src/assets/{images → img}/language_flag/kk.png +0 -0
  108. /package/src/assets/{images → img}/language_flag/ko.png +0 -0
  109. /package/src/assets/{images → img}/language_flag/ml-IN.png +0 -0
  110. /package/src/assets/{images → img}/language_flag/ne-NP.png +0 -0
  111. /package/src/assets/{images → img}/language_flag/nl.png +0 -0
  112. /package/src/assets/{images → img}/language_flag/no.png +0 -0
  113. /package/src/assets/{images → img}/language_flag/pl.png +0 -0
  114. /package/src/assets/{images → img}/language_flag/pt-BR.png +0 -0
  115. /package/src/assets/{images → img}/language_flag/pt.png +0 -0
  116. /package/src/assets/{images → img}/language_flag/ro.png +0 -0
  117. /package/src/assets/{images → img}/language_flag/ru.png +0 -0
  118. /package/src/assets/{images → img}/language_flag/sk.png +0 -0
  119. /package/src/assets/{images → img}/language_flag/sl.png +0 -0
  120. /package/src/assets/{images → img}/language_flag/sr.png +0 -0
  121. /package/src/assets/{images → img}/language_flag/sv.png +0 -0
  122. /package/src/assets/{images → img}/language_flag/ta.png +0 -0
  123. /package/src/assets/{images → img}/language_flag/th.png +0 -0
  124. /package/src/assets/{images → img}/language_flag/tr.png +0 -0
  125. /package/src/assets/{images → img}/language_flag/uk.png +0 -0
  126. /package/src/assets/{images → img}/language_flag/uz.png +0 -0
  127. /package/src/assets/{images → img}/language_flag/vi.png +0 -0
  128. /package/src/assets/{images → img}/language_flag/zh-CN.png +0 -0
  129. /package/src/assets/{images → img}/language_flag/zh-TW.png +0 -0
  130. /package/src/assets/{logos → img/logos}/chat21-logo.png +0 -0
  131. /package/src/assets/{logos → img/logos}/logo.png +0 -0
  132. /package/src/assets/{logos → img/logos}/tiledesk-logo_new_white.svg +0 -0
  133. /package/src/assets/{logos → img/logos}/tiledesk-solo-logo.png +0 -0
  134. /package/src/assets/{logos → img/logos}/tiledesk_logo.svg +0 -0
  135. /package/src/assets/{logos → img/logos}/tiledesk_logo_no_text.svg +0 -0
  136. /package/src/assets/{logos → img/logos}/tiledesk_logo_white_small.svg +0 -0
  137. /package/src/assets/{images → img}/no_conversation.jpg +0 -0
  138. /package/src/assets/{images → img}/no_image.png +0 -0
  139. /package/src/assets/{images → img}/no_image_user.png +0 -0
  140. /package/src/assets/{images → img}/pin.svg +0 -0
  141. /package/src/assets/{images → img}/pinned.svg +0 -0
  142. /package/src/assets/{images → img}/priority_icons/high.svg +0 -0
  143. /package/src/assets/{images → img}/priority_icons/high_v2.svg +0 -0
  144. /package/src/assets/{images → img}/priority_icons/low.svg +0 -0
  145. /package/src/assets/{images → img}/priority_icons/low_v2.svg +0 -0
  146. /package/src/assets/{images → img}/priority_icons/medium.svg +0 -0
  147. /package/src/assets/{images → img}/priority_icons/medium_v2.svg +0 -0
  148. /package/src/assets/{images → img}/priority_icons/urgent.svg +0 -0
  149. /package/src/assets/{images → img}/priority_icons/urgent_v2.svg +0 -0
  150. /package/src/assets/{images → img}/teammate-status/avaible.svg +0 -0
  151. /package/src/assets/{images → img}/teammate-status/inactive.svg +0 -0
  152. /package/src/assets/{images → img}/teammate-status/unavaible.svg +0 -0
  153. /package/src/assets/{images → img}/whatsapp_background.png +0 -0
package/CHANGELOG.md CHANGED
@@ -8,34 +8,8 @@
8
8
  ### **Copyrigth**:
9
9
  *Tiledesk SRL*
10
10
 
11
- # 3.4.27-rc8
12
- - **added**: ability to open ticket to external service
13
- - **added**: ticketSection env var
14
-
15
- # 3.4.27-rc7
16
- - **bug-fixed**: Scrolling to the last message when opening a conversation
17
- - **bug-fixed**: Loading in the conversation list disabled when removing the last conversation
18
-
19
- # 3.4.27-rc6
20
- - **bug-fixed**: user for dashboard app is incorrect
21
-
22
- # 3.4.27-rc5
23
- - **added**: managed roles in sidebar e navbar
24
- - **bug-fixed**: projectId and supportMode url is not saved in localstorage
25
-
26
- # 3.4.27-rc4
27
- - **bug-fixed**: extractUrls function is not able to detect url start with www or without https/http
28
- - **bug-fixed**: if message is sent with keydown, error on domain check is not showed
29
-
30
- # 3.4.27-rc3
31
- - **bug-fixed**: cannot set user availability if supportMode is enabled and tiledesk_projectID url params is set
32
-
33
- # 3.4.27-rc2
34
- - **bug-fixed**: cannede responses role
35
-
36
- # 3.4.27-rc1
37
- - **added**: managed canned responses with roles
38
- - **changed**: name in info mesage
11
+ # 3.4.27 in PROD
12
+ - **bug-fixed**: cannot find route if userFullname contains /
39
13
 
40
14
  # 3.4.26 in PROD
41
15
 
@@ -45,7 +19,6 @@
45
19
  # 3.4.26-rc1
46
20
  - **added**: tiledesk_projectID query param to manage user status
47
21
  - **added**: token to managane ticket feature
48
- - **added**: getOsCode login into utils.ts
49
22
 
50
23
  # 3.4.25 in PROD
51
24
  - **changed**: pipe marked to support malicious text input
@@ -68,24 +41,6 @@
68
41
  # 3.4.22 in PROD
69
42
  - **added**: managed allowed_upload_extentions from project settings
70
43
 
71
- # 3.4.21-rc6
72
- - **added**: managed allowed_upload_extentions from project settings
73
-
74
- # 3.4.21-rc5
75
- - **added**: setConversation as read when agent click on it
76
-
77
- # 3.4.21-rc4
78
- - **added**: ability to init and decrement new conversation count badge
79
-
80
- # 3.4.21-rc3
81
- - **changed**: badge notification for agentDesktop
82
-
83
- # 3.4.21-rc2
84
- - **added**: count in newConversation handler event
85
-
86
- # 3.4.21-rc1
87
- - **added**: implement badge notification for agentDesktop sw when new conversation is assigned to logged agent
88
-
89
44
  # 3.4.21 in PROD
90
45
 
91
46
  # 3.4.20 in PROD
@@ -99,8 +54,8 @@
99
54
  - **bug-fixed**: minor fix on ion-texarea element with allowed url domain
100
55
 
101
56
  # 3.4.19-rc1
102
- - **added**: ability to check for if emoji is allowd to be sent in message textarea
103
- - **added**: ability to check for if url domain is allowd to be sent in message textarea
57
+ - added: ability to check for if emoji is allowd to be sent in message textarea
58
+ - added: ability to check for if url domain is allowd to be sent in message textarea
104
59
 
105
60
  # 3.4.18 in PROD
106
61
 
package/angular.json CHANGED
@@ -32,7 +32,6 @@
32
32
  "src/chat-config-template.json",
33
33
  "src/chat-config.json",
34
34
  "src/chat-config-dev.json",
35
- "src/chat-config-native-ar.json",
36
35
  {
37
36
  "glob": "**/*",
38
37
  "input": "src/assets",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
3
  "author": "Tiledesk SRL",
4
- "version": "3.4.27-rc8",
4
+ "version": "3.4.27",
5
5
  "license": "MIT License",
6
6
  "homepage": "https://tiledesk.com/",
7
7
  "repository": {
@@ -44,8 +44,6 @@ import { conversationToMessage } from 'src/chat21-core/utils/utils-message';
44
44
  import { ProjectService } from './services/projects/project.service';
45
45
  import { ContactsService } from './services/contacts/contacts.service';
46
46
  import { TiledeskService } from './services/tiledesk/tiledesk.service';
47
- import { Project } from 'src/chat21-core/models/projects';
48
- import { ProjectUsersService } from './services/project_users/project-users.service';
49
47
 
50
48
  @Component({
51
49
  selector: 'app-root',
@@ -144,7 +142,6 @@ export class AppComponent implements OnInit {
144
142
  /**TILEDESK SERVICES */
145
143
  private tiledeskService: TiledeskService,
146
144
  private projectService: ProjectService,
147
- private projectUsersService: ProjectUsersService,
148
145
  private contactsService: ContactsService
149
146
  ) {
150
147
 
@@ -171,7 +168,6 @@ export class AppComponent implements OnInit {
171
168
  }, { capture: true });
172
169
  }
173
170
 
174
-
175
171
  listenChatAlreadyOpenWithoutParamsInMobileMode() {
176
172
  this.events.subscribe('noparams:mobile', (isAlreadyOpenInMobileMode) => {
177
173
  // console.log('[APP-COMP] Chat is Already Open In Mobile Mode ', isAlreadyOpenInMobileMode)
@@ -300,7 +296,6 @@ export class AppComponent implements OnInit {
300
296
  this.zone = new NgZone({}); // a cosa serve?
301
297
 
302
298
  this.SUPPORT_MODE = this.g.supportMode
303
- this.logger.info('[APP-COMP] this.SUPPORT_MODE', this.SUPPORT_MODE)
304
299
  }
305
300
 
306
301
  });
@@ -337,7 +332,7 @@ export class AppComponent implements OnInit {
337
332
 
338
333
  listenToPostMsgs() {
339
334
  window.addEventListener("message", (event) => {
340
- // this.logger.log("[APP-COMP] message event ", event);
335
+ this.logger.log("[APP-COMP] message event ", event);
341
336
 
342
337
  if (event && event.data && event.data.action && event.data.parameter) {
343
338
  if (event.data.action === 'openJoinConversationModal') {
@@ -869,8 +864,7 @@ export class AppComponent implements OnInit {
869
864
  // console.log('[APP-COMP] PLATFORM', PLATFORM_MOBILE, 'route.snapshot', this.route.snapshot);
870
865
  if (!IDConv) {
871
866
  this.logger.log('[APP-COMP] navigateByUrl -- conversations-list');
872
- const queryString = window.location.search; // restituisce ad es. "?jwt=...&tiledesk_supportMode=false"
873
- this.router.navigateByUrl('conversations-list' + queryString);
867
+ this.router.navigateByUrl('conversations-list')
874
868
  }
875
869
  // this.router.navigateByUrl(pageUrl);
876
870
  // this.navService.setRoot(ConversationListPage, {});
@@ -892,7 +886,7 @@ export class AppComponent implements OnInit {
892
886
 
893
887
  let pageUrl = 'conversation-detail/'
894
888
  if (IDConv && FullNameConv) {
895
- pageUrl += IDConv + '/' + FullNameConv + '/' + Convtype
889
+ pageUrl += IDConv + '/' + encodeURIComponent(FullNameConv) + '/' + Convtype
896
890
  }
897
891
 
898
892
  const queryParams = this.route.snapshot.queryParams;
@@ -900,7 +894,7 @@ export class AppComponent implements OnInit {
900
894
  pageUrl += queryString ? `?${queryString}` : '';
901
895
 
902
896
  // replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
903
- this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29').replace( /#/g, "%23" ));
897
+ this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
904
898
 
905
899
 
906
900
  // const DASHBOARD_URL = this.appConfigProvider.getConfig().DASHBOARD_URL;
@@ -1121,7 +1115,6 @@ export class AppComponent implements OnInit {
1121
1115
  if (conversation && conversation.is_new === true && this.isInitialized) {
1122
1116
  this.manageTabNotification('conv_added', conversation.sound)
1123
1117
  this.manageEventNewConversation(conversation)
1124
- this.setNotification();
1125
1118
  }
1126
1119
  if(conversation) this.updateConversationsOnStorage()
1127
1120
  });
@@ -1176,7 +1169,7 @@ export class AppComponent implements OnInit {
1176
1169
  // if (supportmode === true) {
1177
1170
  // this.connetWebsocket() // moved in the comp project-item
1178
1171
  // }
1179
- this.events.publish('go:online', true);
1172
+
1180
1173
  const currentUser = this.tiledeskAuthService.getCurrentUser();
1181
1174
  this.setLanguage(currentUser);
1182
1175
  // this.logger.printDebug('APP-COMP - goOnLine****', currentUser);
@@ -1186,18 +1179,17 @@ export class AppComponent implements OnInit {
1186
1179
 
1187
1180
  this.tiledeskService.initialize(serverBaseURL)
1188
1181
  this.projectService.initialize(serverBaseURL)
1189
- this.projectUsersService.initialize(serverBaseURL)
1190
1182
  this.contactsService.initialize(serverBaseURL)
1191
- // this.chatManager.startApp();
1192
1183
 
1193
1184
 
1194
- //INIT WEBSOCKET
1195
- this.connetWebsocket(tiledeskToken)
1185
+ this.events.publish('go:online', true);
1186
+ // this.chatManager.startApp();
1196
1187
 
1197
1188
  // ----------------------------------------------
1198
1189
  // PUSH NOTIFICATIONS
1199
1190
  // ----------------------------------------------
1200
1191
  const pushEngine = this.appConfigProvider.getConfig().pushEngine
1192
+
1201
1193
  if (currentUser) {
1202
1194
  if (pushEngine && pushEngine !== 'none') {
1203
1195
  this.notificationsService.getNotificationPermissionAndSaveToken(currentUser.uid);
@@ -1219,24 +1211,6 @@ export class AppComponent implements OnInit {
1219
1211
  } catch (err) {
1220
1212
  this.logger.error('[APP-COMP] -> error:', err);
1221
1213
  }
1222
-
1223
- // ----------------------------------------------
1224
- // LAST PROJECT FROM URL
1225
- // ----------------------------------------------
1226
- if(this.g.projectID){
1227
- this.projectService.getProjects().subscribe({ next: (projects: Project[]) => {
1228
- const project = projects.find(prjct => prjct.id_project._id === this.g.projectID)
1229
- if(project){
1230
- this.logger.log('[APP-COMP] - GET PROJECT - project found with this.projectID', project);
1231
- localStorage.setItem('last_project', JSON.stringify(project))
1232
- this.events.publish('storage:last_project', project)
1233
- }
1234
- }, error: (error) => {
1235
- this.logger.log('[APP-COMP] - GET PROJECT - project NOT found with this.projectID', this.g.projectID, error);
1236
- }, complete: () => {
1237
-
1238
- }});
1239
- }
1240
1214
  }
1241
1215
 
1242
1216
 
@@ -1282,21 +1256,6 @@ export class AppComponent implements OnInit {
1282
1256
  myWindow.focus();
1283
1257
  }
1284
1258
 
1285
- connetWebsocket(tiledeskToken) {
1286
-
1287
- this.logger.log('[WEBSOCKET-JS] connetWebsocket called in [PROJECT-ITEM] tiledeskToken ', tiledeskToken)
1288
- const appconfig = this.appConfigProvider.getConfig();
1289
- this.logger.log('[WEBSOCKET-JS] connetWebsocket called in [PROJECT-ITEM] wsUrl ', appconfig.wsUrl)
1290
- const WS_URL = appconfig.wsUrl + '?token=' + tiledeskToken
1291
- this.logger.log('[WEBSOCKET-JS] connetWebsocket called in [PROJECT-ITEM] wsUrl ', WS_URL)
1292
- this.webSocketJs.init(
1293
- WS_URL,
1294
- undefined,
1295
- undefined,
1296
- undefined
1297
- );
1298
- }
1299
-
1300
1259
 
1301
1260
  webSocketClose() {
1302
1261
  this.logger.log('[APP-COMP] - GO-OFFLINE - webSocketClose');
@@ -1345,7 +1304,7 @@ export class AppComponent implements OnInit {
1345
1304
  subscribeChangedConversationSelected = (user: UserModel, type: string) => {
1346
1305
  this.logger.log('[APP-COMP] subscribeUidConvSelectedChanged navigateByUrl', user, type);
1347
1306
  // this.router.navigateByUrl('conversation-detail/' + user.uid + '?conversationWithFullname=' + user.fullname);
1348
- this.router.navigateByUrl('conversation-detail/' + user.uid + '/' + user.fullname + '/' + type);
1307
+ this.router.navigateByUrl('conversation-detail/' + user.uid + '/' + encodeURIComponent(user.fullname) + '/' + type);
1349
1308
  }
1350
1309
 
1351
1310
  subscribeProfileInfoButtonLogOut = (hasClickedLogout) => {
@@ -1393,10 +1352,7 @@ export class AppComponent implements OnInit {
1393
1352
 
1394
1353
  subscribeConversationSelected= (conversation: ConversationModel) => {
1395
1354
  if(conversation && conversation.is_new){
1396
- this.audio_NewConv.pause();
1397
- this.conversationsHandlerService.setConversationRead(conversation.uid)
1398
- //UPDATE NOTIFICATION FOR NEW CONVERSATION COUNT
1399
- this.setNotification();
1355
+ this.audio_NewConv.pause()
1400
1356
  }
1401
1357
  }
1402
1358
 
@@ -1472,9 +1428,6 @@ export class AppComponent implements OnInit {
1472
1428
  this.logger.debug('[APP-COMP]-CONVS - INIT CONV CONVS 2', conversations)
1473
1429
  this.events.publish('appcompSubscribeToConvs:loadingIsActive', false);
1474
1430
  }
1475
-
1476
- //INIT NOTIFICATION FOR NEW CONVERSATION COUNT
1477
- this.setNotification();
1478
1431
  });
1479
1432
 
1480
1433
  }
@@ -1523,10 +1476,10 @@ export class AppComponent implements OnInit {
1523
1476
  let Convtype = 'active'
1524
1477
 
1525
1478
  if (IDConv && FullNameConv) {
1526
- pageUrl += IDConv + '/' + FullNameConv + '/' + Convtype
1479
+ pageUrl += IDConv + '/' + encodeURIComponent(FullNameConv) + '/' + Convtype
1527
1480
  }
1528
1481
  // replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
1529
- this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29').replace( /#/g, "%23" ));
1482
+ this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
1530
1483
  } else {
1531
1484
  console.log("FCM: Received in foreground", JSON.stringify(data));
1532
1485
  // let IDConv = data.recipient
@@ -1537,7 +1490,7 @@ export class AppComponent implements OnInit {
1537
1490
  // pageUrl += IDConv + '/' + FullNameConv + '/' + Convtype
1538
1491
  // }
1539
1492
  // // replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
1540
- // this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29').replace( /#/g, "%23" ));
1493
+ // this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
1541
1494
  };
1542
1495
  });
1543
1496
  }
@@ -1691,14 +1644,6 @@ export class AppComponent implements OnInit {
1691
1644
  this.triggerEvents.triggerOnNewConversationInit(conversation)
1692
1645
  }
1693
1646
 
1694
- private setNotification() {
1695
- this.logger.log('[APP-COMP] setNotification for NEW CONVERSATION');
1696
- if(window['AGENTDESKTOP']){
1697
- this.logger.log('[APP-COMP] manageNotification AGENTDESKTOP exist', window['AGENTDESKTOP']);
1698
- window['AGENTDESKTOP']['TAB'].Badge(this.conversationsHandlerService.countIsNew().toString())
1699
- }
1700
- }
1701
-
1702
1647
 
1703
1648
  @HostListener('document:visibilitychange', [])
1704
1649
  visibilitychange() {
@@ -205,13 +205,13 @@
205
205
  // overflow-x: hidden;
206
206
  // }
207
207
  // .c21-ico-schedule {
208
- // background-image: url("src/assets/images/f21ico-schedule.svg");
208
+ // background-image: url("src/assets/img/f21ico-schedule.svg");
209
209
  // }
210
210
  // .c21-ico-done {
211
- // background-image: url("src/assets/images/f21ico-done.svg");
211
+ // background-image: url("src/assets/img/f21ico-done.svg");
212
212
  // }
213
213
  // .c21-ico-done_all {
214
- // background-image: url("src/assets/images/f21ico-done_all.svg");
214
+ // background-image: url("src/assets/img/f21ico-done_all.svg");
215
215
  // }
216
216
  // }
217
217
 
@@ -58,7 +58,7 @@ export class ConversationContentComponent implements OnInit {
58
58
  MESSAGE_TYPE_OTHERS = MESSAGE_TYPE_OTHERS;
59
59
  // ========== end:: check message type functions ======= //
60
60
 
61
- urlBOTImage = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/dev/2.0.4-beta.7/assets/images/avatar_bot_tiledesk.svg'
61
+ urlBOTImage = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/dev/2.0.4-beta.7/assets/img/avatar_bot_tiledesk.svg'
62
62
  uploadProgress: number;
63
63
  showUploadProgress: boolean = false;
64
64
  fileType: string;
@@ -184,7 +184,7 @@
184
184
  <ng-container *ngIf="isCopilotEnabled">
185
185
  <ion-button shape="round" size="small" class="btn-info-msg btn-copilot" ion-button fill="clear"
186
186
  (click)="onClickOptionsCopilot(message, i)">
187
- <ion-icon id="copilot" src="assets/images/icons/copilot.svg"></ion-icon>
187
+ <ion-icon id="copilot" src="assets/img/icons/copilot.svg"></ion-icon>
188
188
  </ion-button>
189
189
  </ng-container>
190
190
 
@@ -1,6 +1,6 @@
1
1
  <div class="c21-icon-avatar">
2
2
  <div class="c21-avatar-image profile_image">
3
- <!-- <img src="getUrlImgProfile(message.sender) {{getUrlImgProfile(message.sender)}}" onError="this.src = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v2/assets/images/line_avatar_male_tiledesk.svg'" /> -->
3
+ <!-- <img src="getUrlImgProfile(message.sender) {{getUrlImgProfile(message.sender)}}" onError="this.src = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v2/assets/img/line_avatar_male_tiledesk.svg'" /> -->
4
4
  <!-- <img [src]="url" (error)="onBotImgError($event)" /> -->
5
5
  <img *ngIf="senderID?.indexOf('bot_') !== -1 || senderFullname === 'Bot'" [src]="url" (error)="onBotImgError($event)" (load)="onLoadedBot($event)"/>
6
6
  <!-- is a HUMAN -->
@@ -17,18 +17,18 @@ export class AvatarComponent implements OnInit {
17
17
  if(this.senderID){
18
18
  this.url = this.imageRepoService.getImagePhotoUrl(this.senderID)
19
19
  if(!this.url && (this.senderID.indexOf('bot_') !== -1 || this.senderFullname === 'Bot')){
20
- this.url = this.baseLocation +'/assets/images/avatar_bot_tiledesk.svg'
20
+ this.url = this.baseLocation +'/assets/img/avatar_bot_tiledesk.svg'
21
21
  }else if(!this.url && this.senderID.indexOf('bot_') == -1){
22
- this.url = this.baseLocation +'/assets/images/light_avatar_placeholder.svg'
22
+ this.url = this.baseLocation +'/assets/img/light_avatar_placeholder.svg'
23
23
  }
24
24
  }
25
25
  }
26
26
 
27
27
  onBotImgError(event){
28
- event.target.src = this.baseLocation +'/assets/images/avatar_bot_tiledesk.svg'
28
+ event.target.src = this.baseLocation +'/assets/img/avatar_bot_tiledesk.svg'
29
29
  }
30
30
  onHumanImgError(event) {
31
- event.target.src = this.baseLocation + "/assets/images/light_avatar_placeholder.svg"
31
+ event.target.src = this.baseLocation + "/assets/img/light_avatar_placeholder.svg"
32
32
  }
33
33
 
34
34
  onLoadedBot(event){
@@ -16,12 +16,12 @@
16
16
  }
17
17
 
18
18
  .c21-ico-schedule {
19
- background-image: url("/src/assets/images/f21ico-schedule.svg");
19
+ background-image: url("/src/assets/img/f21ico-schedule.svg");
20
20
  }
21
21
  .c21-ico-done {
22
- background-image: url("/src/assets/images/f21ico-done.svg");
22
+ background-image: url("/src/assets/img/f21ico-done.svg");
23
23
  }
24
24
  .c21-ico-done_all {
25
- background-image: url("/src/assets/images/f21ico-done_all.svg");
25
+ background-image: url("/src/assets/img/f21ico-done_all.svg");
26
26
  }
27
27
  }
@@ -96,23 +96,23 @@
96
96
  <div class="conversation_project truncate">
97
97
  <!-- DIRECT CONV -->
98
98
  <div *ngIf="conversation.channel_type === CHANNEL_TYPE.DIRECT">
99
- <img class="channel-icon" src="assets/images/channel_icons/direct.svg">
99
+ <img class="channel-icon" src="assets/img/channel_icons/direct.svg">
100
100
  <span class="truncate">{{translationsMap.get('DIRECT_CHAT')}}</span>
101
101
  </div>
102
102
  <!-- GROUP CONV -->
103
103
  <div *ngIf="conversation.uid.startsWith(CHANNEL_TYPE.GROUP)">
104
- <img class="channel-icon" src="assets/images/channel_icons/group.svg">
104
+ <img class="channel-icon" src="assets/img/channel_icons/group.svg">
105
105
  <span class="truncate">{{translationsMap.get('GROUP_CHAT')}}</span>
106
106
  </div>
107
107
  <!-- SUPPORT-GROUP CONV -->
108
108
  <div *ngIf="conversation.uid.startsWith(CHANNEL_TYPE.SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
109
- <img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="conversation?.attributes && ( (conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.CHAT21) || !conversation?.attributes?.request_channel) " >
110
- <img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.EMAIL" >
111
- <img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.FORM" >
112
- <img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.MESSENGER" >
113
- <img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.WHATSAPP" >
114
- <img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.TELEGRAM" >
115
- <img class="channel-icon" src="assets/images/channel_icons/voice.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
109
+ <img class="channel-icon" src="assets/img/channel_icons/chat21.svg" *ngIf="conversation?.attributes && ( (conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.CHAT21) || !conversation?.attributes?.request_channel) " >
110
+ <img class="channel-icon" src="assets/img/channel_icons/email-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.EMAIL" >
111
+ <img class="channel-icon" src="assets/img/channel_icons/form-logo_v2.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.FORM" >
112
+ <img class="channel-icon" src="assets/img/channel_icons/messenger-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.MESSENGER" >
113
+ <img class="channel-icon" src="assets/img/channel_icons/whatsapp-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.WHATSAPP" >
114
+ <img class="channel-icon" src="assets/img/channel_icons/telegram-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.TELEGRAM" >
115
+ <img class="channel-icon" src="assets/img/channel_icons/voice.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
116
116
  <span *ngIf="conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.project_name}}</span>
117
117
  <span *ngIf="!conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.projectId}}</span>
118
118
  </div>
@@ -9,7 +9,7 @@
9
9
  <ion-label>{{translationsMap?.get('AddAsCannedResponse')}}</ion-label>
10
10
  </ion-item>
11
11
  <ion-item button="true" *ngIf="logLevel >= LogLevel.DEBUG" (click)="onClickOption('jsonInfo')">
12
- <ion-icon src="assets/images/json-file.svg" slot="start"></ion-icon>
12
+ <ion-icon src="assets/img/json-file.svg" slot="start"></ion-icon>
13
13
  <ion-label>{{translationsMap?.get('JSON_RESPONSE')}}</ion-label>
14
14
  </ion-item>
15
15
  </ion-list>
@@ -1,30 +1,20 @@
1
1
  <div>
2
- <div class="canned-list" *ngIf="!showLoading">
3
- <span *ngIf="tagsCannedFilter.length > 0">
4
- <ion-item button="true" [ngClass]="{'is_active_item': i == arrowkeyLocation}" lines="none"
5
- class="canned-item no-ripple border" id="{{'canned-item_'+ i }}"
6
- *ngFor="let canned of tagsCannedFilter; let i = index;"
7
- (click)="onClickCannedFN(canned, $event)">
8
- <div class="cannedContent">
9
- <ion-input [class.readonly]="canned?.disabled" [readonly]="canned?.disabled" type="text" [(ngModel)]="canned.title" class="title" id="{{'titleCanned_'+canned._id}}" #title></ion-input>
10
- <ion-input [class.readonly]="canned?.disabled" [readonly]="canned?.disabled" type="text" [(ngModel)]="canned.text" class="text truncate"></ion-input>
11
- </div>
12
- <!-- <ion-icon class="canned-item-icon" name="pin" src="assets/images/pin.svg" slot=end *ngIf="canned.pinned" (click)="onPinCanned(canned, $event)"></ion-icon>
13
- <ion-icon class="canned-item-icon" name="pin" src="assets/images/pinned.svg" slot=end (click)="onUnPinCanned(canned, $event)"></ion-icon> -->
14
- <ion-icon class="canned-item-icon" name="checkmark-sharp" slot=end *ngIf="(canned.createdBy === loggedUser.uid && !canned.disabled) && roles[PERMISSIONS.CANNED_RESPONSES_UPDATE]" (click)="onConfirmEditCanned(canned, $event)"></ion-icon>
15
- <ion-icon class="canned-item-icon" name="pencil-sharp" slot=end *ngIf="(canned.createdBy === loggedUser.uid && canned.disabled) && roles[PERMISSIONS.CANNED_RESPONSES_UPDATE]" (click)="onEditCanned(canned, $event)"></ion-icon>
16
- <ion-icon class="canned-item-icon" name="trash-bin-outline" slot=end *ngIf="(canned.createdBy === loggedUser.uid) && roles[PERMISSIONS.CANNED_RESPONSES_DELETE]" (click)="onDeleteCanned(canned, $event)"></ion-icon>
17
- </ion-item>
18
- </span>
19
- <div class="no-data" *ngIf="tagsCannedFilter.length === 0">
20
- <div class="container">
21
- <ion-item button="false" lines="none" class="canned-item no-ripple border">
22
- <ion-icon name="cloud-offline" slot="start"></ion-icon>
23
- <ion-label>{{translationMap.get('THERE_ARE_NO_CANNED_RESPONSES_AVAILABLE')}}</ion-label>
24
- </ion-item>
2
+ <div class="canned-list" *ngIf="tagsCannedFilter.length > 0">
3
+ <ion-item button="true" [ngClass]="{'is_active_item': i == arrowkeyLocation}" lines="none"
4
+ class="canned-item no-ripple border" id="{{'canned-item_'+ i }}"
5
+ *ngFor="let canned of tagsCannedFilter; let i = index;"
6
+ (click)="onClickCannedFN(canned, $event)">
7
+ <div class="cannedContent">
8
+ <ion-input [class.readonly]="canned?.disabled" [readonly]="canned?.disabled" type="text" [(ngModel)]="canned.title" class="title" id="{{'titleCanned_'+canned._id}}" #title></ion-input>
9
+ <ion-input [class.readonly]="canned?.disabled" [readonly]="canned?.disabled" type="text" [(ngModel)]="canned.text" class="text truncate"></ion-input>
25
10
  </div>
26
- </div>
27
- <ion-item *ngIf="roles[PERMISSIONS.CANNED_RESPONSES_CREATE]" class="canned-item add-canned-response-wpr" button="true" lines="none" (click)="onClickAddCannedResponseFN()">
11
+ <!-- <ion-icon class="canned-item-icon" name="pin" src="assets/img/pin.svg" slot=end *ngIf="canned.pinned" (click)="onPinCanned(canned, $event)"></ion-icon>
12
+ <ion-icon class="canned-item-icon" name="pin" src="assets/img/pinned.svg" slot=end (click)="onUnPinCanned(canned, $event)"></ion-icon> -->
13
+ <ion-icon class="canned-item-icon" name="checkmark-sharp" slot=end *ngIf="canned.createdBy === loggedUser.uid && !canned.disabled" (click)="onConfirmEditCanned(canned, $event)"></ion-icon>
14
+ <ion-icon class="canned-item-icon" name="pencil-sharp" slot=end *ngIf="canned.createdBy === loggedUser.uid && canned.disabled" (click)="onEditCanned(canned, $event)"></ion-icon>
15
+ <ion-icon class="canned-item-icon" name="trash-bin-outline" slot=end *ngIf="canned.createdBy === loggedUser.uid" (click)="onDeleteCanned(canned, $event)"></ion-icon>
16
+ </ion-item>
17
+ <ion-item class="canned-item add-canned-response-wpr" button="true" lines="none" (click)="onClickAddCannedResponseFN()">
28
18
  <ion-icon class="add-canned-response-icon" name="flash-outline"></ion-icon>
29
19
  <span class="add-canned-response-add-icon">+</span>
30
20
  <label class="add-canned-response-label" >{{translationMap?.get('AddNewCannedResponse')}}</label>
@@ -43,5 +33,12 @@
43
33
  <div class="label">{{translationMap.get('LABEL_LOADING')}}</div>
44
34
  </div>
45
35
  </div>
46
-
36
+ <div class="no-data" *ngIf="tagsCannedFilter.length === 0 && !showLoading">
37
+ <div class="container">
38
+ <ion-item button="false" lines="none" class="canned-item no-ripple border">
39
+ <ion-icon name="cloud-offline" slot="start"></ion-icon>
40
+ <ion-label>{{translationMap.get('THERE_ARE_NO_CANNED_RESPONSES_AVAILABLE')}}</ion-label>
41
+ </ion-item>
42
+ </div>
43
+ </div>
47
44
  </div>
@@ -278,5 +278,7 @@ ion-item {
278
278
  display: flex;
279
279
  justify-content: center;
280
280
  flex-direction: column;
281
+ align-items: center;
282
+
281
283
  }
282
284
  }
@@ -9,7 +9,6 @@ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk
9
9
  import { compareValues, htmlEntities } from 'src/chat21-core/utils/utils';
10
10
  import { getProjectIdSelectedConversation } from 'src/chat21-core/utils/utils-message';
11
11
  import { PLAN_NAME } from 'src/chat21-core/utils/constants';
12
- import { PERMISSIONS } from 'src/app/utils/permissions.constants';
13
12
 
14
13
  @Component({
15
14
  selector: 'app-canned-response',
@@ -22,7 +21,7 @@ export class CannedResponseComponent implements OnInit {
22
21
  @Input() conversationWith: string;
23
22
  @Input() conversationWithFullname: string;
24
23
  @Input() currentString: string;
25
- @Input() roles: Array<string>;
24
+ @Input() canShowCanned: boolean = true;
26
25
  @Input() stylesMap: Map<string, string>;
27
26
  @Input() translationMap: Map<string, string>;
28
27
  @Output() onLoadedCannedResponses = new EventEmitter<[any]>();
@@ -37,7 +36,6 @@ export class CannedResponseComponent implements OnInit {
37
36
 
38
37
  public arrowkeyLocation = -1
39
38
 
40
- PERMISSIONS = PERMISSIONS
41
39
 
42
40
  private logger: LoggerService = LoggerInstance.getInstance();
43
41
  constructor(
@@ -47,13 +47,13 @@
47
47
  </div>
48
48
  <!-- SUPPORT-GROUP CONV -->
49
49
  <div *ngIf="conversationUid?.startsWith(CHANNEL_TYPE.SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
50
- <img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="( (conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.CHAT21) || !conversationAvatar?.request_channel) " >
51
- <img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.EMAIL" >
52
- <img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.FORM" >
53
- <img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.MESSENGER" >
54
- <img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.WHATSAPP" >
55
- <img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.TELEGRAM" >
56
- <img class="channel-icon" src="assets/images/channel_icons/voice.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
50
+ <img class="channel-icon" src="assets/img/channel_icons/chat21.svg" *ngIf="( (conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.CHAT21) || !conversationAvatar?.request_channel) " >
51
+ <img class="channel-icon" src="assets/img/channel_icons/email-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.EMAIL" >
52
+ <img class="channel-icon" src="assets/img/channel_icons/form-logo_v2.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.FORM" >
53
+ <img class="channel-icon" src="assets/img/channel_icons/messenger-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.MESSENGER" >
54
+ <img class="channel-icon" src="assets/img/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.WHATSAPP" >
55
+ <img class="channel-icon" src="assets/img/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.TELEGRAM" >
56
+ <img class="channel-icon" src="assets/img/channel_icons/voice.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
57
57
  <span *ngIf="conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.project_name}}</span>
58
58
  <span *ngIf="!conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.projectId}}</span>
59
59
  </div>
@@ -65,7 +65,7 @@
65
65
  <!-- COPILOT-OPTION -->
66
66
  <div *ngIf="isCopilotEnabled" class="copilot-container" id="copilot">
67
67
  <ion-button id="copilot" fill="clear" (click)="onOpenSection('copilot')">
68
- <ion-icon class="channel-icon" src="assets/images/icons/copilot.svg"></ion-icon>
68
+ <ion-icon class="channel-icon" src="assets/img/icons/copilot.svg"></ion-icon>
69
69
  {{translationsMap?.get('COPILOT.SOLVE_WITH_AI')}}
70
70
  </ion-button>
71
71
  </div>