@chat21/chat21-ionic 3.0.60-rc2 → 3.0.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/LICENSE +661 -21
  3. package/deploy_pre.sh +45 -6
  4. package/deploy_prod.sh +34 -9
  5. package/env.sample +1 -1
  6. package/package.json +1 -1
  7. package/src/app/app.component.ts +45 -21
  8. package/src/app/app.module.ts +2 -2
  9. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +62 -36
  10. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +42 -13
  11. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +13 -6
  12. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +38 -3
  13. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +8 -6
  14. package/src/app/components/image-viewer/image-viewer.component.scss +2 -2
  15. package/src/app/components/project-item/project-item.component.html +140 -118
  16. package/src/app/components/project-item/project-item.component.scss +167 -90
  17. package/src/app/components/project-item/project-item.component.ts +41 -20
  18. package/src/app/pages/conversation-detail/conversation-detail.module.ts +2 -1
  19. package/src/app/pages/conversation-detail/conversation-detail.page.html +36 -43
  20. package/src/app/pages/conversation-detail/conversation-detail.page.ts +199 -110
  21. package/src/app/pages/conversations-list/conversations-list.page.html +9 -5
  22. package/src/app/pages/conversations-list/conversations-list.page.scss +12 -1
  23. package/src/app/pages/conversations-list/conversations-list.page.ts +24 -6
  24. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +16 -11
  25. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +157 -63
  26. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +51 -16
  27. package/src/app/shared/shared.module.ts +6 -5
  28. package/src/assets/i18n/de.json +209 -0
  29. package/src/assets/i18n/en.json +24 -8
  30. package/src/assets/i18n/es.json +209 -0
  31. package/src/assets/i18n/fr.json +209 -0
  32. package/src/assets/i18n/it.json +42 -34
  33. package/src/assets/i18n/pt.json +209 -0
  34. package/src/assets/i18n/ru.json +209 -0
  35. package/src/assets/i18n/tr.json +209 -0
  36. package/src/assets/js/chat21client.js +16 -3
  37. package/src/chat-config-mqtt.json +2 -1
  38. package/src/chat-config-pre-test.json +2 -0
  39. package/src/chat-config-template.json +1 -0
  40. package/src/chat-config.json +1 -0
  41. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +54 -43
  42. package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +23 -0
  43. package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -1
  44. package/src/chat21-core/utils/constants.ts +2 -0
  45. package/src/chat21-core/utils/utils.ts +12 -1
  46. package/src/global.scss +4 -0
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  Chat21Client
3
3
 
4
- v0.1.9
4
+ v0.1.10
5
5
 
6
6
  @Author Andrea Sponziello
7
7
  (c) Tiledesk 2020
@@ -124,7 +124,7 @@ class Chat21Client {
124
124
  }
125
125
 
126
126
  sendMessageRaw(outgoing_message, recipient_id, callback) {
127
- // callback - function (err)
127
+ // callback - function (err)
128
128
  // console.log("recipient_id:", recipient_id)
129
129
  let dest_topic = `apps/${this.appid}/outgoing/users/${this.user_id}/messages/${recipient_id}/outgoing`
130
130
  // console.log("dest_topic:", dest_topic)
@@ -784,8 +784,21 @@ class Chat21Client {
784
784
  }
785
785
 
786
786
  conversationDetail(conversWith, callback) {
787
+ this.crossConversationDetail(conversWith, false, callback);
788
+ }
789
+
790
+ archivedConversationDetail(conversWith, callback) {
791
+ this.crossConversationDetail(conversWith, true, callback);
792
+ }
793
+
794
+ crossConversationDetail(conversWith, archived, callback) {
795
+ let path = "conversations";
796
+ if (archived) {
797
+ path = "archived_conversations"
798
+ }
787
799
  // ex.: http://localhost:8004/tilechat/04-ANDREASPONZIELLO/conversations/CONVERS_WITH
788
- const URL = `${this.APIendpoint}/${this.appid}/${this.user_id}/conversations/${conversWith}`
800
+ //const URL = `${this.APIendpoint}/${this.appid}/${this.user_id}/conversations/${conversWith}`
801
+ const URL = `${this.APIendpoint}/${this.appid}/${this.user_id}/${path}/${conversWith}`
789
802
  console.log("getting conversation detail:", URL)
790
803
  console.log("conversWith:", conversWith)
791
804
  var xmlhttp = new XMLHttpRequest();
@@ -23,4 +23,5 @@
23
23
  "apiUrl": "http://99.80.197.164:3000/",
24
24
  "baseImageUrl": "http://99.80.197.164:3000/",
25
25
  "dashboardUrl": "http://tiledesk-dashboard-pre.s3-eu-west-1.amazonaws.com/native-mqtt/dashboard/2.1.70-beta.1.6/index.html"
26
- }
26
+ }
27
+
@@ -1,4 +1,5 @@
1
1
  {
2
+ "t2y12PruGU9wUtEGzBJfolMIgK": "CAR:T",
2
3
  "chatEngine": "firebase",
3
4
  "uploadEngine": "firebase",
4
5
  "pushEngine": "firebase",
@@ -30,3 +31,4 @@
30
31
  "wsUrl": "wss://tiledesk-server-pre.herokuapp.com/"
31
32
  }
32
33
 
34
+
@@ -1,4 +1,5 @@
1
1
  {
2
+ "t2y12PruGU9wUtEGzBJfolMIgK": "${FEATURES_TOKEN}",
2
3
  "chatEngine": "${CHAT21_ENGINE}",
3
4
  "uploadEngine": "${UPLOAD_ENGINE}",
4
5
  "pushEngine":"${PUSH_ENGINE}",
@@ -1,4 +1,5 @@
1
1
  {
2
+ "t2y12PruGU9wUtEGzBJfolMIgK": "",
2
3
  "chatEngine": "mqtt",
3
4
  "updloaEngine": "native",
4
5
  "pushEngine":"none",
@@ -18,8 +18,8 @@ import { ConversationHandlerService } from '../abstract/conversation-handler.ser
18
18
  import { LoggerService } from '../abstract/logger.service';
19
19
  import { LoggerInstance } from '../logger/loggerInstance';
20
20
  // utils
21
- import { MSG_STATUS_RECEIVED, CHAT_REOPENED, CHAT_CLOSED, MEMBER_JOINED_GROUP, TYPE_DIRECT, MESSAGE_TYPE_INFO } from '../../utils/constants';
22
- import { compareValues,searchIndexInArrayForUid,conversationMessagesRef } from '../../utils/utils';
21
+ import { MSG_STATUS_RECEIVED, CHAT_REOPENED, CHAT_CLOSED, MEMBER_JOINED_GROUP, TYPE_DIRECT, MESSAGE_TYPE_INFO , TOUCHING_OPERATOR} from '../../utils/constants';
22
+ import { compareValues, searchIndexInArrayForUid, conversationMessagesRef } from '../../utils/utils';
23
23
 
24
24
 
25
25
  import { messageType } from 'src/chat21-core/utils/utils-message';
@@ -54,7 +54,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
54
54
  private listSubsriptions: any[];
55
55
  private CLIENT_BROWSER: string;
56
56
  private lastDate = '';
57
- private logger:LoggerService = LoggerInstance.getInstance()
57
+ private logger: LoggerService = LoggerInstance.getInstance()
58
58
  private ref: firebase.database.Query;
59
59
 
60
60
  constructor(@Inject('skipMessage') private skipMessage: boolean) {
@@ -64,8 +64,8 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
64
64
  /**
65
65
  * inizializzo conversation handler
66
66
  */
67
- initialize(recipientId: string,recipientFullName: string,loggedUser: UserModel,tenant: string,translationMap: Map<string, string>) {
68
- this.logger.log('[FIREBASEConversationHandlerSERVICE] initWithRecipient',recipientId, recipientFullName, loggedUser, tenant, translationMap)
67
+ initialize(recipientId: string, recipientFullName: string, loggedUser: UserModel, tenant: string, translationMap: Map<string, string>) {
68
+ this.logger.log('[FIREBASEConversationHandlerSERVICE] initWithRecipient', recipientId, recipientFullName, loggedUser, tenant, translationMap)
69
69
  this.recipientId = recipientId;
70
70
  this.recipientFullname = recipientFullName;
71
71
  this.loggedUser = loggedUser;
@@ -74,7 +74,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
74
74
  }
75
75
  this.tenant = tenant;
76
76
  this.translationMap = translationMap;
77
-
77
+
78
78
  this.listSubsriptions = [];
79
79
  this.CLIENT_BROWSER = navigator.userAgent;
80
80
  this.conversationWith = recipientId;
@@ -159,20 +159,20 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
159
159
  false
160
160
  );
161
161
  const messageRef = firebaseMessagesCustomUid.push({
162
- language: lang,
163
- recipient: conversationWith,
164
- recipient_fullname: recipientFullname,
165
- sender: sender,
166
- sender_fullname: senderFullname,
167
- status: 0,
168
- metadata: metadataMsg,
169
- text: msg,
170
- timestamp: firebase.database.ServerValue.TIMESTAMP,
171
- type: typeMsg,
172
- attributes: attributes,
173
- channel_type: channelType
174
- // isSender: true
175
- });
162
+ language: lang,
163
+ recipient: conversationWith,
164
+ recipient_fullname: recipientFullname,
165
+ sender: sender,
166
+ sender_fullname: senderFullname,
167
+ status: 0,
168
+ metadata: metadataMsg,
169
+ text: msg,
170
+ timestamp: firebase.database.ServerValue.TIMESTAMP,
171
+ type: typeMsg,
172
+ attributes: attributes,
173
+ channel_type: channelType
174
+ // isSender: true
175
+ });
176
176
 
177
177
  // const message = new MessageModel(
178
178
  // key,
@@ -190,9 +190,9 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
190
190
  // channelType, // channel_type
191
191
  // true // is_sender
192
192
  // );
193
- this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> messages: ', this.messages);
194
- this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> senderFullname: ', senderFullname);
195
- this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> sender: ', sender);
193
+ this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> messages: ', this.messages);
194
+ this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> senderFullname: ', senderFullname);
195
+ this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> sender: ', sender);
196
196
  this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> SEND MESSAGE: ', msg, channelType);
197
197
  return message
198
198
  }
@@ -213,7 +213,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
213
213
  // const attributes: any = {
214
214
  // client: this.CLIENT_BROWSER,
215
215
  // sourcePage: location.href,
216
-
216
+
217
217
  // };
218
218
 
219
219
  // if(this.loggedUser && this.loggedUser.email ){
@@ -222,7 +222,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
222
222
  // if(this.loggedUser && this.loggedUser.fullname) {
223
223
  // attributes.userFullname = this.loggedUser.fullname
224
224
  // }
225
-
225
+
226
226
 
227
227
  // // let attributes: any = JSON.parse(sessionStorage.getItem('attributes'));
228
228
  // // if (!attributes || attributes === 'undefined') {
@@ -242,7 +242,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
242
242
  private added(childSnapshot: any) {
243
243
  const msg = this.messageGenerate(childSnapshot);
244
244
  // msg.attributes && msg.attributes['subtype'] === 'info'
245
- if(this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)){
245
+ if (this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)) {
246
246
  return;
247
247
  }
248
248
  this.addRepalceMessageInArray(childSnapshot.key, msg);
@@ -254,12 +254,12 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
254
254
  const msg = this.messageGenerate(childSnapshot);
255
255
  // imposto il giorno del messaggio per visualizzare o nascondere l'header data
256
256
  // msg.attributes && msg.attributes['subtype'] === 'info'
257
- if(this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg) ){
257
+ if (this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)) {
258
258
  return;
259
259
  }
260
260
  this.addRepalceMessageInArray(childSnapshot.key, msg);
261
261
  this.messageChanged.next(msg);
262
-
262
+
263
263
  }
264
264
 
265
265
  /** */
@@ -274,7 +274,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
274
274
 
275
275
  /** */
276
276
  private messageGenerate(childSnapshot: any) {
277
- const msg: MessageModel = childSnapshot.val();
277
+ const msg: MessageModel = childSnapshot.val();
278
278
  msg.uid = childSnapshot.key;
279
279
  // controllo fatto per i gruppi da rifattorizzare
280
280
  if (!msg.sender_fullname || msg.sender_fullname === 'undefined') {
@@ -285,7 +285,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
285
285
  // msg.text = htmlEntities(msg.text)
286
286
  // msg.text = replaceEndOfLine(msg.text)
287
287
  // }
288
-
288
+
289
289
  // verifico che il sender è il logged user
290
290
  msg.isSender = this.isSender(msg.sender, this.loggedUser.uid);
291
291
  // traduco messaggi se sono del server
@@ -324,6 +324,8 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
324
324
  const INFO_SUPPORT_USER_ADDED_VERB = this.translationMap.get('INFO_SUPPORT_USER_ADDED_VERB');
325
325
  const INFO_SUPPORT_CHAT_REOPENED = this.translationMap.get('INFO_SUPPORT_CHAT_REOPENED');
326
326
  const INFO_SUPPORT_CHAT_CLOSED = this.translationMap.get('INFO_SUPPORT_CHAT_CLOSED');
327
+ const INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU = this.translationMap.get('INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU');
328
+
327
329
  if (message.attributes.messagelabel
328
330
  && message.attributes.messagelabel.parameters
329
331
  && message.attributes.messagelabel.key === MEMBER_JOINED_GROUP
@@ -355,6 +357,15 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
355
357
  } else if ((message.attributes.messagelabel && message.attributes.messagelabel.key === CHAT_CLOSED)) {
356
358
  message.text = INFO_SUPPORT_CHAT_CLOSED;
357
359
  }
360
+ // ['last_message_text']
361
+ else if ((message.attributes && message.attributes.messagelabel && message.attributes.messagelabel.key === TOUCHING_OPERATOR) && message.sender === "system") {
362
+ // console.log('FIREBASEConversationHandlerSERVICE message text', message.text)
363
+ const textAfterColon = message.text.split(":")[1]
364
+ // console.log('FIREBASEConversationHandlerSERVICE message text - textAfterColon', textAfterColon)
365
+ if (textAfterColon !== undefined) {
366
+ message.text = INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU + ': ' + textAfterColon;
367
+ }
368
+ }
358
369
  }
359
370
 
360
371
 
@@ -368,9 +379,9 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
368
379
  private setStatusMessage(msg: MessageModel, conversationWith: string) {
369
380
  if (msg.status < MSG_STATUS_RECEIVED) {
370
381
  if (msg.sender !== this.loggedUser.uid && msg.status < MSG_STATUS_RECEIVED) {
371
- const urlNodeMessagesUpdate = this.urlNodeFirebase + '/' + msg.uid;
372
- this.logger.debug('[FIREBASEConversationHandlerSERVICE] update message status', urlNodeMessagesUpdate);
373
- firebase.database().ref(urlNodeMessagesUpdate).update({ status: MSG_STATUS_RECEIVED });
382
+ const urlNodeMessagesUpdate = this.urlNodeFirebase + '/' + msg.uid;
383
+ this.logger.debug('[FIREBASEConversationHandlerSERVICE] update message status', urlNodeMessagesUpdate);
384
+ firebase.database().ref(urlNodeMessagesUpdate).update({ status: MSG_STATUS_RECEIVED });
374
385
  }
375
386
  }
376
387
  }
@@ -403,14 +414,14 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
403
414
  // }
404
415
 
405
416
 
406
- unsubscribe(key: string) {
407
- this.listSubsriptions.forEach(sub => {
408
- this.logger.debug('[FIREBASEConversationHandlerSERVICE] unsubscribe: ', sub.uid, key);
409
- if (sub.uid === key) {
410
- this.logger.debug('[FIREBASEConversationHandlerSERVICE] unsubscribe: ', sub.uid, key);
411
- sub.unsubscribe(key, null);
412
- return;
413
- }
414
- });
415
- }
417
+ unsubscribe(key: string) {
418
+ this.listSubsriptions.forEach(sub => {
419
+ this.logger.debug('[FIREBASEConversationHandlerSERVICE] unsubscribe: ', sub.uid, key);
420
+ if (sub.uid === key) {
421
+ this.logger.debug('[FIREBASEConversationHandlerSERVICE] unsubscribe: ', sub.uid, key);
422
+ sub.unsubscribe(key, null);
423
+ return;
424
+ }
425
+ });
426
+ }
416
427
  }
@@ -22,6 +22,7 @@ import { AppConfigProvider } from 'src/app/services/app-config';
22
22
  // utils
23
23
  import { avatarPlaceholder, getColorBck } from '../../utils/utils-user';
24
24
  import { compareValues, getFromNow, conversationsPathForUserId, searchIndexInArrayForUid, isGroup } from '../../utils/utils';
25
+ import { TOUCHING_OPERATOR } from '../../utils/constants';
25
26
  import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
26
27
 
27
28
 
@@ -476,6 +477,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
476
477
  conversation_with = conv.recipient;
477
478
  conversation_with_fullname = conv.recipient_fullname;
478
479
  conv.sender_fullname = this.translationMap.get('YOU')
480
+
479
481
  // conv.last_message_text = YOU + conv.last_message_text;
480
482
  // } else if (conv.channel_type === TYPE_GROUP) {
481
483
  } else if (isGroup(conv)) {
@@ -484,6 +486,12 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
484
486
  conversation_with = conv.recipient;
485
487
  conversation_with_fullname = conv.recipient_fullname;
486
488
  }
489
+ if (conv.attributes && conv.attributes.subtype) {
490
+ if (conv.attributes.subtype === 'info' || conv.attributes.subtype === 'info/support') {
491
+ this.translateInfoSupportMessages(conv);
492
+ }
493
+ }
494
+
487
495
  conv.conversation_with = conversation_with;
488
496
  conv.conversation_with_fullname = conversation_with_fullname;
489
497
  conv.status = this.setStatusConversation(conv.sender, conv.uid);
@@ -496,6 +504,21 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
496
504
  }
497
505
 
498
506
 
507
+ translateInfoSupportMessages(conv) {
508
+ const INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU = this.translationMap.get('INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU');
509
+ // console.log('[FIREBASEConversationsHandlerSERVICE] INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU', INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU)
510
+ if ((conv.attributes && conv.attributes.messagelabel && conv.attributes.messagelabel.key === TOUCHING_OPERATOR) && conv.sender === "system") {
511
+ // console.log('FIREBASEConversationsHandlerSERVICE last_message_text', conv.last_message_text)
512
+ const textAfterColon = conv.last_message_text.split(":")[1]
513
+ // console.log('FIREBASEConversationsHandlerSERVICE last_message_text - textAfterColon', textAfterColon)
514
+ // message.text = INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU + ' ' + textAfterColon;
515
+ if (textAfterColon !== undefined) {
516
+ conv.last_message_text = INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU + ': ' + textAfterColon;
517
+ }
518
+ }
519
+ }
520
+
521
+
499
522
 
500
523
  /** */
501
524
  private setStatusConversation(sender: string, uid: string): string {
@@ -82,7 +82,7 @@ export class MQTTArchivedConversationsHandler extends ArchivedConversationsHandl
82
82
  callback(conversation);
83
83
  } else {
84
84
  console.log('Not found locally, remote.getConversationDetail *****: ', conversation);
85
- this.chat21Service.chatClient.conversationDetail(conversationWith, (conversation) => {
85
+ this.chat21Service.chatClient.archivedConversationDetail(conversationWith, (err, conversation) => {
86
86
  if (conversation) {
87
87
  if (callback) {
88
88
  callback(this.completeConversation(conversation));
@@ -60,6 +60,8 @@ export const MESSAGE_TYPE_DATE = 'DATE';
60
60
  export const CHAT_REOPENED = 'CHAT_REOPENED';
61
61
  export const CHAT_CLOSED = 'CHAT_CLOSED';
62
62
  export const MEMBER_JOINED_GROUP = 'MEMBER_JOINED_GROUP';
63
+ export const TOUCHING_OPERATOR = "TOUCHING_OPERATOR"
64
+
63
65
 
64
66
  // URLS
65
67
  // export const URL_SOUND = 'assets/sounds/pling.mp3';
@@ -13,7 +13,7 @@ import { ConversationModel } from '../models/conversation';
13
13
  import { MAX_WIDTH_IMAGES, TYPE_DIRECT, TYPE_SUPPORT_GROUP } from './constants';
14
14
 
15
15
  import { avatarPlaceholder, getColorBck, getImageUrlThumbFromFirebasestorage } from './utils-user';
16
-
16
+ import { TooltipOptions } from 'ng2-tooltip-directive';
17
17
 
18
18
  /**
19
19
  * Shortest description for phone and tablet
@@ -31,6 +31,17 @@ export function windowsMatchMedia() {
31
31
  }
32
32
  }
33
33
 
34
+
35
+ export const DefaultTooltipOptions: TooltipOptions = {
36
+ 'show-delay': 500,
37
+ 'tooltip-class': 'chat-tooltip',
38
+ 'theme': 'light',
39
+ 'shadow': false,
40
+ 'hide-delay-mobile': 0,
41
+ 'hideDelayAfterClick': 3000,
42
+ 'hide-delay': 200
43
+ }
44
+
34
45
  /**
35
46
  * chiamata da ChatConversationsHandler
36
47
  * restituisce url '/conversations'
package/src/global.scss CHANGED
@@ -531,6 +531,10 @@ select:-webkit-autofill:focus {
531
531
  // border: 0px solid #000000;
532
532
  }
533
533
 
534
+ #canned > ion-list > ion-item > div > div.nocannedTitle {
535
+ color: #f44336
536
+ }
537
+
534
538
  .highlight-search-string {
535
539
  color: #1877f2 !important;
536
540
  }