@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 +5 -0
- package/package.json +1 -1
- package/src/chat21-core/models/message.ts +0 -1
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +85 -16
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +13 -15
- package/src/chat21-core/utils/constants.ts +0 -1
- package/src/chat21-core/utils/utils-message.ts +1 -7
- package/src/chat21-core/utils/utils.ts +3 -0
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
|
@@ -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
|
-
|
|
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 (
|
|
302
|
-
|
|
303
|
-
this.translateInfoSupportMessages(msg);
|
|
304
|
-
}
|
|
321
|
+
if (messageType(MESSAGE_TYPE_INFO, msg)) {
|
|
322
|
+
this.translateInfoSupportMessages(msg);
|
|
305
323
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
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
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
305
|
-
|
|
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
|
-
|
|
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');
|