@chat21/chat21-ionic 3.0.90-rc.3 → 3.0.90-rc.4

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # chat21-ionic ver 3.0
2
2
 
3
+ ### 3.0.90-rc.4
4
+ - added: splitMessage in MQTTConversationHandler service
5
+ - changed: aligned FirebaseConversationHandler service to widget
6
+ - removed: MESSAGE_TYPE_DATE
7
+
3
8
  ### 3.0.90-rc.3
4
9
  - added: options menu and popover on click to show copy, canned and Json response options
5
10
  - changed: icon-button moved outside bubble-message only for the first message of each sender
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
3
  "author": "Tiledesk SRL",
4
- "version": "3.0.90-rc.3",
4
+ "version": "3.0.90-rc.4",
5
5
  "license": "MIT License",
6
6
  "homepage": "https://tiledesk.com/",
7
7
  "repository": {
@@ -10,7 +10,6 @@ export class MessageModel {
10
10
  public metadata: any,
11
11
  public text: string,
12
12
  public timestamp: any,
13
- //public headerDate: string,
14
13
  public type: string,
15
14
  public attributes: any,
16
15
  public channel_type: string,
@@ -99,7 +99,10 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
99
99
  this.ref = firebaseMessages.orderByChild('timestamp').limitToLast(100);
100
100
  this.ref.on('child_added', (childSnapshot) => {
101
101
  that.logger.debug('[FIREBASEConversationHandlerSERVICE] >>>>>>>>>>>>>> child_added: ', childSnapshot.val())
102
- that.added(childSnapshot);
102
+ const msg: MessageModel = childSnapshot.val();
103
+ msg.uid = childSnapshot.key;
104
+
105
+ that.addedNew(msg);
103
106
  });
104
107
  this.ref.on('child_changed', (childSnapshot) => {
105
108
  that.logger.debug('[FIREBASEConversationHandlerSERVICE] >>>>>>>>>>>>>> child_changed: ', childSnapshot.val())
@@ -253,6 +256,23 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
253
256
  this.messageAdded.next(msg);
254
257
  }
255
258
 
259
+ private addedNew(message:MessageModel){
260
+ const msg = this.messageCommandGenerate(message);
261
+ if(this.isValidMessage(msg)){
262
+ if (this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)) {
263
+ return;
264
+ }
265
+ if(!this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)) {
266
+ this.messageInfo.next(msg)
267
+ }
268
+ this.addRepalceMessageInArray(msg.uid, msg);
269
+ this.messageAdded.next(msg);
270
+ } else {
271
+ this.logger.error('[FIREBASEConversationHandlerSERVICE] ADDED::message with uid: ', msg.uid, 'is not valid')
272
+ }
273
+
274
+ }
275
+
256
276
  /** */
257
277
  private changed(childSnapshot: any) {
258
278
  const msg = this.messageGenerate(childSnapshot);
@@ -298,16 +318,34 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
298
318
  // msg.emoticon = isEmojii(msg.text)
299
319
 
300
320
  // traduco messaggi se sono del server
301
- if (msg.attributes && msg.attributes.subtype) {
302
- if (msg.attributes.subtype === 'info' || msg.attributes.subtype === 'info/support') {
303
- this.translateInfoSupportMessages(msg);
304
- }
321
+ if (messageType(MESSAGE_TYPE_INFO, msg)) {
322
+ this.translateInfoSupportMessages(msg);
305
323
  }
306
- /// commented because NOW ATTRIBUTES COMES FROM OUTSIDE
307
- // if (msg.attributes && msg.attributes.projectId) {
308
- // this.attributes.projectId = msg.attributes.projectId;
309
- // // sessionStorage.setItem('attributes', JSON.stringify(attributes));
324
+ return msg;
325
+ }
326
+
327
+ private messageCommandGenerate(message:MessageModel){
328
+ const msg: MessageModel = message;
329
+ if(msg.text) msg.text = msg.text.trim(); //remove black msg with only spaces
330
+ // controllo fatto per i gruppi da rifattorizzare
331
+ if (!msg.sender_fullname || msg.sender_fullname === 'undefined') {
332
+ msg.sender_fullname = msg.sender;
333
+ }
334
+ // bonifico messaggio da url
335
+ // if (msg.type === 'text') {
336
+ // msg.text = htmlEntities(msg.text)
337
+ // msg.text = replaceEndOfLine(msg.text)
310
338
  // }
339
+
340
+ // verifico che il sender è il logged user
341
+ msg.isSender = this.isSender(msg.sender, this.loggedUser.uid);
342
+ //check if message contains only an emojii
343
+ // msg.emoticon = isEmojii(msg.text)
344
+
345
+ // traduco messaggi se sono del server
346
+ if (messageType(MESSAGE_TYPE_INFO, msg)) {
347
+ this.translateInfoSupportMessages(msg);
348
+ }
311
349
  return msg;
312
350
  }
313
351
 
@@ -377,13 +415,13 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
377
415
  } else if ((message.attributes.messagelabel && message.attributes.messagelabel.key === LEAD_UPDATED)) {
378
416
  message.text = INFO_SUPPORT_LEAD_UPDATED;
379
417
  } else if ((message.attributes.messagelabel && message.attributes.messagelabel.key === MEMBER_LEFT_GROUP)) {
380
- let subject: string;
381
- if (message.attributes.messagelabel.parameters.fullname) {
382
- subject = message.attributes.messagelabel.parameters.fullname;
383
- }else{
384
- subject = message.attributes.messagelabel.parameters.member_id;
385
- }
386
- message.text = subject + ' ' + INFO_SUPPORT_MEMBER_LEFT_GROUP ;
418
+ let subject: string;
419
+ if (message.attributes.messagelabel.parameters.fullname) {
420
+ subject = message.attributes.messagelabel.parameters.fullname;
421
+ }else{
422
+ subject = message.attributes.messagelabel.parameters.member_id;
423
+ }
424
+ message.text = subject + ' ' + INFO_SUPPORT_MEMBER_LEFT_GROUP ;
387
425
  }
388
426
  }
389
427
 
@@ -443,4 +481,35 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
443
481
  }
444
482
  });
445
483
  }
484
+
485
+ private isValidMessage(msgToCkeck:MessageModel): boolean{
486
+ // console.log('message to check-->', msgToCkeck)
487
+ // if(!this.isValidField(msgToCkeck.uid)){
488
+ // return false;
489
+ // }
490
+ // if(!this.isValidField(msgToCkeck.sender)){
491
+ // return false;
492
+ // }
493
+ // if(!this.isValidField(msgToCkeck.recipient)){
494
+ // return false;
495
+ // }
496
+ // if(!this.isValidField(msgToCkeck.type)){
497
+ // return false;
498
+ // }else if (msgToCkeck.type === "text" && !this.isValidField(msgToCkeck.text)){
499
+ // return false;
500
+ // } else if ((msgToCkeck.type === "image" || msgToCkeck.type === "file") && !this.isValidField(msgToCkeck.metadata) && !this.isValidField(msgToCkeck.metadata.src)){
501
+ // return false
502
+ // }
503
+
504
+
505
+ return true
506
+ }
507
+
508
+ /**
509
+ *
510
+ * @param field
511
+ */
512
+ private isValidField(field: any): boolean {
513
+ return (field === null || field === undefined) ? false : true;
514
+ }
446
515
  }
@@ -99,7 +99,10 @@ export class MQTTConversationHandler extends ConversationHandlerService {
99
99
  }
100
100
  this.chat21Service.chatClient.lastMessages(this.conversationWith, (err, messages) => {
101
101
  if (!err) {
102
- messages.forEach(msg => {
102
+ messages.forEach(message => {
103
+ const msg: MessageModel = message;
104
+ msg.uid = message.message_id;
105
+
103
106
  this.addedMessage(msg);
104
107
  });
105
108
  }
@@ -107,7 +110,10 @@ export class MQTTConversationHandler extends ConversationHandlerService {
107
110
  const handler_message_added = this.chat21Service.chatClient.onMessageAddedInConversation(
108
111
  this.conversationWith, (message, topic) => {
109
112
  this.logger.log('[MQTTConversationHandler] message added:', message, 'on topic:', topic);
110
- this.addedMessage(message);
113
+ const msg: MessageModel = message;
114
+ msg.uid = message.message_id;
115
+
116
+ this.addedMessage(msg);
111
117
  });
112
118
  const handler_message_updated = this.chat21Service.chatClient.onMessageUpdatedInConversation(
113
119
  this.conversationWith, (message, topic) => {
@@ -231,20 +237,14 @@ export class MQTTConversationHandler extends ConversationHandlerService {
231
237
  /** */
232
238
  private addedMessage(messageSnapshot: any) {
233
239
  const msg = this.messageGenerate(messageSnapshot);
234
- msg.uid = msg.message_id;
240
+
235
241
  if(this.skipInfoMessage && messageType(MESSAGE_TYPE_INFO, msg)){
236
242
  return;
237
243
  }
238
244
  if(!this.skipInfoMessage && messageType(MESSAGE_TYPE_INFO, msg)){
239
245
  this.messageInfo.next(msg)
240
246
  }
241
- // imposto il giorno del messaggio per visualizzare o nascondere l'header data
242
- msg.headerDate = null;
243
- const headerDate = setHeaderDate(this.translationMap, msg.timestamp);
244
- if (headerDate !== this.lastDate) {
245
- this.lastDate = headerDate;
246
- msg.headerDate = headerDate;
247
- }
247
+
248
248
  this.logger.log('[MQTTConversationHandler] adding message:' + JSON.stringify(msg));
249
249
  // this.logger.log('childSnapshot.message_id:' + msg.message_id);
250
250
  // this.logger.log('childSnapshot.key:' + msg.key);
@@ -287,7 +287,7 @@ export class MQTTConversationHandler extends ConversationHandlerService {
287
287
  // const msg: MessageModel = childSnapshot.val();
288
288
  this.logger.log("[MQTTConversationHandler] childSnapshot >" + JSON.stringify(childSnapshot));
289
289
  const msg = childSnapshot;
290
- msg.uid = childSnapshot.key;
290
+ // msg.uid = childSnapshot.key;
291
291
  msg.text = msg.text.trim() //remove black msg with only spaces
292
292
  // controllo fatto per i gruppi da rifattorizzare
293
293
  if (!msg.sender_fullname || msg.sender_fullname === 'undefined') {
@@ -301,10 +301,8 @@ export class MQTTConversationHandler extends ConversationHandlerService {
301
301
  this.logger.log("[MQTTConversationHandler] ****>msg.sender:" + msg.sender);
302
302
  msg.isSender = this.isSender(msg.sender, this.loggedUser.uid);
303
303
  // traduco messaggi se sono del server
304
- if (msg.attributes && msg.attributes.subtype) {
305
- if (msg.attributes.subtype === 'info' || msg.attributes.subtype === 'info/support') {
306
- this.translateInfoSupportMessages(msg);
307
- }
304
+ if (messageType(MESSAGE_TYPE_INFO, msg)) {
305
+ this.translateInfoSupportMessages(msg);
308
306
  }
309
307
  return msg;
310
308
  }
@@ -61,7 +61,6 @@ export const TYPE_POPUP_DETAIL_MESSAGE = 'DETAIL_MESSAGE';
61
61
  export const MESSAGE_TYPE_INFO = 'INFO';
62
62
  export const MESSAGE_TYPE_MINE = 'MINE';
63
63
  export const MESSAGE_TYPE_OTHERS = 'OTHERS';
64
- export const MESSAGE_TYPE_DATE = 'DATE';
65
64
 
66
65
  export const CHAT_REOPENED = 'CHAT_REOPENED';
67
66
  export const CHAT_CLOSED = 'CHAT_CLOSED';
@@ -2,7 +2,6 @@ import {
2
2
  MESSAGE_TYPE_INFO,
3
3
  MESSAGE_TYPE_MINE,
4
4
  MESSAGE_TYPE_OTHERS,
5
- MESSAGE_TYPE_DATE,
6
5
  MAX_WIDTH_IMAGES,
7
6
  CHANNEL_TYPE_GROUP,
8
7
  TYPE_SUPPORT_GROUP
@@ -65,12 +64,7 @@ export function isMine(message: any) {
65
64
 
66
65
  /** */
67
66
  export function messageType(msgType: string, message: any) {
68
- if (msgType === MESSAGE_TYPE_DATE) {
69
- if (message.headerDate && message.headerDate !== '') {
70
- return true;
71
- }
72
- return false;
73
- }
67
+
74
68
  if (msgType === MESSAGE_TYPE_INFO) {
75
69
  return isInfo(message);
76
70
  }
@@ -187,6 +187,9 @@ export function setHeaderDate_old(translate, timestamp, lastDate?): string {
187
187
  }
188
188
  }
189
189
 
190
+ /**
191
+ * @deprecated
192
+ */
190
193
  export function setHeaderDate(translate, timestamp): string {
191
194
  // const LABEL_TODAY = translate.get('LABEL_TODAY');
192
195
  // const LABEL_TOMORROW = translate.get('LABEL_TOMORROW');