@chat21/chat21-ionic 3.0.5-9.2 → 3.0.6-2.3
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 +202 -0
- package/LICENSE +661 -21
- package/README.md +13 -1
- package/angular.json +4 -0
- package/config.xml +4 -5
- package/deploy_pre.sh +44 -5
- package/deploy_prod.sh +36 -7
- package/env.sample +4 -2
- package/package.json +12 -8
- package/resources/{Android → android}/icon/drawable-hdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-ldpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-mdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xxhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon/drawable-xxxhdpi-icon.png +0 -0
- package/resources/{Android → android}/icon.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-hdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-ldpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-mdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-land-xxxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-hdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-ldpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-mdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash/drawable-port-xxxhdpi-screen.png +0 -0
- package/resources/{Android → android}/splash.png +0 -0
- package/src/app/app-routing.module.ts +15 -0
- package/src/app/app.component.html +14 -4
- package/src/app/app.component.scss +18 -1
- package/src/app/app.component.ts +98 -37
- package/src/app/app.module.ts +14 -5
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +36 -25
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +160 -50
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +108 -18
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +21 -36
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +19 -7
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +63 -42
- package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +1 -1
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +7 -2
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +141 -21
- package/src/app/chatlib/list-conversations-component/list-conversations/list-conversations.component.ts +13 -10
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +39 -36
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +7 -1
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +148 -63
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +101 -39
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +73 -2
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +168 -98
- package/src/app/components/ddp-header/ddp-header.component.html +20 -6
- package/src/app/components/ddp-header/ddp-header.component.scss +4 -0
- package/src/app/components/ddp-header/ddp-header.component.ts +104 -10
- package/src/app/components/image-viewer/image-viewer.component.scss +2 -2
- package/src/app/components/project-item/project-item.component.html +141 -118
- package/src/app/components/project-item/project-item.component.scss +173 -91
- package/src/app/components/project-item/project-item.component.ts +59 -25
- package/src/app/components/sidebar/sidebar.component.html +275 -0
- package/src/app/components/sidebar/sidebar.component.scss +79 -0
- package/src/app/components/sidebar/sidebar.component.spec.ts +24 -0
- package/src/app/components/sidebar/sidebar.component.ts +541 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +137 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +389 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.spec.ts +24 -0
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +530 -0
- package/src/app/pages/conversation-detail/conversation-detail.module.ts +9 -2
- package/src/app/pages/conversation-detail/conversation-detail.page.html +53 -49
- package/src/app/pages/conversation-detail/conversation-detail.page.scss +28 -0
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +1254 -753
- package/src/app/pages/conversations-list/conversations-list.module.ts +2 -1
- package/src/app/pages/conversations-list/conversations-list.page.html +24 -11
- package/src/app/pages/conversations-list/conversations-list.page.scss +20 -1
- package/src/app/pages/conversations-list/conversations-list.page.ts +687 -420
- package/src/app/pages/create-canned-response/create-canned-response-routing.module.ts +17 -0
- package/src/app/pages/create-canned-response/create-canned-response.module.ts +30 -0
- package/src/app/pages/create-canned-response/create-canned-response.page.html +150 -0
- package/src/app/pages/create-canned-response/create-canned-response.page.scss +55 -0
- package/src/app/pages/create-canned-response/create-canned-response.page.spec.ts +24 -0
- package/src/app/pages/create-canned-response/create-canned-response.page.ts +319 -0
- package/src/app/pages/create-requester/create-requester-routing.module.ts +17 -0
- package/src/app/pages/create-requester/create-requester.module.ts +28 -0
- package/src/app/pages/create-requester/create-requester.page.html +67 -0
- package/src/app/pages/create-requester/create-requester.page.scss +30 -0
- package/src/app/pages/create-requester/create-requester.page.spec.ts +24 -0
- package/src/app/pages/create-requester/create-requester.page.ts +138 -0
- package/src/app/pages/create-ticket/create-ticket-routing.module.ts +17 -0
- package/src/app/pages/create-ticket/create-ticket.module.ts +28 -0
- package/src/app/pages/create-ticket/create-ticket.page.html +171 -0
- package/src/app/pages/create-ticket/create-ticket.page.scss +52 -0
- package/src/app/pages/create-ticket/create-ticket.page.spec.ts +24 -0
- package/src/app/pages/create-ticket/create-ticket.page.ts +432 -0
- package/src/app/pages/loader-preview/loader-preview.page.ts +226 -166
- package/src/app/pages/profile-info/profile-info.page.html +4 -4
- package/src/app/pages/profile-info/profile-info.page.scss +13 -2
- package/src/app/pages/profile-info/profile-info.page.ts +23 -21
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +16 -11
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +157 -63
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +51 -16
- package/src/app/services/app-config.ts +14 -14
- package/src/app/services/tiledesk/tiledesk.service.ts +209 -0
- package/src/app/shared/shared.module.ts +21 -7
- package/src/app/utils/scrollbar-theme.directive.ts +58 -24
- package/src/assets/i18n/de.json +266 -0
- package/src/assets/i18n/en.json +85 -10
- package/src/assets/i18n/es.json +266 -0
- package/src/assets/i18n/fr.json +266 -0
- package/src/assets/i18n/it.json +104 -37
- package/src/assets/i18n/pt.json +266 -0
- package/src/assets/i18n/ru.json +266 -0
- package/src/assets/i18n/sr.json +266 -0
- package/src/assets/i18n/tr.json +266 -0
- package/src/assets/images/default-avatar-x-select.png +0 -0
- package/src/assets/images/language_flag/ar.png +0 -0
- package/src/assets/images/language_flag/bg.png +0 -0
- package/src/assets/images/language_flag/ca.png +0 -0
- package/src/assets/images/language_flag/cs.png +0 -0
- package/src/assets/images/language_flag/da.png +0 -0
- package/src/assets/images/language_flag/de.png +0 -0
- package/src/assets/images/language_flag/el.png +0 -0
- package/src/assets/images/language_flag/en.png +0 -0
- package/src/assets/images/language_flag/es.png +0 -0
- package/src/assets/images/language_flag/fa.png +0 -0
- package/src/assets/images/language_flag/fi.png +0 -0
- package/src/assets/images/language_flag/fr.png +0 -0
- package/src/assets/images/language_flag/he.png +0 -0
- package/src/assets/images/language_flag/hi.png +0 -0
- package/src/assets/images/language_flag/hr.png +0 -0
- package/src/assets/images/language_flag/hu.png +0 -0
- package/src/assets/images/language_flag/id.png +0 -0
- package/src/assets/images/language_flag/it.png +0 -0
- package/src/assets/images/language_flag/ja.png +0 -0
- package/src/assets/images/language_flag/ko.png +0 -0
- package/src/assets/images/language_flag/ml-IN.png +0 -0
- package/src/assets/images/language_flag/ne-NP.png +0 -0
- package/src/assets/images/language_flag/nl.png +0 -0
- package/src/assets/images/language_flag/no.png +0 -0
- package/src/assets/images/language_flag/pl.png +0 -0
- package/src/assets/images/language_flag/pt-BR.png +0 -0
- package/src/assets/images/language_flag/pt.png +0 -0
- package/src/assets/images/language_flag/ro.png +0 -0
- package/src/assets/images/language_flag/ru.png +0 -0
- package/src/assets/images/language_flag/sk.png +0 -0
- package/src/assets/images/language_flag/sl.png +0 -0
- package/src/assets/images/language_flag/sr.png +0 -0
- package/src/assets/images/language_flag/sv-SE.png +0 -0
- package/src/assets/images/language_flag/ta.png +0 -0
- package/src/assets/images/language_flag/th.png +0 -0
- package/src/assets/images/language_flag/tr.png +0 -0
- package/src/assets/images/language_flag/uk.png +0 -0
- package/src/assets/images/language_flag/vi.png +0 -0
- package/src/assets/images/language_flag/zh-CN.png +0 -0
- package/src/assets/images/language_flag/zh-TW.png +0 -0
- package/src/assets/images/no_image_user.png +0 -0
- package/src/assets/images/priority_icons/high.svg +3 -0
- package/src/assets/images/priority_icons/high_v2.svg +14 -0
- package/src/assets/images/priority_icons/low.svg +10 -0
- package/src/assets/images/priority_icons/low_v2.svg +14 -0
- package/src/assets/images/priority_icons/medium.svg +16 -0
- package/src/assets/images/priority_icons/medium_v2.svg +11 -0
- package/src/assets/images/priority_icons/urgent.svg +4 -0
- package/src/assets/images/priority_icons/urgent_v2.svg +16 -0
- package/src/assets/js/chat21client.js +16 -3
- package/src/assets/tiledesk-solo-logo.png +0 -0
- package/src/chat-config-mqtt.json +27 -17
- package/src/chat-config-pre-test.json +5 -1
- package/src/chat-config-pre.json +15 -3
- package/src/chat-config-template.json +6 -2
- package/src/chat-config.json +5 -1
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +61 -45
- package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +23 -0
- package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -1
- package/src/chat21-core/utils/constants.ts +8 -1
- package/src/chat21-core/utils/utils-message.ts +19 -0
- package/src/chat21-core/utils/utils.ts +12 -1
- package/src/global.scss +408 -2
- package/src/index.html +7 -0
- package/publish_pre.sh +0 -33
- package/publish_prod.sh +0 -33
package/src/chat-config-pre.json
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
+
"t2y12PruGU9wUtEGzBJfolMIgK": "CAR:T-PAY:T-ANA:T-ACT:T-APP:T",
|
|
2
3
|
"chatEngine": "firebase",
|
|
4
|
+
"uploadEngine": "firebase",
|
|
5
|
+
"pushEngine": "firebase",
|
|
6
|
+
"logLevel": "info",
|
|
7
|
+
"fileUploadAccept":"*/*",
|
|
8
|
+
"authPersistence": "LOCAL",
|
|
9
|
+
"supportMode": true,
|
|
10
|
+
"writeToButton": true,
|
|
11
|
+
"archivedButton": true,
|
|
3
12
|
"firebaseConfig": {
|
|
13
|
+
"tenant": "tilechat",
|
|
4
14
|
"apiKey": "AIzaSyCoWXHNvP1-qOllCpTshhC6VjPXeRTK0T4",
|
|
5
15
|
"authDomain": "chat21-pre-01.firebaseapp.com",
|
|
6
16
|
"databaseURL": "https://chat21-pre-01.firebaseio.com",
|
|
@@ -8,16 +18,18 @@
|
|
|
8
18
|
"storageBucket": "chat21-pre-01.appspot.com",
|
|
9
19
|
"messagingSenderId": "269505353043",
|
|
10
20
|
"appId": "1:269505353043:web:b82af070572669e3707da6",
|
|
11
|
-
"chat21ApiUrl": "https://us-central1-chat21-pre-01.cloudfunctions.net"
|
|
21
|
+
"chat21ApiUrl": "https://us-central1-chat21-pre-01.cloudfunctions.net",
|
|
22
|
+
"vapidKey": "BOsgS2ADwspKdWAmiFDZXEYqY1HSYADVfJT3j67wsySh3NxaViJqoabPJH8WM02wb5r8cQIm5TgM0UK047Z1D1c"
|
|
12
23
|
},
|
|
13
24
|
"chat21Config": {
|
|
14
25
|
"appId": "tilechat",
|
|
15
|
-
"MQTTendpoint": "
|
|
26
|
+
"MQTTendpoint": "ws://99.80.197.164:15675/ws",
|
|
16
27
|
"APIendpoint": "http://99.80.197.164:8004/api",
|
|
17
28
|
"loginServiceEndpoint": "http://99.80.197.164:/tilechat/signin"
|
|
18
29
|
},
|
|
19
30
|
"apiUrl": "https://tiledesk-server-pre.herokuapp.com/",
|
|
20
31
|
"baseImageUrl": "https://firebasestorage.googleapis.com/v0/b/",
|
|
21
|
-
"dashboardUrl": "
|
|
32
|
+
"dashboardUrl": "/dashboard/",
|
|
33
|
+
"wsUrl": "wss://tiledesk-server-pre.herokuapp.com/"
|
|
22
34
|
}
|
|
23
35
|
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
+
"t2y12PruGU9wUtEGzBJfolMIgK": "${FEATURES_TOKEN}",
|
|
2
3
|
"chatEngine": "${CHAT21_ENGINE}",
|
|
3
4
|
"uploadEngine": "${UPLOAD_ENGINE}",
|
|
4
5
|
"pushEngine":"${PUSH_ENGINE}",
|
|
5
6
|
"fileUploadAccept":"${FILE_UPLOAD_ACCEPT}",
|
|
6
7
|
"logLevel":"${LOG_LEVEL}",
|
|
8
|
+
"authPersistence": "${AUTH_PERSISTENCE}",
|
|
9
|
+
"supportMode": "${SUPPORT_MODE}",
|
|
10
|
+
"writeToButton": "${WRITE_TO_BUTTON}",
|
|
11
|
+
"archivedButton": "${ARCHIVED_BUTTON}",
|
|
7
12
|
"firebaseConfig": {
|
|
8
13
|
"tenant":"${FIREBASE_TENANT}",
|
|
9
14
|
"apiKey": "${FIREBASE_APIKEY}",
|
|
@@ -25,6 +30,5 @@
|
|
|
25
30
|
"baseImageUrl": "${API_BASEIMAGE_URL}",
|
|
26
31
|
"dashboardUrl": "${DASHBOARD_URL}",
|
|
27
32
|
"wsUrl": "${WS_URL}",
|
|
28
|
-
"wsUrlRel": "${WS_URL_RELATIVE}"
|
|
29
|
-
"supportMode": "${SUPPORT_MODE}"
|
|
33
|
+
"wsUrlRel": "${WS_URL_RELATIVE}"
|
|
30
34
|
}
|
package/src/chat-config.json
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
+
"t2y12PruGU9wUtEGzBJfolMIgK":"${FEATURES_TOKEN}",
|
|
2
3
|
"chatEngine": "mqtt",
|
|
3
4
|
"updloaEngine": "native",
|
|
4
5
|
"pushEngine":"none",
|
|
5
6
|
"fileUploadAccept":"*/*",
|
|
6
7
|
"logLevel": "Info",
|
|
8
|
+
"authPersistence": "LOCAL",
|
|
7
9
|
"firebaseConfig": {
|
|
8
10
|
"tenant":"tilechat",
|
|
9
11
|
"apiKey": "CHANGEIT",
|
|
@@ -26,5 +28,7 @@
|
|
|
26
28
|
"dashboardUrl": "https://support-pre.tiledesk.com/dashboard/",
|
|
27
29
|
"wsUrl": "ws://localhost:3000/",
|
|
28
30
|
"wsUrlRel": "${WS_URL_RELATIVE}",
|
|
29
|
-
"supportMode": false
|
|
31
|
+
"supportMode": false,
|
|
32
|
+
"writeToButton": false,
|
|
33
|
+
"archivedButton": false
|
|
30
34
|
}
|
|
@@ -18,11 +18,11 @@ 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
|
-
import { messageType } from 'src/chat21-core/utils/utils-message';
|
|
25
|
+
import { messageType, isEmojii } from 'src/chat21-core/utils/utils-message';
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
|
|
@@ -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;
|
|
@@ -156,23 +156,24 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
156
156
|
typeMsg,
|
|
157
157
|
attributes,
|
|
158
158
|
channelType,
|
|
159
|
-
false
|
|
159
|
+
false,
|
|
160
|
+
isEmojii(msg)
|
|
160
161
|
);
|
|
161
162
|
const messageRef = firebaseMessagesCustomUid.push({
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
163
|
+
language: lang,
|
|
164
|
+
recipient: conversationWith,
|
|
165
|
+
recipient_fullname: recipientFullname,
|
|
166
|
+
sender: sender,
|
|
167
|
+
sender_fullname: senderFullname,
|
|
168
|
+
status: 0,
|
|
169
|
+
metadata: metadataMsg,
|
|
170
|
+
text: msg,
|
|
171
|
+
timestamp: firebase.database.ServerValue.TIMESTAMP,
|
|
172
|
+
type: typeMsg,
|
|
173
|
+
attributes: attributes,
|
|
174
|
+
channel_type: channelType
|
|
175
|
+
// isSender: true
|
|
176
|
+
});
|
|
176
177
|
|
|
177
178
|
// const message = new MessageModel(
|
|
178
179
|
// key,
|
|
@@ -190,9 +191,9 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
190
191
|
// channelType, // channel_type
|
|
191
192
|
// true // is_sender
|
|
192
193
|
// );
|
|
193
|
-
this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> messages: ',
|
|
194
|
-
this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> senderFullname: ',
|
|
195
|
-
this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> sender: ',
|
|
194
|
+
this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> messages: ', this.messages);
|
|
195
|
+
this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> senderFullname: ', senderFullname);
|
|
196
|
+
this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> sender: ', sender);
|
|
196
197
|
this.logger.debug('[FIREBASEConversationHandlerSERVICE] sendMessage --> SEND MESSAGE: ', msg, channelType);
|
|
197
198
|
return message
|
|
198
199
|
}
|
|
@@ -213,7 +214,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
213
214
|
// const attributes: any = {
|
|
214
215
|
// client: this.CLIENT_BROWSER,
|
|
215
216
|
// sourcePage: location.href,
|
|
216
|
-
|
|
217
|
+
|
|
217
218
|
// };
|
|
218
219
|
|
|
219
220
|
// if(this.loggedUser && this.loggedUser.email ){
|
|
@@ -222,7 +223,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
222
223
|
// if(this.loggedUser && this.loggedUser.fullname) {
|
|
223
224
|
// attributes.userFullname = this.loggedUser.fullname
|
|
224
225
|
// }
|
|
225
|
-
|
|
226
|
+
|
|
226
227
|
|
|
227
228
|
// // let attributes: any = JSON.parse(sessionStorage.getItem('attributes'));
|
|
228
229
|
// // if (!attributes || attributes === 'undefined') {
|
|
@@ -242,7 +243,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
242
243
|
private added(childSnapshot: any) {
|
|
243
244
|
const msg = this.messageGenerate(childSnapshot);
|
|
244
245
|
// msg.attributes && msg.attributes['subtype'] === 'info'
|
|
245
|
-
if(this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)){
|
|
246
|
+
if (this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)) {
|
|
246
247
|
return;
|
|
247
248
|
}
|
|
248
249
|
this.addRepalceMessageInArray(childSnapshot.key, msg);
|
|
@@ -254,12 +255,12 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
254
255
|
const msg = this.messageGenerate(childSnapshot);
|
|
255
256
|
// imposto il giorno del messaggio per visualizzare o nascondere l'header data
|
|
256
257
|
// msg.attributes && msg.attributes['subtype'] === 'info'
|
|
257
|
-
if(this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)
|
|
258
|
+
if (this.skipMessage && messageType(MESSAGE_TYPE_INFO, msg)) {
|
|
258
259
|
return;
|
|
259
260
|
}
|
|
260
261
|
this.addRepalceMessageInArray(childSnapshot.key, msg);
|
|
261
262
|
this.messageChanged.next(msg);
|
|
262
|
-
|
|
263
|
+
|
|
263
264
|
}
|
|
264
265
|
|
|
265
266
|
/** */
|
|
@@ -274,7 +275,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
274
275
|
|
|
275
276
|
/** */
|
|
276
277
|
private messageGenerate(childSnapshot: any) {
|
|
277
|
-
const msg: MessageModel = childSnapshot.val();
|
|
278
|
+
const msg: MessageModel = childSnapshot.val();
|
|
278
279
|
msg.uid = childSnapshot.key;
|
|
279
280
|
// controllo fatto per i gruppi da rifattorizzare
|
|
280
281
|
if (!msg.sender_fullname || msg.sender_fullname === 'undefined') {
|
|
@@ -285,9 +286,13 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
285
286
|
// msg.text = htmlEntities(msg.text)
|
|
286
287
|
// msg.text = replaceEndOfLine(msg.text)
|
|
287
288
|
// }
|
|
288
|
-
|
|
289
|
+
|
|
289
290
|
// verifico che il sender è il logged user
|
|
290
291
|
msg.isSender = this.isSender(msg.sender, this.loggedUser.uid);
|
|
292
|
+
|
|
293
|
+
//check if message contains only an emojii
|
|
294
|
+
msg.emoticon = isEmojii(msg.text)
|
|
295
|
+
|
|
291
296
|
// traduco messaggi se sono del server
|
|
292
297
|
if (msg.attributes && msg.attributes.subtype) {
|
|
293
298
|
if (msg.attributes.subtype === 'info' || msg.attributes.subtype === 'info/support') {
|
|
@@ -324,6 +329,8 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
324
329
|
const INFO_SUPPORT_USER_ADDED_VERB = this.translationMap.get('INFO_SUPPORT_USER_ADDED_VERB');
|
|
325
330
|
const INFO_SUPPORT_CHAT_REOPENED = this.translationMap.get('INFO_SUPPORT_CHAT_REOPENED');
|
|
326
331
|
const INFO_SUPPORT_CHAT_CLOSED = this.translationMap.get('INFO_SUPPORT_CHAT_CLOSED');
|
|
332
|
+
const INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU = this.translationMap.get('INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU');
|
|
333
|
+
|
|
327
334
|
if (message.attributes.messagelabel
|
|
328
335
|
&& message.attributes.messagelabel.parameters
|
|
329
336
|
&& message.attributes.messagelabel.key === MEMBER_JOINED_GROUP
|
|
@@ -355,6 +362,15 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
355
362
|
} else if ((message.attributes.messagelabel && message.attributes.messagelabel.key === CHAT_CLOSED)) {
|
|
356
363
|
message.text = INFO_SUPPORT_CHAT_CLOSED;
|
|
357
364
|
}
|
|
365
|
+
// ['last_message_text']
|
|
366
|
+
else if ((message.attributes && message.attributes.messagelabel && message.attributes.messagelabel.key === TOUCHING_OPERATOR) && message.sender === "system") {
|
|
367
|
+
// console.log('FIREBASEConversationHandlerSERVICE message text', message.text)
|
|
368
|
+
const textAfterColon = message.text.split(":")[1]
|
|
369
|
+
// console.log('FIREBASEConversationHandlerSERVICE message text - textAfterColon', textAfterColon)
|
|
370
|
+
if (textAfterColon !== undefined) {
|
|
371
|
+
message.text = INFO_A_NEW_SUPPORT_REQUEST_HAS_BEEN_ASSIGNED_TO_YOU + ': ' + textAfterColon;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
358
374
|
}
|
|
359
375
|
|
|
360
376
|
|
|
@@ -368,9 +384,9 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
368
384
|
private setStatusMessage(msg: MessageModel, conversationWith: string) {
|
|
369
385
|
if (msg.status < MSG_STATUS_RECEIVED) {
|
|
370
386
|
if (msg.sender !== this.loggedUser.uid && msg.status < MSG_STATUS_RECEIVED) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
387
|
+
const urlNodeMessagesUpdate = this.urlNodeFirebase + '/' + msg.uid;
|
|
388
|
+
this.logger.debug('[FIREBASEConversationHandlerSERVICE] update message status', urlNodeMessagesUpdate);
|
|
389
|
+
firebase.database().ref(urlNodeMessagesUpdate).update({ status: MSG_STATUS_RECEIVED });
|
|
374
390
|
}
|
|
375
391
|
}
|
|
376
392
|
}
|
|
@@ -403,14 +419,14 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
|
403
419
|
// }
|
|
404
420
|
|
|
405
421
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
422
|
+
unsubscribe(key: string) {
|
|
423
|
+
this.listSubsriptions.forEach(sub => {
|
|
424
|
+
this.logger.debug('[FIREBASEConversationHandlerSERVICE] unsubscribe: ', sub.uid, key);
|
|
425
|
+
if (sub.uid === key) {
|
|
426
|
+
this.logger.debug('[FIREBASEConversationHandlerSERVICE] unsubscribe: ', sub.uid, key);
|
|
427
|
+
sub.unsubscribe(key, null);
|
|
428
|
+
return;
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
}
|
|
416
432
|
}
|
|
@@ -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.
|
|
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';
|
|
@@ -106,4 +108,9 @@ export const LogLevel = {
|
|
|
106
108
|
'WARN': 1,
|
|
107
109
|
'INFO': 2,
|
|
108
110
|
'DEBUG': 3
|
|
109
|
-
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export const tranlatedLanguage = ['it', 'en', 'de', 'es', 'pt', 'fr', 'ru', 'tr', 'sr']
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
@@ -85,6 +85,25 @@ export function messageType(msgType: string, message: any) {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
export function isEmojii(message: any){
|
|
89
|
+
if (message.length > 2) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
let fistChar = '';
|
|
93
|
+
try {
|
|
94
|
+
fistChar = message.trim(); // .charAt(0);
|
|
95
|
+
} catch (e) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const ranges = ['(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\ude3a]|[\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])'];
|
|
100
|
+
if (fistChar.match(ranges.join('|'))) {
|
|
101
|
+
return true;
|
|
102
|
+
} else {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
88
107
|
/** */
|
|
89
108
|
export function getSizeImg(message: any, maxWidthImage?: number): any {
|
|
90
109
|
try {
|
|
@@ -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'
|