@chat21/chat21-ionic 3.4.30 → 3.4.32-rc1
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 +131 -2
- package/angular.json +1 -0
- package/package.json +1 -1
- package/src/app/app.component.html +3 -1
- package/src/app/app.component.ts +72 -13
- package/src/app/chatlib/conversation-detail/message/image/image.component.html +1 -0
- package/src/app/chatlib/conversation-detail/message/image/image.component.ts +19 -0
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +14 -2
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +39 -2
- package/src/app/chatlib/list-conversations-component/list-conversations.module.ts +14 -0
- package/src/app/components/canned-response/canned-response.component.html +26 -23
- package/src/app/components/canned-response/canned-response.component.scss +0 -2
- package/src/app/components/canned-response/canned-response.component.ts +3 -1
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +24 -1
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +30 -0
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +39 -9
- package/src/app/components/conversation-info/info-content/info-content.component.ts +2 -2
- package/src/app/components/conversation-info/info-group/info-group.component.ts +23 -21
- package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.html +1 -1
- package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.ts +5 -1
- package/src/app/components/navbar/navbar.component.html +35 -9
- package/src/app/components/navbar/navbar.component.scss +64 -0
- package/src/app/components/navbar/navbar.component.ts +100 -42
- package/src/app/components/project-item/project-item.component.ts +79 -51
- package/src/app/components/sidebar/sidebar.component.html +65 -45
- package/src/app/components/sidebar/sidebar.component.ts +110 -117
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +3 -3
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +15 -22
- package/src/app/directives/html-entities-encode.pipe.ts +20 -5
- package/src/app/modals/create-ticket/create-ticket.page.ts +4 -2
- package/src/app/pages/conversation-detail/conversation-detail.page.html +7 -3
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +95 -7
- package/src/app/pages/conversations-list/conversations-list.module.ts +3 -5
- package/src/app/pages/conversations-list/conversations-list.page.html +2 -0
- package/src/app/pages/conversations-list/conversations-list.page.ts +51 -11
- package/src/app/pages/unassigned-conversations/unassigned-conversations.module.ts +16 -4
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +41 -17
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +10 -1
- package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +114 -9
- package/src/app/services/global-settings/global-settings.service.ts +11 -3
- package/src/app/services/nav-proxy.service.ts +0 -1
- package/src/app/services/project_users/project-users.service.spec.ts +16 -0
- package/src/app/services/project_users/project-users.service.ts +63 -0
- package/src/app/services/projects/project.service.ts +2 -1
- package/src/app/services/tiledesk/tiledesk.service.ts +21 -16
- package/src/app/services/triggerEvents/triggerEvents.ts +28 -0
- package/src/app/services/websocket/websocket-js.ts +59 -534
- package/src/app/services/websocket/websocket-js_old.ts +578 -0
- package/src/app/services/websocket/websocket.service.ts +59 -10
- package/src/app/services/websocket/websocket.worker.ts +242 -0
- package/src/app/shared/shared.module.ts +11 -2
- package/src/app/utils/globals.ts +2 -0
- package/src/app/utils/permissions.constants.ts +138 -0
- package/src/app/utils/project-utils.ts +2 -2
- package/src/app/utils/utils.ts +18 -1
- package/src/assets/i18n/ar.json +11 -1
- package/src/assets/i18n/az.json +11 -1
- package/src/assets/i18n/de.json +11 -1
- package/src/assets/i18n/en.json +11 -1
- package/src/assets/i18n/es.json +11 -1
- package/src/assets/i18n/fr.json +11 -1
- package/src/assets/i18n/it.json +13 -3
- package/src/assets/i18n/kk.json +11 -1
- package/src/assets/i18n/pt.json +11 -1
- package/src/assets/i18n/ru.json +11 -1
- package/src/assets/i18n/sr.json +11 -1
- package/src/assets/i18n/sv.json +11 -1
- package/src/assets/i18n/tr.json +11 -1
- package/src/assets/i18n/uk.json +11 -1
- package/src/assets/i18n/uz.json +12 -1
- package/src/assets/img/no_data_found.png +0 -0
- package/src/assets/js/agentDesktop-sdk.js +55 -0
- package/src/assets/js/chat21client.js +36 -0
- package/src/assets/js/mqtt-keepalive-worker.js +53 -0
- package/src/assets/test.html +5 -2
- package/src/chat-config-template.json +1 -0
- package/src/chat-config.json +1 -0
- package/src/chat21-core/models/projectUsers.ts +19 -0
- package/src/chat21-core/models/project_user.ts +2 -1
- package/src/chat21-core/providers/abstract/upload.service.ts +5 -1
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
- package/src/chat21-core/providers/firebase/firebase-upload.service.ts +136 -9
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +1 -1
- package/src/chat21-core/providers/native/native-image-repo.ts +1 -1
- package/src/chat21-core/providers/native/native-upload-service.ts +143 -45
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +3 -0
- package/src/chat21-core/utils/constants.ts +5 -0
- package/src/chat21-core/utils/convertRequestToConversation.ts +1 -1
- package/src/chat21-core/utils/utils.ts +53 -3
- package/src/variables.scss +3 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input, OnInit, SecurityContext } from '@angular/core';
|
|
2
|
-
import { ModalController } from '@ionic/angular';
|
|
2
|
+
import { AlertController, ModalController } from '@ionic/angular';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
3
4
|
import { NavProxyService } from 'src/app/services/nav-proxy.service';
|
|
4
5
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
5
6
|
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
@@ -7,6 +8,9 @@ import { DomSanitizer } from '@angular/platform-browser'
|
|
|
7
8
|
import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service';
|
|
8
9
|
import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
|
|
9
10
|
import { EventsService } from 'src/app/services/events-service';
|
|
11
|
+
import { ConversationModel } from 'src/chat21-core/models/conversation';
|
|
12
|
+
import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
|
|
13
|
+
import { TiledeskService } from 'src/app/services/tiledesk/tiledesk.service';
|
|
10
14
|
|
|
11
15
|
|
|
12
16
|
@Component({
|
|
@@ -19,6 +23,14 @@ export class UnassignedConversationsPage implements OnInit {
|
|
|
19
23
|
@Input() iframe_URL: any;
|
|
20
24
|
@Input() callerBtn: string;
|
|
21
25
|
@Input() isMobile: boolean;
|
|
26
|
+
/** Lista conversazioni unassigned passata da project-item (calcolata da wsRequestsList) */
|
|
27
|
+
@Input() unassignedConversations: ConversationModel[] = [];
|
|
28
|
+
@Input() stylesMap: Map<string, string>;
|
|
29
|
+
@Input() translationMapConversation: Map<string, string>;
|
|
30
|
+
|
|
31
|
+
/** Array salvato localmente per uso nella page */
|
|
32
|
+
unassignedConversationsList: ConversationModel[] = [];
|
|
33
|
+
uidConvSelected: string;
|
|
22
34
|
// @Input() prjctsxpanel_url: any;
|
|
23
35
|
// @Input() unassigned_convs_url: any;
|
|
24
36
|
|
|
@@ -34,19 +46,32 @@ export class UnassignedConversationsPage implements OnInit {
|
|
|
34
46
|
constructor(
|
|
35
47
|
private modalController: ModalController,
|
|
36
48
|
private navService: NavProxyService,
|
|
49
|
+
private alertController: AlertController,
|
|
50
|
+
private router: Router,
|
|
37
51
|
private sanitizer: DomSanitizer,
|
|
38
52
|
private translateService: CustomTranslateService,
|
|
39
|
-
private events
|
|
53
|
+
private events: EventsService,
|
|
54
|
+
private tiledeskAuthService: TiledeskAuthService,
|
|
55
|
+
private tiledeskService: TiledeskService
|
|
40
56
|
) { }
|
|
41
57
|
|
|
42
58
|
ngOnInit() {
|
|
43
59
|
const keys = [
|
|
44
60
|
'UnassignedConversations',
|
|
45
61
|
'NewConversations',
|
|
46
|
-
'PIN_A_PROJECT'
|
|
62
|
+
'PIN_A_PROJECT',
|
|
63
|
+
'LABEL_MSG_PUSH_START_CHAT'
|
|
47
64
|
];
|
|
48
65
|
this.translationMap = this.translateService.translateLanguage(keys);
|
|
49
|
-
this.
|
|
66
|
+
this.unassignedConversationsList = this.unassignedConversations ?? [];
|
|
67
|
+
if (!this.stylesMap) {
|
|
68
|
+
this.stylesMap = new Map([['themeColor', '#165CEE']]);
|
|
69
|
+
}
|
|
70
|
+
if (!this.translationMapConversation) {
|
|
71
|
+
this.translationMapConversation = this.translateService.translateLanguage(['CLOSED', 'Resolve']);
|
|
72
|
+
}
|
|
73
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] unassignedConversationsList', this.unassignedConversationsList);
|
|
74
|
+
// this.buildIFRAME();
|
|
50
75
|
this.listenToPostMsg();
|
|
51
76
|
this.hideHotjarFeedbackBtn();
|
|
52
77
|
this.events.subscribe('style', (data)=>this.loadStyle(data))
|
|
@@ -117,6 +142,46 @@ export class UnassignedConversationsPage implements OnInit {
|
|
|
117
142
|
|
|
118
143
|
}
|
|
119
144
|
|
|
145
|
+
async presentAlertConfirmJoinRequest(request: ConversationModel) {
|
|
146
|
+
var iframeWin = <HTMLIFrameElement>document.getElementById("unassigned-convs-iframe")
|
|
147
|
+
|
|
148
|
+
const isIFrame = (input: HTMLElement | null): input is HTMLIFrameElement =>
|
|
149
|
+
input !== null && input.tagName === 'IFRAME';
|
|
150
|
+
|
|
151
|
+
const keys = ['YouAreAboutToJoinThisChat', 'Cancel', 'AreYouSure'];
|
|
152
|
+
const translationMap = this.translateService.translateLanguage(keys);
|
|
153
|
+
|
|
154
|
+
const alert = await this.alertController.create({
|
|
155
|
+
cssClass: 'my-custom-class',
|
|
156
|
+
header: translationMap.get('AreYouSure'),
|
|
157
|
+
message: translationMap.get('YouAreAboutToJoinThisChat'),
|
|
158
|
+
buttons: [
|
|
159
|
+
{
|
|
160
|
+
text: translationMap.get('Cancel'),
|
|
161
|
+
role: 'cancel',
|
|
162
|
+
cssClass: 'secondary',
|
|
163
|
+
handler: (blah) => {
|
|
164
|
+
}
|
|
165
|
+
}, {
|
|
166
|
+
text: 'Ok',
|
|
167
|
+
handler: () => {
|
|
168
|
+
let user = this.tiledeskAuthService.getCurrentUser();
|
|
169
|
+
this.tiledeskService.addParticipant(request.uid, user.uid, request.attributes.projectId).subscribe((res: any) => {
|
|
170
|
+
this.logger.log('[APP-COMP] addParticipant - RES ', res);
|
|
171
|
+
this.onClose(request);
|
|
172
|
+
}, (error) => {
|
|
173
|
+
this.logger.error('[APP-COMP] addParticipant - ERROR ', error);
|
|
174
|
+
}, () => {
|
|
175
|
+
this.logger.log('[APP-COMP] addParticipant - COMPLETE ');
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
await alert.present();
|
|
183
|
+
}
|
|
184
|
+
|
|
120
185
|
onLoad(iframe){
|
|
121
186
|
let styleData = localStorage.getItem('custom_style')
|
|
122
187
|
if(styleData && styleData !== 'undefined'){
|
|
@@ -185,18 +250,58 @@ export class UnassignedConversationsPage implements OnInit {
|
|
|
185
250
|
}
|
|
186
251
|
|
|
187
252
|
|
|
188
|
-
|
|
253
|
+
onConversationSelected(conversation: ConversationModel) {
|
|
254
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] onConversationSelected', conversation);
|
|
255
|
+
this.uidConvSelected = conversation?.uid;
|
|
256
|
+
const fullName = conversation?.conversation_with_fullname || '';
|
|
257
|
+
const pageUrl = 'conversation-detail/' + conversation.uid + '/' + encodeURIComponent(fullName) + '/unassigned';
|
|
258
|
+
this.modalController.dismiss({ conversation }).then(() => {
|
|
259
|
+
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
|
|
260
|
+
}).catch(() => {
|
|
261
|
+
this.navService.pop();
|
|
262
|
+
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
onCloseConversation(conversation: ConversationModel) {
|
|
267
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] onCloseConversation', conversation);
|
|
268
|
+
this.tiledeskService.closeSupportGroup(conversation.attributes.projectId, conversation.uid).subscribe((res: any) => {
|
|
269
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] archiveRequest - RES ', res);
|
|
270
|
+
this.onClose();
|
|
271
|
+
}, (error) => {
|
|
272
|
+
this.logger.error('[UNASSIGNED-CONVS-PAGE] archiveRequest - ERROR ', error);
|
|
273
|
+
}, () => {
|
|
274
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] archiveRequest - COMPLETE ');
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
onJoinConversation(conversation: ConversationModel) {
|
|
279
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] onJoinConversation', conversation);
|
|
280
|
+
this.presentAlertConfirmJoinRequest(conversation)
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
onImageLoaded(conversation: ConversationModel) {
|
|
284
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] onImageLoaded', conversation);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
onConversationLoaded(conversation: ConversationModel) {
|
|
288
|
+
this.logger.log('[UNASSIGNED-CONVS-PAGE] onConversationLoaded', conversation);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
async onClose(conversation?: ConversationModel) {
|
|
189
292
|
this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL')
|
|
190
|
-
this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL isModalOpened ', await this.modalController.getTop())
|
|
191
293
|
const isModalOpened = await this.modalController.getTop();
|
|
192
294
|
this.logger.log('[UNASSIGNED-CONVS-PAGE] - onClose MODAL isModalOpened ', isModalOpened)
|
|
193
295
|
if (isModalOpened) {
|
|
194
|
-
this.modalController.dismiss({
|
|
195
|
-
confirmed: true
|
|
196
|
-
});
|
|
296
|
+
await this.modalController.dismiss({ confirmed: true });
|
|
197
297
|
} else {
|
|
198
298
|
this.navService.pop();
|
|
199
299
|
}
|
|
300
|
+
if (conversation) {
|
|
301
|
+
const fullName = conversation.conversation_with_fullname || '';
|
|
302
|
+
const pageUrl = 'conversation-detail/' + conversation.uid + '/' + encodeURIComponent(fullName) + '/active';
|
|
303
|
+
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
|
|
304
|
+
}
|
|
200
305
|
}
|
|
201
306
|
|
|
202
307
|
}
|
|
@@ -88,14 +88,14 @@ export class GlobalSettingsService {
|
|
|
88
88
|
this.logger.debug('[GLOBAL-SET] setVariableFromStorage :::::::: SET VARIABLE ---------->', Object.keys(globals));
|
|
89
89
|
for (const key of Object.keys(globals)) {
|
|
90
90
|
const val = this.appStorageService.getItem(key);
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals KEY ---------->', key);
|
|
92
|
+
this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals VAL ---------->', val);
|
|
93
93
|
if (val && val !== null) {
|
|
94
94
|
// globals.setParameter(key, val);
|
|
95
95
|
globals[key] = stringToBoolean(val);
|
|
96
96
|
}
|
|
97
97
|
// this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals == ---------->', globals);
|
|
98
|
-
}
|
|
98
|
+
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
/**
|
|
@@ -113,6 +113,7 @@ export class GlobalSettingsService {
|
|
|
113
113
|
TEMP = getParameterByName(windowContext, 'tiledesk_supportMode');
|
|
114
114
|
if (TEMP) {
|
|
115
115
|
globals.supportMode = stringToBoolean(TEMP);
|
|
116
|
+
this.appStorageService.setItem('supportMode', String(globals.supportMode))
|
|
116
117
|
}
|
|
117
118
|
|
|
118
119
|
TEMP = getParameterByName(windowContext, 'tiledesk_lang');
|
|
@@ -138,6 +139,13 @@ export class GlobalSettingsService {
|
|
|
138
139
|
TEMP = getParameterByName(windowContext, 'tiledesk_projectID');
|
|
139
140
|
if (TEMP) {
|
|
140
141
|
globals.projectID = TEMP;
|
|
142
|
+
this.appStorageService.setItem('projectID', TEMP)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
TEMP = getParameterByName(windowContext, 'tiledesk_logOut');
|
|
146
|
+
if (TEMP) {
|
|
147
|
+
globals.logOut = stringToBoolean(TEMP);
|
|
148
|
+
this.appStorageService.setItem('logOut', TEMP)
|
|
141
149
|
}
|
|
142
150
|
|
|
143
151
|
}
|
|
@@ -4,7 +4,6 @@ import { Router, NavigationExtras } from '@angular/router';
|
|
|
4
4
|
|
|
5
5
|
// utils
|
|
6
6
|
import { checkPlatformIsMobile } from '../../chat21-core/utils/utils';
|
|
7
|
-
// import { ConversationDetailPage } from '../pages/conversation-detail/conversation-detail.page';
|
|
8
7
|
|
|
9
8
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
10
9
|
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { ProjectUsersService } from './project-users.service';
|
|
4
|
+
|
|
5
|
+
describe('ProjectUsersService', () => {
|
|
6
|
+
let service: ProjectUsersService;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
TestBed.configureTestingModule({});
|
|
10
|
+
service = TestBed.inject(ProjectUsersService);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
it('should be created', () => {
|
|
14
|
+
expect(service).toBeTruthy();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
5
|
+
import { ProjectUser } from 'src/chat21-core/models/projectUsers';
|
|
6
|
+
import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
|
|
7
|
+
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
8
|
+
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
9
|
+
|
|
10
|
+
@Injectable({
|
|
11
|
+
providedIn: 'root'
|
|
12
|
+
})
|
|
13
|
+
export class ProjectUsersService {
|
|
14
|
+
|
|
15
|
+
private SERVER_BASE_URL: string;
|
|
16
|
+
private tiledeskToken: string;
|
|
17
|
+
|
|
18
|
+
private logger: LoggerService = LoggerInstance.getInstance();
|
|
19
|
+
constructor(
|
|
20
|
+
public http: HttpClient,
|
|
21
|
+
public appStorageService: AppStorageService
|
|
22
|
+
) {}
|
|
23
|
+
|
|
24
|
+
initialize(serverBaseUrl: string) {
|
|
25
|
+
this.logger.log('[TILEDESK-PROJECT_USERS-SERV] - initialize serverBaseUrl', serverBaseUrl);
|
|
26
|
+
this.SERVER_BASE_URL = serverBaseUrl;
|
|
27
|
+
this.tiledeskToken = this.appStorageService.getItem('tiledeskToken')
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public getProjectUsersByProjectId(project_id: string): Observable<ProjectUser[]> {
|
|
31
|
+
const url = this.SERVER_BASE_URL + project_id + '/project_users/';
|
|
32
|
+
this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER URL', url);
|
|
33
|
+
|
|
34
|
+
const httpOptions = {
|
|
35
|
+
headers: new HttpHeaders({
|
|
36
|
+
'Content-Type': 'application/json',
|
|
37
|
+
Authorization: this.tiledeskToken
|
|
38
|
+
})
|
|
39
|
+
};
|
|
40
|
+
return this.http.get(url, httpOptions).pipe(map((res: any) => {
|
|
41
|
+
this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER RES ', res);
|
|
42
|
+
return res
|
|
43
|
+
}))
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public getProjectUserByProjectId(project_id: string): Promise<ProjectUser> {
|
|
47
|
+
const url = this.SERVER_BASE_URL + project_id + '/project_users/me';
|
|
48
|
+
this.logger.log('[TILEDESK-SERVICE]- GET PROJECT-USER BY USER-ID - URL', url);
|
|
49
|
+
|
|
50
|
+
const httpOptions = {
|
|
51
|
+
headers: new HttpHeaders({
|
|
52
|
+
'Content-Type': 'application/json',
|
|
53
|
+
Authorization: this.tiledeskToken
|
|
54
|
+
})
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
return this.http.get(url, httpOptions).pipe(map((res: any) => {
|
|
58
|
+
this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER RES ', res);
|
|
59
|
+
return res[0]
|
|
60
|
+
})).toPromise();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
}
|
|
@@ -7,6 +7,7 @@ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance'
|
|
|
7
7
|
import { AppConfigProvider } from '../app-config';
|
|
8
8
|
import { Observable } from 'rxjs';
|
|
9
9
|
import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
|
|
10
|
+
import { ProjectUser } from 'src/chat21-core/models/project_user';
|
|
10
11
|
|
|
11
12
|
@Injectable({
|
|
12
13
|
providedIn: 'root'
|
|
@@ -35,7 +36,7 @@ export class ProjectService {
|
|
|
35
36
|
this.tiledeskToken = this.appStorageService.getItem('tiledeskToken')
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
public getProjects(): Observable<
|
|
39
|
+
public getProjects(): Observable<ProjectUser[]> {
|
|
39
40
|
const url = this.SERVER_BASE_URL + "projects/";
|
|
40
41
|
this.logger.log('[PROJECTS-SERVICE] getProjects - URL ', url);
|
|
41
42
|
|
|
@@ -93,22 +93,6 @@ export class TiledeskService {
|
|
|
93
93
|
}))
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
public getProjectUsersByProjectId(project_id: string) {
|
|
97
|
-
const url = this.SERVER_BASE_URL + project_id + '/project_users/';
|
|
98
|
-
this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER URL', url);
|
|
99
|
-
|
|
100
|
-
const httpOptions = {
|
|
101
|
-
headers: new HttpHeaders({
|
|
102
|
-
'Content-Type': 'application/json',
|
|
103
|
-
Authorization: this.tiledeskToken
|
|
104
|
-
})
|
|
105
|
-
};
|
|
106
|
-
return this.http.get(url, httpOptions).pipe(map((res: any) => {
|
|
107
|
-
this.logger.log('[TILEDESK-SERVICE] - GET PROJECT-USER RES ', res);
|
|
108
|
-
return res
|
|
109
|
-
}))
|
|
110
|
-
}
|
|
111
|
-
|
|
112
96
|
public getAllLeadsActiveWithLimit(project_id: string, limit: number) {
|
|
113
97
|
const url = this.SERVER_BASE_URL + project_id + '/leads?limit=' + limit + '&with_fullname=true';
|
|
114
98
|
this.logger.log('[TILEDESK-SERVICE] - GET ALL ACTIVE LEADS (LIMIT 10000) - URL', url);
|
|
@@ -260,5 +244,26 @@ export class TiledeskService {
|
|
|
260
244
|
return res
|
|
261
245
|
}))
|
|
262
246
|
}
|
|
247
|
+
|
|
248
|
+
// -----------------------------------------------------------------------------------------
|
|
249
|
+
// @ Add participant to request
|
|
250
|
+
// -----------------------------------------------------------------------------------------
|
|
251
|
+
public addParticipant(requestid: string, userid: string, project_id: string) {
|
|
252
|
+
const url = this.SERVER_BASE_URL + project_id + '/requests/' + requestid + '/participants';
|
|
253
|
+
this.logger.log('[TILEDESK-SERVICE] addParticipant - URL ', url)
|
|
254
|
+
const httpOptions = {
|
|
255
|
+
headers: new HttpHeaders({
|
|
256
|
+
'Content-Type': 'application/json',
|
|
257
|
+
'Authorization': this.tiledeskToken
|
|
258
|
+
})
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
const body = { 'member': userid };
|
|
262
|
+
|
|
263
|
+
return this.http.post(url, JSON.stringify(body), httpOptions).pipe(map((res: any) => {
|
|
264
|
+
this.logger.log('[TILEDESK-SERVICE] addParticipant - RES ', res);
|
|
265
|
+
return res
|
|
266
|
+
}))
|
|
267
|
+
}
|
|
263
268
|
|
|
264
269
|
}
|
|
@@ -102,5 +102,33 @@ export class TriggerEvents {
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
public triggerOnUpdateNewConversationBadge(detailObj: {}) {
|
|
106
|
+
this.logger.debug(' ---------------- triggerOnUpdateNewConversationBadge ---------------- ', detailObj);
|
|
107
|
+
try {
|
|
108
|
+
const onBeforeInit = new CustomEvent('onUpdateNewConversationBadge', { detail: detailObj });
|
|
109
|
+
const windowContext = this.windowContext;
|
|
110
|
+
if (windowContext){
|
|
111
|
+
// windowContext.document.dispatchEvent(onNewConversation);
|
|
112
|
+
windowContext.postMessage({type: "onUpdateNewConversationBadge", detail: detailObj }, '*')
|
|
113
|
+
}
|
|
114
|
+
} catch (e) {
|
|
115
|
+
this.logger.error('[TRIGGER-HANDLER] > Error:' + e);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
public triggerOnOpenTicketExternally(detailObj: {}) {
|
|
120
|
+
this.logger.debug(' ---------------- triggerOnOpenTicketExternally ---------------- ', detailObj);
|
|
121
|
+
try {
|
|
122
|
+
const onBeforeInit = new CustomEvent('onOpenTicketExternally', { detail: detailObj });
|
|
123
|
+
const windowContext = this.windowContext;
|
|
124
|
+
if (windowContext){
|
|
125
|
+
// windowContext.document.dispatchEvent(onNewConversation);
|
|
126
|
+
windowContext.postMessage({type: "onOpenTicketExternally", detail: detailObj }, '*')
|
|
127
|
+
}
|
|
128
|
+
} catch (e) {
|
|
129
|
+
this.logger.error('[TRIGGER-HANDLER] > Error:' + e);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
105
133
|
|
|
106
134
|
}
|