@chat21/chat21-ionic 3.0.67 → 3.0.68-rc.2
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 +9 -0
- package/deploy_amazon_prod.sh +7 -3
- package/package.json +1 -1
- package/src/app/app.component.ts +34 -17
- package/src/app/app.module.ts +4 -4
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +8 -0
- package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.ts +0 -2
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +1 -3
- package/src/app/components/conversation-info/info-content/info-content.component.ts +22 -25
- package/src/app/components/project-item/project-item.component.ts +26 -49
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +47 -78
- package/src/app/pages/conversations-list/conversations-list.page.ts +23 -30
- package/src/app/pages/create-canned-response/create-canned-response.page.ts +22 -29
- package/src/app/services/websocket/websocket.service.ts +1 -1
- package/src/assets/i18n/ar.json +1 -1
- package/src/assets/i18n/az.json +266 -0
- package/src/assets/i18n/de.json +1 -1
- package/src/assets/i18n/en.json +1 -1
- package/src/assets/i18n/es.json +1 -1
- package/src/assets/i18n/fr.json +1 -1
- package/src/assets/i18n/it.json +1 -1
- package/src/assets/i18n/kk.json +266 -0
- package/src/assets/i18n/pt.json +1 -1
- package/src/assets/i18n/ru.json +1 -1
- package/src/assets/i18n/sr.json +1 -1
- package/src/assets/i18n/sv.json +266 -0
- package/src/assets/i18n/tr.json +1 -1
- package/src/assets/i18n/uk.json +1 -1
- package/src/assets/i18n/uz.json +267 -0
- package/src/assets/images/language_flag/az.png +0 -0
- package/src/assets/images/language_flag/kk.png +0 -0
- package/src/assets/images/language_flag/{sv-SE.png → sv.png} +0 -0
- package/src/assets/images/language_flag/uz.png +0 -0
- package/src/chat-config-mqtt-localhost.json +10 -3
- package/src/chat-config-pre.json +2 -1
- package/src/chat21-core/providers/abstract/conversations-handler.service.ts +2 -0
- package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +0 -2
- package/src/chat21-core/providers/firebase/firebase-auth-service.ts +0 -5
- package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +45 -5
- package/src/chat21-core/providers/firebase/firebase-image-repo.ts +2 -1
- package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +71 -268
- package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +23 -26
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +3 -24
- package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +14 -47
- package/src/chat21-core/providers/mqtt/mqtt-groups-handler.ts +6 -10
- package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +88 -93
- package/src/chat21-core/providers/native/native-image-repo.ts +9 -2
- package/src/chat21-core/providers/native/native-upload-service.ts +1 -2
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -1
- package/src/chat21-core/utils/constants.ts +1 -1
- package/src/chat21-core/utils/utils-message.ts +1 -1
- package/deploy_pre.sh +0 -44
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# chat21-ionic ver 3.0
|
|
2
2
|
|
|
3
|
+
### 3.0.68-rc2
|
|
4
|
+
- bug-fixed: removed lookup API call for old requests
|
|
5
|
+
|
|
6
|
+
### 3.0.68-rc1
|
|
7
|
+
- bug-fixed: not sound if conversation.is_new changed from true to false in conversationChange BS
|
|
8
|
+
- changed: if message contains only 1 emoji remove bubble message background and increase font-size
|
|
9
|
+
- added: new languages az, sv, kk, uz
|
|
10
|
+
- removed: control in info-content component for old project id with 32 characters
|
|
11
|
+
|
|
3
12
|
### 3.0.67 in PROD
|
|
4
13
|
- added: control to 'foregroundCount' when tab is hidden/visible
|
|
5
14
|
- added: sound control on/off to new conversations and conversations changed
|
package/deploy_amazon_prod.sh
CHANGED
|
@@ -7,18 +7,22 @@ echo 'URL_VER: ---->'$URL_VER
|
|
|
7
7
|
|
|
8
8
|
# sed -i -e "s/$start$ver.$build/$start$NEW_VER.$NEW_BUILD/g" src/utils/constants.ts
|
|
9
9
|
sed -i -e "s/$URL_VER/g" src/utils/constants.ts
|
|
10
|
+
|
|
11
|
+
|
|
10
12
|
ionic cordova platform add browser --save
|
|
11
13
|
#ionic cordova build --env=prod browser -- --base-href /www/ --prod
|
|
12
14
|
ionic cordova build --env=prod browser --prod
|
|
15
|
+
|
|
13
16
|
cp -p src/firebase-messaging-sw.js platforms/browser/www/
|
|
14
17
|
cp -p src/manifest.json platforms/browser/www/
|
|
15
18
|
cp -p src/chat-config.json platforms/browser/www/
|
|
16
19
|
|
|
17
20
|
cd platforms/browser/www
|
|
18
|
-
aws s3 sync . s3://tiledesk-console/v2/chat/
|
|
19
|
-
aws s3 sync . s3://tiledesk-console/v2/chat/$version/
|
|
20
|
-
|
|
21
|
+
# aws s3 sync . s3://tiledesk-console/v2/chat/
|
|
22
|
+
# aws s3 sync . s3://tiledesk-console/v2/chat/$version/
|
|
23
|
+
aws s3 sync . s3://tiledesk-console/v2/chat/latest/
|
|
21
24
|
cd ../../../
|
|
25
|
+
|
|
22
26
|
# aws cloudfront create-invalidation --distribution-id E36UIP90GOSFPM --paths "/*"
|
|
23
27
|
|
|
24
28
|
# echo new version deployed on s3://tiledesk-dashboard/chat/$NEW_BUILD/
|
package/package.json
CHANGED
package/src/app/app.component.ts
CHANGED
|
@@ -562,15 +562,13 @@ export class AppComponent implements OnInit {
|
|
|
562
562
|
chat_lang = stored_preferred_lang
|
|
563
563
|
}
|
|
564
564
|
|
|
565
|
-
this.logger.log('[APP-COMP] - chat_lang', chat_lang)
|
|
566
|
-
|
|
567
565
|
if (tranlatedLanguage.includes(chat_lang)) {
|
|
568
566
|
this.logger.log('[APP-COMP] tranlatedLanguage includes', chat_lang, ': ', tranlatedLanguage.includes(chat_lang))
|
|
569
567
|
this.translate.setDefaultLang(chat_lang)
|
|
570
568
|
this.translate.use(chat_lang);
|
|
571
569
|
}
|
|
572
570
|
else {
|
|
573
|
-
this.logger.log('[APP-COMP] tranlatedLanguage includes', chat_lang, ': ', tranlatedLanguage.includes(chat_lang))
|
|
571
|
+
this.logger.log('[APP-COMP] tranlatedLanguage not includes', chat_lang, ': ', tranlatedLanguage.includes(chat_lang))
|
|
574
572
|
this.translate.setDefaultLang('en');
|
|
575
573
|
this.translate.use('en');
|
|
576
574
|
}
|
|
@@ -836,14 +834,16 @@ export class AppComponent implements OnInit {
|
|
|
836
834
|
const sound_status = localStorage.getItem('dshbrd----sound')
|
|
837
835
|
if(sound_status && sound_status !== 'undefined'){
|
|
838
836
|
this.isSoundEnabled = sound_status === 'enabled'? true: false
|
|
837
|
+
}else{
|
|
838
|
+
this.isSoundEnabled = true
|
|
839
839
|
}
|
|
840
840
|
|
|
841
841
|
}
|
|
842
842
|
|
|
843
|
-
private manageTabNotification() {
|
|
843
|
+
private manageTabNotification(badgeNotificationCount?: number) {
|
|
844
844
|
if (!this.isTabVisible) {
|
|
845
845
|
// TAB IS HIDDEN --> manage title and SOUND
|
|
846
|
-
let badgeNewConverstionNumber = this.conversationsHandlerService.countIsNew()
|
|
846
|
+
let badgeNewConverstionNumber = badgeNotificationCount? badgeNotificationCount : this.conversationsHandlerService.countIsNew()
|
|
847
847
|
badgeNewConverstionNumber > 0 ? badgeNewConverstionNumber : badgeNewConverstionNumber = 1
|
|
848
848
|
document.title = "(" + badgeNewConverstionNumber + ") " + this.tabTitle
|
|
849
849
|
|
|
@@ -863,13 +863,12 @@ export class AppComponent implements OnInit {
|
|
|
863
863
|
if(sound_status && sound_status !== 'undefined'){
|
|
864
864
|
this.isSoundEnabled = sound_status === 'enabled'? true: false
|
|
865
865
|
}
|
|
866
|
-
|
|
867
866
|
if(this.isInitialized && this.isSoundEnabled) this.soundMessage()
|
|
868
867
|
}
|
|
869
868
|
|
|
870
869
|
soundMessage() {
|
|
871
870
|
const that = this;
|
|
872
|
-
this.logger.debug('[APP-COMP] conversation play', this.audio);
|
|
871
|
+
// this.logger.debug('[APP-COMP] conversation play', this.audio);
|
|
873
872
|
// clearTimeout(this.setTimeoutSound);
|
|
874
873
|
// this.setTimeoutSound = setTimeout(function () {
|
|
875
874
|
// that.audio.play().then(() => {
|
|
@@ -878,7 +877,7 @@ export class AppComponent implements OnInit {
|
|
|
878
877
|
// that.logger.error('[APP-COMP] ***soundMessage error*', error);
|
|
879
878
|
// });
|
|
880
879
|
// }, 4000);
|
|
881
|
-
|
|
880
|
+
|
|
882
881
|
//play sound every 4s from the fist time you receive a conversation added/changed
|
|
883
882
|
if(!this.hasPlayed){
|
|
884
883
|
that.audio.play().then(() => {
|
|
@@ -938,11 +937,10 @@ export class AppComponent implements OnInit {
|
|
|
938
937
|
|
|
939
938
|
this.events.subscribe('uidConvSelected:changed', this.subscribeChangedConversationSelected);
|
|
940
939
|
this.events.subscribe('profileInfoButtonClick:logout', this.subscribeProfileInfoButtonLogOut);
|
|
941
|
-
|
|
940
|
+
this.events.subscribe('unservedRequest:count', this.subscribeUnservedRequestCount)
|
|
942
941
|
|
|
943
942
|
this.conversationsHandlerService.conversationAdded.subscribe((conversation: ConversationModel) => {
|
|
944
|
-
this.logger.log('[APP-COMP] *****
|
|
945
|
-
// that.conversationsChanged(conversations);
|
|
943
|
+
// this.logger.log('[APP-COMP] ***** subscribeConversationAdded *****', conversation);
|
|
946
944
|
if (conversation && conversation.is_new === true) {
|
|
947
945
|
this.manageTabNotification()
|
|
948
946
|
}
|
|
@@ -953,17 +951,23 @@ export class AppComponent implements OnInit {
|
|
|
953
951
|
// console.log('[APP-COMP] ***** subscribeConversationChanged conversation: ', conversation);
|
|
954
952
|
if(conversation) this.updateConversationsOnStorage();
|
|
955
953
|
const currentUser = this.tiledeskAuthService.getCurrentUser()
|
|
954
|
+
});
|
|
955
|
+
|
|
956
|
+
this.conversationsHandlerService.conversationChangedDetailed.subscribe((changes: {value: ConversationModel, previousValue: ConversationModel}) => {
|
|
957
|
+
// console.log('[APP-COMP] ***** subscribeConversationChangedDetailed conversation: ', changes);
|
|
958
|
+
const currentUser = this.tiledeskAuthService.getCurrentUser()
|
|
956
959
|
if (currentUser && currentUser !== null) {
|
|
957
|
-
this.logger.log('[APP-COMP] *****
|
|
958
|
-
if (
|
|
959
|
-
|
|
960
|
+
this.logger.log('[APP-COMP] ***** subscribeConversationChangedDetailed currentUser: ', currentUser);
|
|
961
|
+
if (changes.value && changes.value.sender !== currentUser.uid) {
|
|
962
|
+
if(changes.value.is_new === changes.previousValue.is_new){
|
|
963
|
+
this.manageTabNotification();
|
|
964
|
+
}
|
|
960
965
|
}
|
|
961
966
|
}
|
|
962
967
|
});
|
|
963
968
|
|
|
964
969
|
this.conversationsHandlerService.conversationRemoved.subscribe((conversation: ConversationModel) => {
|
|
965
970
|
this.logger.log('[APP-COMP] ***** conversationRemoved *****', conversation);
|
|
966
|
-
// that.conversationsChanged(conversations);
|
|
967
971
|
if(conversation) this.updateConversationsOnStorage();
|
|
968
972
|
});
|
|
969
973
|
}
|
|
@@ -1037,7 +1041,8 @@ export class AppComponent implements OnInit {
|
|
|
1037
1041
|
this.chatManager.goOffLine();
|
|
1038
1042
|
|
|
1039
1043
|
this.router.navigateByUrl('conversation-detail/'); //redirect to basePage
|
|
1040
|
-
|
|
1044
|
+
// this.goToDashboardLogin()
|
|
1045
|
+
|
|
1041
1046
|
// clearTimeout(this.timeModalLogin);
|
|
1042
1047
|
// this.timeModalLogin = setTimeout(() => {
|
|
1043
1048
|
if (!this.hadBeenCalledOpenModal) {
|
|
@@ -1051,6 +1056,12 @@ export class AppComponent implements OnInit {
|
|
|
1051
1056
|
|
|
1052
1057
|
}
|
|
1053
1058
|
|
|
1059
|
+
goToDashboardLogin(){
|
|
1060
|
+
let DASHBOARD_URL = this.appConfigProvider.getConfig().dashboardUrl + '/index.html'
|
|
1061
|
+
const myWindow = window.open(DASHBOARD_URL, '_self');
|
|
1062
|
+
myWindow.focus();
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1054
1065
|
|
|
1055
1066
|
webSocketClose() {
|
|
1056
1067
|
this.logger.log('[APP-COMP] - GO-OFFLINE - webSocketClose');
|
|
@@ -1131,6 +1142,12 @@ export class AppComponent implements OnInit {
|
|
|
1131
1142
|
}
|
|
1132
1143
|
}
|
|
1133
1144
|
|
|
1145
|
+
subscribeUnservedRequestCount = (unservedRequestCount) => {
|
|
1146
|
+
if(unservedRequestCount && unservedRequestCount > 0){
|
|
1147
|
+
this.manageTabNotification(unservedRequestCount) //sound and alternate title
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1134
1151
|
private async presentModal(calledby): Promise<any> {
|
|
1135
1152
|
this.logger.log('[APP-COMP] presentModal calledby', calledby, '- hadBeenCalledOpenModal: ', this.hadBeenCalledOpenModal);
|
|
1136
1153
|
const attributes = { tenant: this.tenant, enableBackdropDismiss: false };
|
|
@@ -1240,7 +1257,7 @@ export class AppComponent implements OnInit {
|
|
|
1240
1257
|
|
|
1241
1258
|
@HostListener('document:visibilitychange', [])
|
|
1242
1259
|
visibilitychange() {
|
|
1243
|
-
this.logger.debug("document TITLE", document.hidden, document.title);
|
|
1260
|
+
// this.logger.debug("document TITLE", document.hidden, document.title);
|
|
1244
1261
|
if (document.hidden) {
|
|
1245
1262
|
this.isTabVisible = false
|
|
1246
1263
|
} else {
|
package/src/app/app.module.ts
CHANGED
|
@@ -200,15 +200,15 @@ export function presenceFactory(appConfig: AppConfigProvider) {
|
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
export function imageRepoFactory(appConfig: AppConfigProvider) {
|
|
203
|
+
export function imageRepoFactory(appConfig: AppConfigProvider, http: HttpClient) {
|
|
204
204
|
|
|
205
205
|
const config = appConfig.getConfig()
|
|
206
206
|
if (config.uploadEngine === UPLOAD_ENGINE_NATIVE) {
|
|
207
|
-
const imageService = new NativeImageRepoService()
|
|
207
|
+
const imageService = new NativeImageRepoService(http)
|
|
208
208
|
imageService.setImageBaseUrl(config.baseImageUrl)
|
|
209
209
|
return imageService
|
|
210
210
|
} else {
|
|
211
|
-
const imageService = new FirebaseImageRepoService();
|
|
211
|
+
const imageService = new FirebaseImageRepoService(http);
|
|
212
212
|
FirebaseInitService.initFirebase(config.firebaseConfig)
|
|
213
213
|
imageService.setImageBaseUrl(config.baseImageUrl)
|
|
214
214
|
return imageService
|
|
@@ -345,7 +345,7 @@ const appInitializerFn = (appConfig: AppConfigProvider, logger: NGXLogger) => {
|
|
|
345
345
|
{
|
|
346
346
|
provide: ImageRepoService,
|
|
347
347
|
useFactory: imageRepoFactory,
|
|
348
|
-
deps: [AppConfigProvider]
|
|
348
|
+
deps: [AppConfigProvider, HttpClient]
|
|
349
349
|
},
|
|
350
350
|
{
|
|
351
351
|
provide: ConversationHandlerBuilderService,
|
|
@@ -22,13 +22,11 @@ export class InfoMessageComponent implements OnInit, OnChanges {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
ngOnChanges() {
|
|
25
|
-
this.logger.debug('[INFO-COMP] message ', this.message)
|
|
26
25
|
// Fixes the bug: if a snippet of code is pasted and sent it is not displayed correctly info message
|
|
27
26
|
if(this.message && this.message.text) {
|
|
28
27
|
var regex = /<br\s*[\/]?>/gi;
|
|
29
28
|
this.message.text = this.message.text.replace(regex, "\n")
|
|
30
29
|
// this.message.text = replaceEndOfLine(this.message.text);
|
|
31
|
-
this.logger.debug('[INFO-COMP] message .text ', this.message.text )
|
|
32
30
|
}
|
|
33
31
|
}
|
|
34
32
|
|
|
@@ -88,7 +88,6 @@ export class IonListConversationsComponent extends ListConversationsComponent im
|
|
|
88
88
|
// }
|
|
89
89
|
|
|
90
90
|
this.currentYear = moment().format('YYYY');
|
|
91
|
-
this.logger.log('[ION-LIST-CONVS-COMP] - currentYear ', this.currentYear)
|
|
92
91
|
|
|
93
92
|
const DASHBOARD_BASE_URL = this.appConfigProvider.getConfig().dashboardUrl;
|
|
94
93
|
|
|
@@ -99,8 +98,7 @@ export class IonListConversationsComponent extends ListConversationsComponent im
|
|
|
99
98
|
}
|
|
100
99
|
ngOnInit() {
|
|
101
100
|
this.isApp = this.platform.is('ios') || this.platform.is('android')
|
|
102
|
-
this.logger.log('[ION-LIST-CONVS-COMP] - ngOnInit - IS-APP ', this.isApp)
|
|
103
|
-
this.logger.log('[ION-LIST-CONVS-COMP] - ngOnInit - Platform', this.platform.platforms());
|
|
101
|
+
this.logger.log('[ION-LIST-CONVS-COMP] - ngOnInit - IS-APP ', this.isApp);
|
|
104
102
|
|
|
105
103
|
}
|
|
106
104
|
|
|
@@ -91,24 +91,21 @@ export class InfoContentComponent implements OnInit {
|
|
|
91
91
|
const lastArrayElement = conversationWith_segments[conversationWith_segments.length - 1]
|
|
92
92
|
this.logger.log('[INFO-CONTENT-COMP] - paramMap.subscribe lastArrayElement ', lastArrayElement);
|
|
93
93
|
this.logger.log('[INFO-CONTENT-COMP] - paramMap.subscribe lastArrayElement length', lastArrayElement.length);
|
|
94
|
-
if (lastArrayElement.length !== 32) {
|
|
95
|
-
|
|
96
|
-
}
|
|
94
|
+
// if (lastArrayElement.length !== 32) {
|
|
95
|
+
// conversationWith_segments.pop();
|
|
96
|
+
// }
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
this.logger.log('[INFO-CONTENT-COMP] - paramMap.subscribe conversationWith_segments: ', conversationWith_segments);
|
|
101
101
|
|
|
102
102
|
if (this.conversationWith.startsWith("support-group")) {
|
|
103
|
-
if (conversationWith_segments.length === 4) {
|
|
103
|
+
// if (conversationWith_segments.length === 4) {
|
|
104
104
|
this.project_id = conversationWith_segments[2];
|
|
105
|
-
|
|
106
105
|
this.selectInfoContentTypeInfoSupportGroup();
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
this.getProjectIdByConversationWith(this.conversationWith)
|
|
111
|
-
}
|
|
106
|
+
// } else {
|
|
107
|
+
// this.getProjectIdByConversationWith(this.conversationWith)
|
|
108
|
+
// }
|
|
112
109
|
} else {
|
|
113
110
|
this.selectInfoContentTypeDirectAndGroup(this.conversationWith);
|
|
114
111
|
}
|
|
@@ -118,25 +115,25 @@ export class InfoContentComponent implements OnInit {
|
|
|
118
115
|
|
|
119
116
|
}
|
|
120
117
|
|
|
121
|
-
getProjectIdByConversationWith(conversationWith: string) {
|
|
122
|
-
|
|
118
|
+
// getProjectIdByConversationWith(conversationWith: string) {
|
|
119
|
+
// const tiledeskToken = this.tiledeskAuthService.getTiledeskToken();
|
|
123
120
|
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
// this.tiledeskService.getProjectIdByConvRecipient(tiledeskToken, conversationWith).subscribe(res => {
|
|
122
|
+
// this.logger.log('[INFO-CONTENT-COMP] - GET PROJECTID BY CONV RECIPIENT RES', res);
|
|
126
123
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
124
|
+
// if (res) {
|
|
125
|
+
// this.project_id = res.id_project
|
|
126
|
+
// this.logger.log('[INFO-CONTENT-COMP] - GET PROJECTID BY CONV RECIPIENT this.project_id', this.project_id);
|
|
127
|
+
// }
|
|
131
128
|
|
|
132
|
-
|
|
133
|
-
|
|
129
|
+
// }, (error) => {
|
|
130
|
+
// this.logger.error('[INFO-CONTENT-COMP] - GET PROJECTID BY CONV RECIPIENT - ERROR ', error);
|
|
134
131
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
132
|
+
// }, () => {
|
|
133
|
+
// this.logger.log('[INFO-CONTENT-COMP] - GET PROJECTID BY CONV RECIPIENT * COMPLETE *');
|
|
134
|
+
// this.selectInfoContentTypeInfoSupportGroup();
|
|
135
|
+
// });
|
|
136
|
+
// }
|
|
140
137
|
|
|
141
138
|
ngOnInit() {
|
|
142
139
|
this.logger.log('>>> N INFO-CONTENT-COMP CALLING ngOnInit');
|
|
@@ -2,7 +2,7 @@ import { EventsService } from './../../services/events-service';
|
|
|
2
2
|
import { Component, EventEmitter, HostListener, OnInit, Output } from '@angular/core';
|
|
3
3
|
import { WebsocketService } from 'src/app/services/websocket/websocket.service';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
|
-
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { takeUntil, skip } from 'rxjs/operators';
|
|
6
6
|
import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
|
|
7
7
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
8
8
|
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
@@ -66,6 +66,13 @@ export class ProjectItemComponent implements OnInit {
|
|
|
66
66
|
this.isOnMobileDevice();
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
ngOnDestroy() {
|
|
70
|
+
this.logger.log('[PROJECT-ITEM] > ngOnDestroy')
|
|
71
|
+
this.unsubscribe$.next()
|
|
72
|
+
this.unsubscribe$.complete()
|
|
73
|
+
|
|
74
|
+
}
|
|
75
|
+
|
|
69
76
|
isOnMobileDevice() {
|
|
70
77
|
this.IS_ON_MOBILE_DEVICE = false;
|
|
71
78
|
if (/Android|iPhone/i.test(window.navigator.userAgent)) {
|
|
@@ -237,18 +244,13 @@ export class ProjectItemComponent implements OnInit {
|
|
|
237
244
|
this.listenTocurrentProjectUserUserAvailability$(project)
|
|
238
245
|
|
|
239
246
|
this.wsService.subscriptionToWsConversations(project.id_project._id)
|
|
240
|
-
// this.updateCurrentUserRequestCount();
|
|
241
247
|
this.updateUnservedRequestCount();
|
|
242
248
|
|
|
243
249
|
}
|
|
244
250
|
}
|
|
245
251
|
|
|
246
252
|
listenTocurrentProjectUserUserAvailability$(project) {
|
|
247
|
-
this.wsService.currentProjectUserAvailability$
|
|
248
|
-
.pipe(
|
|
249
|
-
takeUntil(this.unsubscribe$)
|
|
250
|
-
)
|
|
251
|
-
.subscribe((projectUser) => {
|
|
253
|
+
this.wsService.currentProjectUserAvailability$.pipe(takeUntil(this.unsubscribe$)).subscribe((projectUser) => {
|
|
252
254
|
this.logger.log('[PROJECT-ITEM] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS RES ', projectUser);
|
|
253
255
|
|
|
254
256
|
if (project.id_project._id === projectUser['id_project']) {
|
|
@@ -300,24 +302,24 @@ export class ProjectItemComponent implements OnInit {
|
|
|
300
302
|
|
|
301
303
|
updateUnservedRequestCount() {
|
|
302
304
|
|
|
303
|
-
this.wsService.wsRequestsList$
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
if (r['
|
|
309
|
-
|
|
310
|
-
count = count + 1;
|
|
311
|
-
}
|
|
305
|
+
this.wsService.wsRequestsList$.pipe(takeUntil(this.unsubscribe$)).pipe(skip(1)).subscribe((requests) => {
|
|
306
|
+
if (requests) {
|
|
307
|
+
let count = 0;
|
|
308
|
+
requests.forEach(r => {
|
|
309
|
+
if (r['status'] === 100) {
|
|
310
|
+
if (this.hasmeInAgents(r['agents']) === true) {
|
|
311
|
+
count = count + 1;
|
|
312
312
|
}
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
this.unservedRequestCount = count;
|
|
316
|
+
this.events.publish('unservedRequest:count', this.unservedRequestCount)
|
|
317
|
+
}
|
|
318
|
+
}, error => {
|
|
319
|
+
this.logger.error('[PROJECT-ITEM] UNSERVED REQUEST COUNT * error * ', error)
|
|
320
|
+
}, () => {
|
|
321
|
+
this.logger.log('[PROJECT-ITEM] UNSERVED REQUEST COUNT */* COMPLETE */*')
|
|
322
|
+
})
|
|
321
323
|
}
|
|
322
324
|
|
|
323
325
|
hasmeInAgents(agents) {
|
|
@@ -332,31 +334,6 @@ export class ProjectItemComponent implements OnInit {
|
|
|
332
334
|
}
|
|
333
335
|
}
|
|
334
336
|
|
|
335
|
-
updateCurrentUserRequestCount() {
|
|
336
|
-
this.wsService.wsRequestsList$
|
|
337
|
-
.pipe(
|
|
338
|
-
takeUntil(this.unsubscribe$)
|
|
339
|
-
)
|
|
340
|
-
.subscribe((requests) => {
|
|
341
|
-
if (requests) {
|
|
342
|
-
let count = 0;
|
|
343
|
-
requests.forEach(r => {
|
|
344
|
-
const participantsArray = r['participants'] // new used with ws
|
|
345
|
-
|
|
346
|
-
const currentUserIsInParticipants = participantsArray.includes(this.currentUserId); // new used with ws
|
|
347
|
-
if (currentUserIsInParticipants === true) {
|
|
348
|
-
count = count + 1;
|
|
349
|
-
}
|
|
350
|
-
});
|
|
351
|
-
this.currentUserRequestCount = count;
|
|
352
|
-
this.logger.log('[PROJECT-ITEM] CURRENT USER REQUEST COUNT - RES', this.currentUserRequestCount);
|
|
353
|
-
}
|
|
354
|
-
}, error => {
|
|
355
|
-
this.logger.error('[PROJECT-ITEM] CURRENT USER REQUEST COUNT * error * ', error)
|
|
356
|
-
}, () => {
|
|
357
|
-
this.logger.log('[PROJECT-ITEM] CURRENT USER REQUEST COUNT */* COMPLETE */*')
|
|
358
|
-
})
|
|
359
|
-
}
|
|
360
337
|
|
|
361
338
|
|
|
362
339
|
|
|
@@ -259,7 +259,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
259
259
|
listenToDsbrdPostMsgs() {
|
|
260
260
|
|
|
261
261
|
window.addEventListener("message", (event) => {
|
|
262
|
-
this.logger.log("[CONVS-DETAIL] message event ", event);
|
|
262
|
+
// this.logger.log("[CONVS-DETAIL] message event ", event);
|
|
263
263
|
|
|
264
264
|
// const chat21InfoConversationEle = <HTMLElement>document.querySelector('#chat21-info-conversation');
|
|
265
265
|
// console.log('[CONVS-DETAIL] HAS CLICKED ENLARGE SIDEBAR WIDE chat21InfoConversationEle ', chat21InfoConversationEle)
|
|
@@ -531,55 +531,33 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
531
531
|
_getProjectIdByConversationWith(conversationWith: string) {
|
|
532
532
|
const tiledeskToken = this.tiledeskAuthService.getTiledeskToken()
|
|
533
533
|
|
|
534
|
-
this.tiledeskService
|
|
535
|
-
.
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
(error) => {
|
|
546
|
-
this.logger.error('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT - ERROR ', error)
|
|
547
|
-
},
|
|
548
|
-
() => {
|
|
549
|
-
this.logger.log(
|
|
550
|
-
'[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT * COMPLETE *',
|
|
551
|
-
)
|
|
552
|
-
},
|
|
553
|
-
)
|
|
534
|
+
this.tiledeskService.getProjectIdByConvRecipient(tiledeskToken, conversationWith).subscribe((res) => {
|
|
535
|
+
this.logger.log('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT RES + projectId', res, res.id_project)
|
|
536
|
+
if (res) {
|
|
537
|
+
const projectId = res.id_project
|
|
538
|
+
this.getProjectById(tiledeskToken, projectId)
|
|
539
|
+
}
|
|
540
|
+
},(error) => {
|
|
541
|
+
this.logger.error('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT - ERROR ', error)
|
|
542
|
+
},() => {
|
|
543
|
+
this.logger.log('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT * COMPLETE *',)
|
|
544
|
+
})
|
|
554
545
|
}
|
|
555
546
|
|
|
556
547
|
getProjectById(tiledeskToken, projectId) {
|
|
557
|
-
this.tiledeskService.getProjectById(tiledeskToken, projectId).subscribe(
|
|
558
|
-
(res)
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
(
|
|
569
|
-
|
|
570
|
-
'[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT - ERROR ',
|
|
571
|
-
error,
|
|
572
|
-
)
|
|
573
|
-
if ((error.error.msg = 'you dont belong to the project.')) {
|
|
574
|
-
this.disableTextarea = true
|
|
575
|
-
}
|
|
576
|
-
},
|
|
577
|
-
() => {
|
|
578
|
-
this.logger.log(
|
|
579
|
-
'[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT * COMPLETE *',
|
|
580
|
-
)
|
|
581
|
-
},
|
|
582
|
-
)
|
|
548
|
+
this.tiledeskService.getProjectById(tiledeskToken, projectId).subscribe((res) => {
|
|
549
|
+
this.logger.log('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT RES', res)
|
|
550
|
+
if (res) {
|
|
551
|
+
const projectId = res.id_project
|
|
552
|
+
}
|
|
553
|
+
},(error) => {
|
|
554
|
+
this.logger.error('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT - ERROR ',error)
|
|
555
|
+
if ((error.error.msg = 'you dont belong to the project.')) {
|
|
556
|
+
this.disableTextarea = true
|
|
557
|
+
}
|
|
558
|
+
},() => {
|
|
559
|
+
this.logger.log('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT * COMPLETE *')
|
|
560
|
+
})
|
|
583
561
|
}
|
|
584
562
|
|
|
585
563
|
returnOpenCloseInfoConversation(openInfoConversation: boolean) {
|
|
@@ -1251,45 +1229,36 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
1251
1229
|
conversationWith_segments.pop()
|
|
1252
1230
|
}
|
|
1253
1231
|
|
|
1254
|
-
if (conversationWith_segments.length === 4) {
|
|
1255
|
-
const lastArrayElement = conversationWith_segments[conversationWith_segments.length - 1]
|
|
1256
|
-
this.logger.log('[CONVS-DETAIL] - lastArrayElement ', lastArrayElement)
|
|
1257
|
-
this.logger.log('[CONVS-DETAIL] - lastArrayElement length', lastArrayElement.length)
|
|
1258
|
-
if (lastArrayElement.length !== 32) {
|
|
1259
|
-
conversationWith_segments.pop()
|
|
1260
|
-
}
|
|
1261
|
-
}
|
|
1262
|
-
|
|
1263
1232
|
this.logger.log('[CONVS-DETAIL] - loadTagsCanned conversationWith_segments ', conversationWith_segments)
|
|
1264
1233
|
let projectId = ''
|
|
1265
1234
|
|
|
1266
|
-
if (conversationWith_segments.length === 4) {
|
|
1235
|
+
// if (conversationWith_segments.length === 4) {
|
|
1267
1236
|
projectId = conversationWith_segments[2]
|
|
1268
1237
|
this.logger.log('[CONVS-DETAIL] - loadTagsCanned projectId ', projectId)
|
|
1269
1238
|
this.getAndShowCannedResponses(strSearch, projectId)
|
|
1270
|
-
} else {
|
|
1271
|
-
this.getProjectIdByConversationWith(strSearch, this.conversationWith)
|
|
1272
|
-
}
|
|
1239
|
+
// } else {
|
|
1240
|
+
// this.getProjectIdByConversationWith(strSearch, this.conversationWith)
|
|
1241
|
+
// }
|
|
1273
1242
|
}
|
|
1274
1243
|
|
|
1275
|
-
getProjectIdByConversationWith(strSearch, conversationWith: string) {
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
}
|
|
1244
|
+
// getProjectIdByConversationWith(strSearch, conversationWith: string) {
|
|
1245
|
+
// const tiledeskToken = this.tiledeskAuthService.getTiledeskToken()
|
|
1246
|
+
|
|
1247
|
+
// this.tiledeskService.getProjectIdByConvRecipient(tiledeskToken, conversationWith).subscribe((res) => {
|
|
1248
|
+
// this.logger.log('[CONVS-DETAIL] - loadTagsCanned - GET PROJECTID BY CONV RECIPIENT RES', res)
|
|
1249
|
+
// if (res) {
|
|
1250
|
+
// const projectId = res.id_project
|
|
1251
|
+
// this.logger.log('[CONVS-DETAIL] - loadTagsCanned - GET PROJECTID BY CONV RECIPIENT projectId ', projectId)
|
|
1252
|
+
// if (projectId) {
|
|
1253
|
+
// this.getAndShowCannedResponses(strSearch, projectId)
|
|
1254
|
+
// }
|
|
1255
|
+
// }
|
|
1256
|
+
// }, (error) => {
|
|
1257
|
+
// this.logger.error('[CONVS-DETAIL] - loadTagsCanned - GET PROJECTID BY CONV RECIPIENT - ERROR ', error)
|
|
1258
|
+
// }, () => {
|
|
1259
|
+
// this.logger.log('[CONVS-DETAIL] - loadTagsCanned - GET PROJECTID BY CONV RECIPIENT * COMPLETE *')
|
|
1260
|
+
// })
|
|
1261
|
+
// }
|
|
1293
1262
|
|
|
1294
1263
|
getAndShowCannedResponses(strSearch, projectId) {
|
|
1295
1264
|
const tiledeskToken = this.tiledeskAuthService.getTiledeskToken()
|