@chat21/chat21-ionic 3.4.32-rc9 → 3.4.34

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 (56) hide show
  1. package/CHANGELOG.md +16 -127
  2. package/angular.json +0 -1
  3. package/package.json +1 -1
  4. package/src/app/app.component.html +1 -3
  5. package/src/app/app.component.ts +11 -70
  6. package/src/app/components/canned-response/canned-response.component.html +2 -2
  7. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +0 -23
  8. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +0 -30
  9. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +7 -26
  10. package/src/app/components/conversation-info/info-content/info-content.component.ts +2 -2
  11. package/src/app/components/navbar/navbar.component.ts +5 -5
  12. package/src/app/components/project-item/project-item.component.ts +36 -35
  13. package/src/app/components/sidebar/sidebar.component.html +1 -1
  14. package/src/app/components/sidebar/sidebar.component.ts +5 -0
  15. package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +15 -7
  16. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +3 -3
  17. package/src/app/pages/conversation-detail/conversation-detail.page.html +1 -3
  18. package/src/app/pages/conversation-detail/conversation-detail.page.ts +3 -45
  19. package/src/app/pages/conversations-list/conversations-list.page.ts +1 -7
  20. package/src/app/services/global-settings/global-settings.service.ts +3 -11
  21. package/src/app/services/nav-proxy.service.ts +1 -0
  22. package/src/app/services/projects/project.service.ts +1 -1
  23. package/src/app/services/tiledesk/tiledesk.service.ts +0 -17
  24. package/src/app/services/triggerEvents/triggerEvents.ts +0 -29
  25. package/src/app/services/websocket/websocket-js.ts +535 -61
  26. package/src/app/services/websocket/websocket.service.ts +11 -10
  27. package/src/app/utils/globals.ts +0 -2
  28. package/src/app/utils/utils.ts +0 -1
  29. package/src/assets/i18n/ar.json +2 -7
  30. package/src/assets/i18n/az.json +2 -7
  31. package/src/assets/i18n/de.json +2 -7
  32. package/src/assets/i18n/en.json +2 -7
  33. package/src/assets/i18n/es.json +2 -7
  34. package/src/assets/i18n/fr.json +2 -7
  35. package/src/assets/i18n/it.json +4 -9
  36. package/src/assets/i18n/kk.json +2 -7
  37. package/src/assets/i18n/pt.json +2 -7
  38. package/src/assets/i18n/ru.json +2 -7
  39. package/src/assets/i18n/sr.json +2 -7
  40. package/src/assets/i18n/sv.json +2 -7
  41. package/src/assets/i18n/tr.json +2 -7
  42. package/src/assets/i18n/uk.json +2 -7
  43. package/src/assets/i18n/uz.json +2 -8
  44. package/src/assets/js/chat21client.js +0 -36
  45. package/src/assets/test.html +2 -5
  46. package/src/chat-config-template.json +0 -1
  47. package/src/chat-config.json +0 -1
  48. package/src/chat21-core/models/projectUsers.ts +21 -12
  49. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
  50. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +1 -1
  51. package/src/chat21-core/utils/utils.ts +2 -16
  52. package/src/app/services/websocket/websocket-js_old.ts +0 -578
  53. package/src/app/services/websocket/websocket.worker.ts +0 -242
  54. package/src/assets/js/agentDesktop-sdk.js +0 -55
  55. package/src/assets/js/mqtt-keepalive-worker.js +0 -53
  56. package/src/chat21-core/models/project_user.ts +0 -26
@@ -44,18 +44,18 @@ export class WebsocketService {
44
44
  return new Promise(function (resolve, reject) {
45
45
 
46
46
  self.webSocketJs.ref(path, 'subscriptionToWsCurrentUser_allProject',
47
- function (data) {
47
+ function (data, notification) {
48
48
  // console.log("[WS-SERV] SUBSCR TO WS CURRENT PROJECT-USER AVAILABILITY - CREATE - data ", data);
49
49
  resolve(data)
50
50
  // self.currentUserWsAvailability$.next(data.user_available);
51
51
  self.currentProjectUserAvailability$.next(data)
52
52
 
53
- }, function (data) {
53
+ }, function (data, notification) {
54
54
  resolve(data)
55
55
  // console.log("[WS-SERV] SUBSCR TO WS CURRENT PROJECT-USER AVAILABILITY - UPDATE - data ", data);
56
56
  self.currentProjectUserAvailability$.next(data)
57
57
 
58
- }, function (data) {
58
+ }, function (data, notification) {
59
59
  resolve(data)
60
60
  if (data) {
61
61
  // console.log("[WS-SERV] SUBSCR TO WS CURRENT PROJECT-USER AVAILABILITY - UPDATE - data", data);
@@ -106,7 +106,7 @@ export class WebsocketService {
106
106
 
107
107
  this.webSocketJs.ref('/' + project_id + '/requests', 'getCurrentProjectAndSubscribeTo_WsRequests_' + project_id,
108
108
 
109
- function (data) {
109
+ function (data, notification) {
110
110
  // console.log("[WS-SERV] - CONVS - CREATE DATA for project ", project_id, data);
111
111
  if (data) {
112
112
  // ------------------------------------------------
@@ -195,7 +195,7 @@ export class WebsocketService {
195
195
  // }
196
196
  }
197
197
 
198
- }, function (data) {
198
+ }, function (data, notification) {
199
199
 
200
200
  // console.log("[WS-SERV] - CONVS - UPDATE DATA ", data);
201
201
 
@@ -213,8 +213,9 @@ export class WebsocketService {
213
213
  self.updateWsRequests(data)
214
214
 
215
215
 
216
- }, function (data) {
217
- self.logger.log("[WS-SERV] CHAT - CONVS - ON-DATA - DATA ", data);
216
+ }, function (data, notification) {
217
+ // self.logger.log("[WS-SERV] CHAT - CONVS - ON-DATA - DATA ", data);
218
+ // self.logger.log("[WS-SERV] CHAT - CONVS - ON-DATA - notification ", notification);
218
219
 
219
220
  // console.log("[WS-SERV] CHAT - CONVS - ON-DATA - DATA notification > event > method ", notification.event.method);
220
221
  // if (notification.event.method === 'CREATE') {
@@ -347,17 +348,17 @@ export class WebsocketService {
347
348
 
348
349
  this.webSocketJs.ref(path, 'subscribeToWS_RequesterPresence',
349
350
 
350
- function (data) {
351
+ function (data, notification) {
351
352
  // this.logger.log("[WS-REQUESTS-SERV] - SUBSCRIBE TO REQUESTER-PRECENCE - CREATE data ", data);
352
353
 
353
354
  self.wsRequesterStatus$.next(data);
354
355
 
355
- }, function (data) {
356
+ }, function (data, notification) {
356
357
  // this.logger.log("[WS-REQUESTS-SERV] - SUBSCRIBE TO REQUESTER-PRECENCE - UPDATE data ", data);
357
358
 
358
359
  self.wsRequesterStatus$.next(data);
359
360
 
360
- }, function (data) {
361
+ }, function (data, notification) {
361
362
 
362
363
  if (data) {
363
364
  // this.logger.log("[WS-REQUESTS-SERV] - SUBSCRIBE TO REQUESTER-PRECENCE - ON-DATA data ", data);
@@ -15,7 +15,6 @@ export class Globals {
15
15
  jwt: string;
16
16
  fileUploadAccept: string;
17
17
  projectID: string;
18
- logOut: boolean
19
18
 
20
19
  constructor(
21
20
  ) { }
@@ -37,7 +36,6 @@ export class Globals {
37
36
  this.lang = 'en'
38
37
  this.fileUploadAccept = 'image/*,.pdf,.txt'
39
38
  this.projectID = null;
40
- this.logOut = true;
41
39
 
42
40
  }
43
41
 
@@ -6,7 +6,6 @@ export function getOSCode(key: string, token: string): boolean {
6
6
  const keys: String[] = token.split("-");
7
7
 
8
8
  let element = keys.find(el => el.includes(key))
9
- // console.log('keys', keys)
10
9
  if(element){
11
10
  element = element.split(":")[1]
12
11
  if(element && element === "F"){
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "الكتابة",
119
119
  "LABEL_VERSION": "الإصدار",
120
120
  "LABEL_CONTACTS": "جهات الاتصال",
121
+ "LABEL_WA":"بث واتساب",
121
122
  "LABEL_PLACEHOLDER": "اكتب رسالتك ..",
122
123
  "LABEL_START_NW_CONV": "محادثة جديدة",
123
124
  "LABEL_FIRST_MSG": "صِف مشكلتك بعد قليل ، وسيتواصل معك أحد الوكلاء.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"تم إرسال الرسالة أيضًا عبر البريد الإلكتروني 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "الرموز التعبيرية غير مسموح بها",
313
- "DOMAIN_NOT_ALLOWED": "يحتوي الرابط على نطاق غير مسموح",
314
- "TICKET": {
315
- "OPEN_TICKET": "افتح تذكرة",
316
- "DESCRIPTION": "هل تؤكد أنك تريد فتح تذكرة لهذه المحادثة؟",
317
- "CONFIRM": "تأكيد",
318
- "CLOSE": "إغلاق"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "يحتوي الرابط على نطاق غير مسموح"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "yazmaq",
119
119
  "LABEL_VERSION": "versiya",
120
120
  "LABEL_CONTACTS": "Əlaqələr",
121
+ "LABEL_WA":"Whatsapp yayımları",
121
122
  "LABEL_PLACEHOLDER": "mesajınızı yazın..",
122
123
  "LABEL_START_NW_CONV": "Yeni söhbət",
123
124
  "LABEL_FIRST_MSG": "Probleminizi qısaca təsvir edin, agent sizinlə əlaqə saxlayacaq.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mesaj e-poçt vasitəsilə də göndərilib 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emoji icazə verilmir",
313
- "DOMAIN_NOT_ALLOWED": "URL icazə verilməyən domeni ehtiva edir",
314
- "TICKET": {
315
- "OPEN_TICKET": "Bilet aç",
316
- "DESCRIPTION": "Bu söhbət üçün bilet açmaq istədiyinizi təsdiqləyirsinizmi?",
317
- "CONFIRM": "Təsdiqlə",
318
- "CLOSE": "Bağla"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "URL icazə verilməyən domeni ehtiva edir"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "tippen",
119
119
  "LABEL_VERSION": "Ausführung",
120
120
  "LABEL_CONTACTS": "Kontakte",
121
+ "LABEL_WA":"WhatsApp-Übertragungen",
121
122
  "LABEL_PLACEHOLDER": "Geben Sie Ihre Nachricht ein..",
122
123
  "LABEL_START_NW_CONV": "Neues Gespräch",
123
124
  "LABEL_FIRST_MSG": "Beschreiben Sie kurz Ihr Problem, Sie werden von einem Agenten kontaktiert.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Nachricht auch per E-Mail gesendet 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emoji nicht erlaubt",
313
- "DOMAIN_NOT_ALLOWED": "Die URL enthält eine nicht erlaubte Domain",
314
- "TICKET": {
315
- "OPEN_TICKET": "Ticket öffnen",
316
- "DESCRIPTION": "Bestätigen Sie, dass Sie ein Ticket für dieses Gespräch eröffnen möchten?",
317
- "CONFIRM": "Bestätigen",
318
- "CLOSE": "Schließen"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "Die URL enthält eine nicht erlaubte Domain"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "typing",
119
119
  "LABEL_VERSION": "version",
120
120
  "LABEL_CONTACTS": "Contacts",
121
+ "LABEL_WA":"Whatsapp broadcasts",
121
122
  "LABEL_PLACEHOLDER": "type your message..",
122
123
  "LABEL_START_NW_CONV": "New conversation",
123
124
  "LABEL_FIRST_MSG": "Describe shortly your problem, you will be contacted by an agent.",
@@ -318,11 +319,5 @@
318
319
  "HOW_CAN_I_HELP_YOU":"How can i help you?"
319
320
  },
320
321
  "EMOJI_NOT_ELLOWED":"Emoji not allowed",
321
- "DOMAIN_NOT_ALLOWED":"URL contains a non-allowed domain",
322
- "TICKET": {
323
- "OPEN_TICKET": "Open Ticket",
324
- "DESCRIPTION": "Do you confirm you want to open a ticket for this conversation?",
325
- "CONFIRM": "Confirm",
326
- "CLOSE": "Close"
327
- }
322
+ "DOMAIN_NOT_ALLOWED":"URL contains a non-allowed domain"
328
323
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "escribir",
119
119
  "LABEL_VERSION": "versión",
120
120
  "LABEL_CONTACTS": "Contactos",
121
+ "LABEL_WA":"Transmisiones de Whatsapp",
121
122
  "LABEL_PLACEHOLDER": "escribe tu mensaje..",
122
123
  "LABEL_START_NW_CONV": "Nueva conversación",
123
124
  "LABEL_FIRST_MSG": "Describa en breve su problema, será contactado por un agente.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mensaje también enviado por correo electrónico 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emoji no permitido",
313
- "DOMAIN_NOT_ALLOWED": "La URL contiene un dominio no permitido",
314
- "TICKET": {
315
- "OPEN_TICKET": "Abrir Ticket",
316
- "DESCRIPTION": "¿Confirmas que deseas abrir un ticket para esta conversación?",
317
- "CONFIRM": "Confirmar",
318
- "CLOSE": "Cerrar"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "La URL contiene un dominio no permitido"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "dactylographie",
119
119
  "LABEL_VERSION": "version",
120
120
  "LABEL_CONTACTS": "Contacts",
121
+ "LABEL_WA":"Diffusions Whatsapp",
121
122
  "LABEL_PLACEHOLDER": "tapez votre message..",
122
123
  "LABEL_START_NW_CONV": "Nouvelle conversation",
123
124
  "LABEL_FIRST_MSG": "Décrivez brièvement votre problème, vous serez contacté par un agent.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Message également envoyé par mail 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emoji non autorisé",
313
- "DOMAIN_NOT_ALLOWED": "L'URL contient un domaine non autorisé",
314
- "TICKET": {
315
- "OPEN_TICKET": "Ouvrir un Ticket",
316
- "DESCRIPTION": "Confirmez-vous vouloir ouvrir un ticket pour cette conversation ?",
317
- "CONFIRM": "Confirmer",
318
- "CLOSE": "Fermer"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "L'URL contient un domaine non autorisé"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "sta scrivendo...",
119
119
  "LABEL_VERSION": "versione",
120
120
  "LABEL_CONTACTS": "Contatti",
121
+ "LABEL_WA":"WhatsApp Broadcasts",
121
122
  "LABEL_PLACEHOLDER": "Scrivi la tua domanda...",
122
123
  "LABEL_START_NW_CONV": "Nuova conversazione",
123
124
  "LABEL_FIRST_MSG": "Descrivi sinteticamente il tuo problema, ti metteremo in contatto con un operatore specializzato.",
@@ -316,13 +317,7 @@
316
317
  "NO_SUGGESTIONS_PRESENT":"Nessun suggerimento trovato",
317
318
  "INSERT_PROMPT_HERE":"Inserisci un prompt qui",
318
319
  "HOW_CAN_I_HELP_YOU":"Come posso aiutarti?"
319
- },
320
- "EMOJI_NOT_ELLOWED": "Emoji non consentite",
321
- "DOMAIN_NOT_ALLOWED": "L'URL contiene un dominio non consentito",
322
- "TICKET": {
323
- "OPEN_TICKET": "Apri Ticket",
324
- "DESCRIPTION": "Confermi di voler aprire un ticket per questa conversazione?",
325
- "CONFIRM": "Conferma",
326
- "CLOSE": "Chiudi"
327
- }
320
+ },
321
+ "EMOJI_NOT_ELLOWED": "Emoji non consentite",
322
+ "DOMAIN_NOT_ALLOWED": "L'URL contiene un dominio non consentito"
328
323
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "теру",
119
119
  "LABEL_VERSION": "нұсқасы",
120
120
  "LABEL_CONTACTS": "Контактілер",
121
+ "LABEL_WA":"Whatsapp хабарлары",
121
122
  "LABEL_PLACEHOLDER": "хабарламаңызды теріңіз..",
122
123
  "LABEL_START_NW_CONV": "Жаңа әңгіме",
123
124
  "LABEL_FIRST_MSG": "Мәселеңізді қысқаша сипаттаңыз, сізге агент хабарласады.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Хабарлама электрондық пошта арқылы да жіберілді 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Эмодзи рұқсат етілмеген",
313
- "DOMAIN_NOT_ALLOWED": "URL рұқсат етілмеген доменді қамтиды",
314
- "TICKET": {
315
- "OPEN_TICKET": "Тапсырма ашу",
316
- "DESCRIPTION": "Осы әңгіме үшін тапсырма ашқыңыз келетінін растайсыз ба?",
317
- "CONFIRM": "Растау",
318
- "CLOSE": "Жабу"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "URL рұқсат етілмеген доменді қамтиды"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "digitando",
119
119
  "LABEL_VERSION": "versão",
120
120
  "LABEL_CONTACTS": "Contatos",
121
+ "LABEL_WA":"Transmissões WhatsApp",
121
122
  "LABEL_PLACEHOLDER": "digite sua mensagem..",
122
123
  "LABEL_START_NW_CONV": "Nova conversa",
123
124
  "LABEL_FIRST_MSG": "Descreva brevemente seu problema, você será contatado por um agente.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mensagem também enviada por e-mail 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emoji não permitido",
313
- "DOMAIN_NOT_ALLOWED": "O URL contém um domínio não permitido",
314
- "TICKET": {
315
- "OPEN_TICKET": "Abrir Ticket",
316
- "DESCRIPTION": "Confirma que deseja abrir um ticket para esta conversa?",
317
- "CONFIRM": "Confirmar",
318
- "CLOSE": "Fechar"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "O URL contém um domínio não permitido"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "печатание",
119
119
  "LABEL_VERSION": "версия",
120
120
  "LABEL_CONTACTS": "Контакты",
121
+ "LABEL_WA":"Трансляции Whatsapp",
121
122
  "LABEL_PLACEHOLDER": "введите ваше сообщение..",
122
123
  "LABEL_START_NW_CONV": "Новый разговор",
123
124
  "LABEL_FIRST_MSG": "Кратко опишите вашу проблему, с вами свяжется агент.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Сообщение также отправлено по электронной почте 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Эмодзи не разрешены",
313
- "DOMAIN_NOT_ALLOWED": "URL содержит недопустимый домен",
314
- "TICKET": {
315
- "OPEN_TICKET": "Открыть тикет",
316
- "DESCRIPTION": "Вы подтверждаете, что хотите открыть тикет для этого разговора?",
317
- "CONFIRM": "Подтвердить",
318
- "CLOSE": "Закрыть"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "URL содержит недопустимый домен"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "куцање",
119
119
  "LABEL_VERSION": "верзија",
120
120
  "LABEL_CONTACTS": "Kонтакти",
121
+ "LABEL_WA":"Whatsapp емитовања",
121
122
  "LABEL_PLACEHOLDER": "откуцај своју поруку..",
122
123
  "LABEL_START_NW_CONV": "Нови разговор",
123
124
  "LABEL_FIRST_MSG": "Опишите укратко свој проблем, контактираће вас агент.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Порука је такође послата е-поштом 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emodžiji nisu dozvoljeni",
313
- "DOMAIN_NOT_ALLOWED": "URL sadrži nedozvoljenu domenu",
314
- "TICKET": {
315
- "OPEN_TICKET": "Otvori tiket",
316
- "DESCRIPTION": "Da li potvrđujete da želite da otvorite tiket za ovaj razgovor?",
317
- "CONFIRM": "Potvrdi",
318
- "CLOSE": "Zatvori"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "URL sadrži nedozvoljenu domenu"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "skriver",
119
119
  "LABEL_VERSION": "version",
120
120
  "LABEL_CONTACTS": "Kontakter",
121
+ "LABEL_WA":"Whatsapp-sändningar",
121
122
  "LABEL_PLACEHOLDER": "skriv ditt meddelande..",
122
123
  "LABEL_START_NW_CONV": "Ny konversation",
123
124
  "LABEL_FIRST_MSG": "Beskriv kort ditt problem, du kommer att kontaktas av en agent.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Meddelande skickas även via mail 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emoji är inte tillåtna",
313
- "DOMAIN_NOT_ALLOWED": "URL:en innehåller en otillåten domän",
314
- "TICKET": {
315
- "OPEN_TICKET": "Öppna Ärende",
316
- "DESCRIPTION": "Bekräftar du att du vill öppna ett ärende för den här konversationen?",
317
- "CONFIRM": "Bekräfta",
318
- "CLOSE": "Stäng"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "URL:en innehåller en otillåten domän"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "yazıyor",
119
119
  "LABEL_VERSION": "versiyon",
120
120
  "LABEL_CONTACTS": "Kişiler",
121
+ "LABEL_WA":"Whatsapp Yayınları",
121
122
  "LABEL_PLACEHOLDER": "mesajını yaz..",
122
123
  "LABEL_START_NW_CONV": "Yeni görüşme",
123
124
  "LABEL_FIRST_MSG": "Sorununuzu kısaca açıklayın, bir temsilci sizinle iletişime geçecektir.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mesaj ayrıca e-posta ile gönderilir 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emoji'ye izin verilmiyor",
313
- "DOMAIN_NOT_ALLOWED": "URL izin verilmeyen bir alan adı içeriyor",
314
- "TICKET": {
315
- "OPEN_TICKET": "Bilet Aç",
316
- "DESCRIPTION": "Bu görüşme için bir bilet açmak istediğinizi onaylıyor musunuz?",
317
- "CONFIRM": "Onayla",
318
- "CLOSE": "Kapat"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "URL izin verilmeyen bir alan adı içeriyor"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "введення тексту",
119
119
  "LABEL_VERSION": "версія",
120
120
  "LABEL_CONTACTS": "Контакти",
121
+ "LABEL_WA":"Трансляції Whatsapp",
121
122
  "LABEL_PLACEHOLDER": "введіть своє повідомлення..",
122
123
  "LABEL_START_NW_CONV": "Нова розмова",
123
124
  "LABEL_FIRST_MSG": "Коротко опишіть вашу проблему, з вами зв’яжеться агент.",
@@ -310,11 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Повідомлення також надіслано електронною поштою 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Емодзі не дозволені",
313
- "DOMAIN_NOT_ALLOWED": "URL містить недозволений домен",
314
- "TICKET": {
315
- "OPEN_TICKET": "Відкрити тікет",
316
- "DESCRIPTION": "Підтверджуєте, що хочете відкрити тікет для цієї розмови?",
317
- "CONFIRM": "Підтвердити",
318
- "CLOSE": "Закрити"
319
- }
314
+ "DOMAIN_NOT_ALLOWED": "URL містить недозволений домен"
320
315
  }
@@ -118,6 +118,7 @@
118
118
  "LABEL_IS_WRITING": "yozish",
119
119
  "LABEL_VERSION": "versiya",
120
120
  "LABEL_CONTACTS": "Kontaktlar",
121
+ "LABEL_WA":"Whatsapp translyatsiyalari",
121
122
  "LABEL_PLACEHOLDER": "xabaringizni yozing..",
122
123
  "LABEL_START_NW_CONV": "Yangi suhbat",
123
124
  "LABEL_FIRST_MSG": "Muammoingizni qisqacha tasvirlab bering, siz bilan agent bog'lanadi.",
@@ -310,12 +311,5 @@
310
311
  "SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Xabar elektron pochta orqali ham yuborildi 📩"
311
312
  },
312
313
  "EMOJI_NOT_ELLOWED": "Emoji'ga ruxsat berilmagan",
313
- "DOMAIN_NOT_ALLOWED": "URL ruxsat etilmagan domenni o'z ichiga oladi",
314
- "TICKET": {
315
- "OPEN_TICKET": "Chiptani ochish",
316
- "DESCRIPTION": "Ushbu suhbat uchun chipta ochmoqchi ekanligingizni tasdiqlaysizmi?",
317
- "CONFIRM": "Tasdiqlash",
318
- "CLOSE": "Yopish"
319
- }
320
-
314
+ "DOMAIN_NOT_ALLOWED": "URL ruxsat etilmagan domenni o'z ichiga oladi"
321
315
  }
@@ -1010,7 +1010,6 @@ class Chat21Client {
1010
1010
  this.start( () => {
1011
1011
  // callback();
1012
1012
  });
1013
- this.initKeepAliveWorker()
1014
1013
  }
1015
1014
  this.client.publish(
1016
1015
  this.presence_topic,
@@ -1028,36 +1027,6 @@ class Chat21Client {
1028
1027
  console.error("Chat client error event", error);
1029
1028
  }
1030
1029
  );
1031
-
1032
-
1033
- }
1034
-
1035
-
1036
- initKeepAliveWorker(){
1037
- this.worker= new Worker('assets/js/mqtt-keepalive-worker.js');
1038
- if (this.log) {
1039
- console.log("Chat21Client - initKeepAliveWorker() - worker created", this.worker);
1040
- }
1041
- // this.worker.postMessage({
1042
- // action: 'start',
1043
- // user_id: this.user_id,
1044
- // client_id: this.client_id,
1045
- // jwt: this.jwt,
1046
- // endpoint: this.endpoint
1047
- // });
1048
- this.worker.onmessage = (event) => {
1049
- if (event.data.action === 'ping') {
1050
- if (this.client && this.client.connected) {
1051
- // questo non causa refresh di niente
1052
- this.client.publish(
1053
- `apps/tilechat/users/${this.user_id}/keepalive`,
1054
- JSON.stringify({ ts: Date.now() })
1055
- );
1056
- }
1057
- }
1058
- };
1059
-
1060
- this.worker.postMessage({ action: 'ping' });
1061
1030
  }
1062
1031
 
1063
1032
  onDisconnect(callback){
@@ -1072,11 +1041,6 @@ class Chat21Client {
1072
1041
  this.connected = false
1073
1042
  if (this.log) {console.log("Chat client close event");}
1074
1043
  callback('close')
1075
- if (this.worker) {
1076
- this.worker.postMessage({ action: 'stop' });
1077
- this.worker.terminate();
1078
- this.worker = null;
1079
- }
1080
1044
  }
1081
1045
  );
1082
1046
  this.client.on('offline',
@@ -4,7 +4,7 @@
4
4
  <head>
5
5
  <meta charset="utf-8">
6
6
  <meta name="viewport" content="width=device-width">
7
- <title>Iframe test</title>
7
+ <title>replit</title>
8
8
  </head>
9
9
 
10
10
  <body style="height: 100%;">
@@ -20,10 +20,7 @@
20
20
  </div>
21
21
 
22
22
  <iframe id="myIFrame" frameBorder="0" width="100%" style="display: flex; height: 95vh" onload="onLoad()"
23
- src="http://localhost:8080/#/conversation-detail?tiledesk_supportMode=true&jwt=JWT eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NWM1ZjM1OTlmYWYyZDA0Y2Q3ZGE1MjgiLCJlbWFpbCI6Imdpb3Zhbm5pQHRpbGVkZXNrLmNvbSIsImZpcnN0bmFtZSI6Ikdpb3Zhbm5pIiwibGFzdG5hbWUiOiJUcm9pc2kgQWRtIiwiZW1haWx2ZXJpZmllZCI6dHJ1ZSwiaWF0IjoxNzY0NjAyMTQxLCJhdWQiOiJodHRwczovL3RpbGVkZXNrLmNvbSIsImlzcyI6Imh0dHBzOi8vdGlsZWRlc2suY29tIiwic3ViIjoidXNlciIsImp0aSI6IjIwNzZjYmMxLTI0NzgtNGU4MC1iZjFmLTBiZTA3MTQ3MjQ3MSJ9.R60xZC5M2n-hc-mRIMpA9KaUFxnBQHA_FrLyL9cCiqxeCitfCfbfA3_EKXWbWg3rDztmOR7SVjEO8Gyw_hdhKyjpx-OpaDAILw0dSsuBHB0R4h0F4fN2J_JJ60UIItXxoAq1AI9ML2cRGoRNAtfl6PMjpHXdbpdBAGcBYoGqGv3xWPlM7wOdIhGasnWT932DiscF3I_ltcFkS3naebQQfsgztlbU-UF7EcFjDc-mMzMxqnE1MYKzyqUAR9J9zFmqiUlCsl_J0TNhAjqUw-0GHXpzLQJN9dutVyH4y_MZxt_p6qAIzNo9LpMi-a5bfvQvpJjSuc9POvmlmWFAmwoQGw"
24
- allow="autoplay; fullscreen; geolocation; microphone; camera; display-capture; encrypted-media; clipboard-read; clipboard-write;"
25
- loading="eager" importance="high">
26
- </iframe>
23
+ src="http://localhost:8080/#/conversation-detail?tiledesk_supportMode=true&jwt=JWT eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZmQzNGU0MjQ5NjEwZTAwMzQ5ODUwNzgiLCJlbWFpbCI6ImdhYnJpZWxlLnBhbmljb0Bmcm9udGllcmUyMS5pdCIsImZpcnN0bmFtZSI6IkdhYnJpZWxlMiIsImxhc3RuYW1lIjoiUGFuaWNvIC1wcmUiLCJlbWFpbHZlcmlmaWVkIjp0cnVlLCJpYXQiOjE2OTgzMzYyMTMsImF1ZCI6Imh0dHBzOi8vdGlsZWRlc2suY29tIiwiaXNzIjoiaHR0cHM6Ly90aWxlZGVzay5jb20iLCJzdWIiOiJ1c2VyIiwianRpIjoiNjAzZGY3NDQtZWY0OS00Mjg2LWJlMWQtYWM5OGYyYTNkMTJiIn0.bof5QPQP262yCQfpeSjqyoYPkSCttg5NQFkcV8d634xzeq7wJBdhtiO7IJY6hS81a1YyXrAsxlK7RiNS-UZdYiTXR81UXurQd1fnE9jtaggB82tyNL8vmiZEOs6xh4TqO3-kkBzRxQIp74bY53fk_mu5RmNbAjIgUWEufaNDiv8"></iframe>
27
24
 
28
25
  <script>
29
26
  // window.addEventListener('message', event => {
@@ -37,7 +37,6 @@
37
37
  "wsUrlRel": "${WS_URL_RELATIVE}",
38
38
  "storage_prefix": "${CHAT_STORAGE_PREFIX}",
39
39
  "emailSection": "${EMAIL_SECTION}",
40
- "ticketSection": "${TICKET_SECTION}",
41
40
  "whatsappTemplatesSection":"${WHATSAPP_TEMPLATES_SECTION}",
42
41
  "googleMapsApiKey":"${GOOGLE_MAPS_APIKEY}"
43
42
  }
@@ -37,7 +37,6 @@
37
37
  "writeToButton": false,
38
38
  "archivedButton": false,
39
39
  "emailSection": true,
40
- "ticketSection": false,
41
40
  "whatsappTemplatesSection":true,
42
41
  "googleMapsApiKey":"CHANGEIT"
43
42
  }
@@ -1,19 +1,28 @@
1
1
  export interface ProjectUser {
2
2
  _id?: string;
3
- updatedAt?: any;
4
- createdAt?: any;
5
- id_project?: string;
6
- user_available?: boolean;
7
- role?: string;
3
+ id?: string;
4
+ __v?: any;
5
+ attributes?: any;
6
+ createdAt?: string | any;
8
7
  createdBy?: string;
9
- is_group_member?: boolean;
10
- // id_user?: string;
8
+ id_project?: any;
9
+ id_user?: any;
11
10
  isAuthenticated?: boolean;
12
11
  isBusy?: boolean;
13
- status?: string;
14
- id_user?: any;
15
- rolePermissions?: string[];
12
+ is_group_member?: boolean;
13
+ last_login_at?: string;
14
+ number_assigned_requests?: number;
15
+ permissions?: any;
16
+ presence?: { [key: string]: string } | any;
16
17
  profileStatus?: string;
17
- presence?: { [key: string]: string}
18
- __v?: any;
18
+ role?: string;
19
+ roleType?: number;
20
+ rolePermissions?: string[];
21
+ status?: string;
22
+ tags?: any;
23
+ trashed?: boolean;
24
+ updatedAt?: string | any;
25
+ user_available?: boolean;
26
+ /** Derived in UI (e.g. from getUserStatusFromProjectUser) */
27
+ teammateStatus?: any;
19
28
  }
@@ -387,7 +387,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
387
387
  } else {
388
388
 
389
389
  if (message.attributes.messagelabel.parameters.firstname) {
390
- // other user has been added to the group (and he has a fullname)
390
+ // other user has been added to the group (and he has a firstname)
391
391
  subject = message.attributes.messagelabel.parameters.firstname;
392
392
  verb = INFO_SUPPORT_USER_ADDED_VERB;
393
393
  complement = INFO_SUPPORT_USER_ADDED_COMPLEMENT;
@@ -365,7 +365,7 @@ export class MQTTConversationHandler extends ConversationHandlerService {
365
365
  complement = INFO_SUPPORT_USER_ADDED_COMPLEMENT;
366
366
  } else {
367
367
  if (message.attributes.messagelabel.parameters.firstname) {
368
- // other user has been added to the group (and he has a fullname)
368
+ // other user has been added to the group (and he has a firstname)
369
369
  subject = message.attributes.messagelabel.parameters.firstname;
370
370
  verb = INFO_SUPPORT_USER_ADDED_VERB;
371
371
  complement = INFO_SUPPORT_USER_ADDED_COMPLEMENT;
@@ -765,12 +765,6 @@ export function isOnMobileDevice() {
765
765
  return IS_ON_MOBILE_DEVICE;
766
766
  }
767
767
 
768
-
769
- export function checkIfIsInIframe(){
770
- const isInIframe = window.self !== window.top;
771
- return isInIframe;
772
- }
773
-
774
768
  export function checkWindowWidthIsLessThan991px() {
775
769
  // console.log('UTILS - checkWindowWidthIsLessThan991px:: ', window.innerWidth);
776
770
  if (window.innerWidth < 991) {
@@ -1024,16 +1018,8 @@ export function isAllowedUrlInText(text: string, allowedUrls: string[]) {
1024
1018
  }
1025
1019
 
1026
1020
  function extractUrls(text: string): string[] {
1027
- // Rileva URL con o senza protocollo (http/https)
1028
- const urlRegex = /\b((https?:\/\/)?(www\.)?[a-z0-9.-]+\.[a-z]{2,})(\/[^\s]*)?/gi;
1029
- const matches = text.match(urlRegex) || [];
1030
- // Normalizza: aggiunge https:// se manca, così il parsing con new URL() funziona
1031
- return matches.map((url) => {
1032
- if (!/^https?:\/\//i.test(url)) {
1033
- return 'https://' + url;
1034
- }
1035
- return url;
1036
- });
1021
+ const urlRegex = /https?:\/\/[^\s]+/g;
1022
+ return text.match(urlRegex) || [];
1037
1023
  }
1038
1024
 
1039
1025
  /**