@chat21/chat21-ionic 3.4.27-rc8 → 3.4.28
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 +6 -48
- package/angular.json +0 -1
- package/package.json +1 -1
- package/src/app/app.component.ts +13 -68
- package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.scss +3 -3
- package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +1 -1
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +1 -1
- package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.html +1 -1
- package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.ts +4 -4
- package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.scss +3 -3
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +9 -9
- package/src/app/components/bubbleMessageInfo-popover/bubbleinfo-popover.component.html +1 -1
- package/src/app/components/canned-response/canned-response.component.html +23 -26
- package/src/app/components/canned-response/canned-response.component.scss +2 -0
- package/src/app/components/canned-response/canned-response.component.ts +1 -3
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +8 -8
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +1 -24
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +0 -30
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +16 -29
- package/src/app/components/copilot-popover/copilot-popover.component.html +1 -1
- package/src/app/components/navbar/navbar.component.html +3 -3
- package/src/app/components/navbar/navbar.component.ts +38 -29
- package/src/app/components/project-item/project-item.component.ts +70 -52
- package/src/app/components/sidebar/sidebar.component.html +47 -67
- package/src/app/components/sidebar/sidebar.component.ts +117 -92
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +4 -4
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +14 -16
- package/src/app/modals/create-ticket/create-ticket.page.html +6 -6
- package/src/app/modals/create-ticket/create-ticket.page.ts +6 -8
- package/src/app/modals/loader-preview/loader-preview.page.ts +1 -1
- package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.scss +1 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.html +3 -7
- package/src/app/pages/conversation-detail/conversation-detail.page.scss +1 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +4 -63
- package/src/app/pages/conversations-list/conversations-list.page.ts +8 -8
- package/src/app/pages/profile-info/profile-info.page.ts +3 -3
- package/src/app/services/brand/brand.service.ts +5 -5
- package/src/app/services/global-settings/global-settings.service.ts +2 -5
- package/src/app/services/tiledesk/tiledesk.service.ts +16 -0
- package/src/app/shared/shared.module.ts +0 -11
- package/src/app/utils/project-utils.ts +2 -2
- package/src/app/utils/utils-resources.ts +8 -7
- package/src/app/utils/utils.ts +1 -18
- package/src/assets/i18n/ar.json +1 -11
- package/src/assets/i18n/az.json +1 -11
- package/src/assets/i18n/de.json +1 -11
- package/src/assets/i18n/en.json +1 -11
- package/src/assets/i18n/es.json +1 -11
- package/src/assets/i18n/fr.json +1 -11
- package/src/assets/i18n/it.json +3 -13
- package/src/assets/i18n/kk.json +1 -11
- package/src/assets/i18n/pt.json +1 -11
- package/src/assets/i18n/ru.json +1 -11
- package/src/assets/i18n/sr.json +1 -11
- package/src/assets/i18n/sv.json +1 -11
- package/src/assets/i18n/tr.json +1 -11
- package/src/assets/i18n/uk.json +1 -11
- package/src/assets/i18n/uz.json +1 -12
- package/src/chat-config-template.json +0 -1
- package/src/chat-config.json +0 -1
- package/src/chat21-core/models/{projectUsers.ts → project_user.ts} +18 -12
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +1 -1
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -3
- package/src/chat21-core/utils/constants.ts +2 -2
- package/src/chat21-core/utils/utils.ts +2 -10
- package/src/app/services/project_users/project-users.service.spec.ts +0 -16
- package/src/app/services/project_users/project-users.service.ts +0 -63
- package/src/app/utils/permissions.constants.ts +0 -138
- package/src/assets/js/agentDesktop-sdk.js +0 -47
- /package/src/assets/{images → img}/channel_icons/chat21.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/direct.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/email-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/form-logo_v2.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/group.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/messenger-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/telegram-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/voice.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/whatsapp-logo.svg +0 -0
- /package/src/assets/{images → img}/default-avatar-x-select.png +0 -0
- /package/src/assets/{images → img}/f21ico-done.svg +0 -0
- /package/src/assets/{images → img}/f21ico-done_all.svg +0 -0
- /package/src/assets/{images → img}/f21ico-schedule.svg +0 -0
- /package/src/assets/{images → img}/file-alt-solid.png +0 -0
- /package/src/assets/{images → img}/icons/copilot.svg +0 -0
- /package/src/assets/{images → img}/json-file.svg +0 -0
- /package/src/assets/{images → img}/language_flag/ar.png +0 -0
- /package/src/assets/{images → img}/language_flag/az.png +0 -0
- /package/src/assets/{images → img}/language_flag/bg.png +0 -0
- /package/src/assets/{images → img}/language_flag/ca.png +0 -0
- /package/src/assets/{images → img}/language_flag/cs.png +0 -0
- /package/src/assets/{images → img}/language_flag/da.png +0 -0
- /package/src/assets/{images → img}/language_flag/de.png +0 -0
- /package/src/assets/{images → img}/language_flag/el.png +0 -0
- /package/src/assets/{images → img}/language_flag/en.png +0 -0
- /package/src/assets/{images → img}/language_flag/es.png +0 -0
- /package/src/assets/{images → img}/language_flag/fa.png +0 -0
- /package/src/assets/{images → img}/language_flag/fi.png +0 -0
- /package/src/assets/{images → img}/language_flag/fr.png +0 -0
- /package/src/assets/{images → img}/language_flag/he.png +0 -0
- /package/src/assets/{images → img}/language_flag/hi.png +0 -0
- /package/src/assets/{images → img}/language_flag/hr.png +0 -0
- /package/src/assets/{images → img}/language_flag/hu.png +0 -0
- /package/src/assets/{images → img}/language_flag/id.png +0 -0
- /package/src/assets/{images → img}/language_flag/it.png +0 -0
- /package/src/assets/{images → img}/language_flag/ja.png +0 -0
- /package/src/assets/{images → img}/language_flag/kk.png +0 -0
- /package/src/assets/{images → img}/language_flag/ko.png +0 -0
- /package/src/assets/{images → img}/language_flag/ml-IN.png +0 -0
- /package/src/assets/{images → img}/language_flag/ne-NP.png +0 -0
- /package/src/assets/{images → img}/language_flag/nl.png +0 -0
- /package/src/assets/{images → img}/language_flag/no.png +0 -0
- /package/src/assets/{images → img}/language_flag/pl.png +0 -0
- /package/src/assets/{images → img}/language_flag/pt-BR.png +0 -0
- /package/src/assets/{images → img}/language_flag/pt.png +0 -0
- /package/src/assets/{images → img}/language_flag/ro.png +0 -0
- /package/src/assets/{images → img}/language_flag/ru.png +0 -0
- /package/src/assets/{images → img}/language_flag/sk.png +0 -0
- /package/src/assets/{images → img}/language_flag/sl.png +0 -0
- /package/src/assets/{images → img}/language_flag/sr.png +0 -0
- /package/src/assets/{images → img}/language_flag/sv.png +0 -0
- /package/src/assets/{images → img}/language_flag/ta.png +0 -0
- /package/src/assets/{images → img}/language_flag/th.png +0 -0
- /package/src/assets/{images → img}/language_flag/tr.png +0 -0
- /package/src/assets/{images → img}/language_flag/uk.png +0 -0
- /package/src/assets/{images → img}/language_flag/uz.png +0 -0
- /package/src/assets/{images → img}/language_flag/vi.png +0 -0
- /package/src/assets/{images → img}/language_flag/zh-CN.png +0 -0
- /package/src/assets/{images → img}/language_flag/zh-TW.png +0 -0
- /package/src/assets/{logos → img/logos}/chat21-logo.png +0 -0
- /package/src/assets/{logos → img/logos}/logo.png +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk-logo_new_white.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk-solo-logo.png +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo_no_text.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo_white_small.svg +0 -0
- /package/src/assets/{images → img}/no_conversation.jpg +0 -0
- /package/src/assets/{images → img}/no_image.png +0 -0
- /package/src/assets/{images → img}/no_image_user.png +0 -0
- /package/src/assets/{images → img}/pin.svg +0 -0
- /package/src/assets/{images → img}/pinned.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/high.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/high_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/low.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/low_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/medium.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/medium_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/urgent.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/urgent_v2.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/avaible.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/inactive.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/unavaible.svg +0 -0
- /package/src/assets/{images → img}/whatsapp_background.png +0 -0
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
<img *ngIf="item.requestertype === 'agent' && UPLOAD_ENGINE_IS_FIREBASE" height="24" width="24"
|
|
37
37
|
style="border-radius:50%; object-fit: cover; vertical-align: middle;"
|
|
38
38
|
src="https://firebasestorage.googleapis.com/v0/b/{{storageBucket}}/o/profiles%2F{{item.id}}%2Fphoto.jpg?alt=media"
|
|
39
|
-
alt="" onerror="this.src='assets/
|
|
39
|
+
alt="" onerror="this.src='assets/img/default-avatar-x-select.png'">
|
|
40
40
|
|
|
41
41
|
<!-- ---------------------------------------- -->
|
|
42
42
|
<!-- Usecase Native -->
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
<img *ngIf="item.requestertype === 'agent' && !UPLOAD_ENGINE_IS_FIREBASE" height="24" width="24"
|
|
45
45
|
style="border-radius:50%;object-fit: cover;vertical-align: middle;"
|
|
46
46
|
src="{{baseUrl}}images?path=uploads%2Fusers%2F{{item.id}}%2Fimages%2Fthumbnails_200_200-photo.jpg" alt=""
|
|
47
|
-
onerror="this.src='assets/
|
|
47
|
+
onerror="this.src='assets/img/default-avatar-x-select.png'">
|
|
48
48
|
|
|
49
49
|
<img *ngIf="item.requestertype === 'lead'" height="24" width="24"
|
|
50
50
|
style="border-radius:50%;object-fit: cover;vertical-align: middle;"
|
|
51
|
-
src="assets/
|
|
51
|
+
src="assets/img/default-avatar-x-select.png" alt="">
|
|
52
52
|
<span style="font-weight: 400;">
|
|
53
53
|
{{ item.name }}
|
|
54
54
|
</span>
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
<img *ngIf="item.requestertype === 'agent' && UPLOAD_ENGINE_IS_FIREBASE" height="24" width="24"
|
|
65
65
|
style="border-radius:50%;object-fit: cover;vertical-align: middle;"
|
|
66
66
|
src="https://firebasestorage.googleapis.com/v0/b/{{storageBucket}}/o/profiles%2F{{item.id}}%2Fphoto.jpg?alt=media"
|
|
67
|
-
alt="" onerror="this.src='assets/
|
|
67
|
+
alt="" onerror="this.src='assets/img/default-avatar-x-select.png'">
|
|
68
68
|
|
|
69
69
|
<!-- ---------------------------------------- -->
|
|
70
70
|
<!-- Usecase Native -->
|
|
@@ -72,11 +72,11 @@
|
|
|
72
72
|
<img *ngIf="item.requestertype === 'agent' && !UPLOAD_ENGINE_IS_FIREBASE" height="24" width="24"
|
|
73
73
|
style="border-radius:50%;object-fit: cover;vertical-align: middle;"
|
|
74
74
|
src="{{baseUrl}}images?path=uploads%2Fusers%2F{{item.id}}%2Fimages%2Fthumbnails_200_200-photo.jpg" alt=""
|
|
75
|
-
onerror="this.src='assets/
|
|
75
|
+
onerror="this.src='assets/img/default-avatar-x-select.png'">
|
|
76
76
|
|
|
77
77
|
<img *ngIf="item.requestertype === 'lead'" height="24" width="24"
|
|
78
78
|
style="border-radius:50%; object-fit: cover;vertical-align: middle;"
|
|
79
|
-
src="assets/
|
|
79
|
+
src="assets/img/default-avatar-x-select.png" alt="">
|
|
80
80
|
<span style="font-weight: 400;">
|
|
81
81
|
{{ item.name }}
|
|
82
82
|
</span>
|
|
@@ -9,7 +9,6 @@ import * as uuid from 'uuid';
|
|
|
9
9
|
import { EventsService } from 'src/app/services/events-service'
|
|
10
10
|
import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
|
|
11
11
|
import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
|
|
12
|
-
import { ProjectUsersService } from 'src/app/services/project_users/project-users.service'
|
|
13
12
|
|
|
14
13
|
@Component({
|
|
15
14
|
selector: 'app-create-ticket',
|
|
@@ -43,29 +42,28 @@ export class CreateTicketPage implements OnInit {
|
|
|
43
42
|
{
|
|
44
43
|
id: 1,
|
|
45
44
|
name: 'urgent',
|
|
46
|
-
avatar: 'assets/
|
|
45
|
+
avatar: 'assets/img/priority_icons/urgent_v2.svg'
|
|
47
46
|
},
|
|
48
47
|
{
|
|
49
48
|
id: 2,
|
|
50
49
|
name: 'high',
|
|
51
|
-
avatar: 'assets/
|
|
50
|
+
avatar: 'assets/img/priority_icons/high_v2.svg '
|
|
52
51
|
},
|
|
53
52
|
{
|
|
54
53
|
id: 3,
|
|
55
54
|
name: 'medium',
|
|
56
|
-
avatar: 'assets/
|
|
55
|
+
avatar: 'assets/img/priority_icons/medium_v2.svg'
|
|
57
56
|
},
|
|
58
57
|
{
|
|
59
58
|
id: 4,
|
|
60
59
|
name: 'low',
|
|
61
|
-
avatar: 'assets/
|
|
60
|
+
avatar: 'assets/img/priority_icons/low_v2.svg'
|
|
62
61
|
},
|
|
63
62
|
];
|
|
64
63
|
|
|
65
64
|
logger: LoggerService = LoggerInstance.getInstance();
|
|
66
65
|
constructor(
|
|
67
66
|
public modalController: ModalController,
|
|
68
|
-
public projectUsersService: ProjectUsersService,
|
|
69
67
|
public tiledeskService: TiledeskService,
|
|
70
68
|
public appConfigProvider: AppConfigProvider,
|
|
71
69
|
public events: EventsService
|
|
@@ -106,7 +104,7 @@ export class CreateTicketPage implements OnInit {
|
|
|
106
104
|
// Create the array of the project-users and contacts displayed in the combo box "Requester"
|
|
107
105
|
// -------------------------------------------------------------------------------------------
|
|
108
106
|
getProjectUsersAndContacts(projctid: string) {
|
|
109
|
-
const projectUsers = this.
|
|
107
|
+
const projectUsers = this.tiledeskService.getProjectUsersByProjectId(projctid)
|
|
110
108
|
const leads = this.tiledeskService.getAllLeadsActiveWithLimit(projctid,10000)
|
|
111
109
|
|
|
112
110
|
zip(projectUsers, leads).subscribe(
|
|
@@ -245,7 +243,7 @@ export class CreateTicketPage implements OnInit {
|
|
|
245
243
|
// -------------------------------------------------------------------------------------------------------------------
|
|
246
244
|
getProjectUserBotsAndDepts(projctid: string) {
|
|
247
245
|
// this.loadingAssignee = true;
|
|
248
|
-
const projectUsers = this.
|
|
246
|
+
const projectUsers = this.tiledeskService.getProjectUsersByProjectId( projctid)
|
|
249
247
|
const bots = this.tiledeskService.getAllBotByProjectId(projctid)
|
|
250
248
|
const depts = this.tiledeskService.getDeptsByProjectId(projctid)
|
|
251
249
|
|
|
@@ -156,7 +156,7 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
|
|
|
156
156
|
}
|
|
157
157
|
// file-alt-solid.png
|
|
158
158
|
async createFile() {
|
|
159
|
-
let response = await fetch('./assets/
|
|
159
|
+
let response = await fetch('./assets/img/file-alt-solid.png')
|
|
160
160
|
let data = await response.blob()
|
|
161
161
|
let metadata = {
|
|
162
162
|
type: 'image/png',
|
|
@@ -106,7 +106,7 @@ ion-footer {
|
|
|
106
106
|
width: 100%;
|
|
107
107
|
min-height: 200px;
|
|
108
108
|
//background-image: url(https://user-images.githubusercontent.com/15075759/28719144-86dc0f70-73b1-11e7-911d-60d70fcded21.png);
|
|
109
|
-
background-image: url(../../../assets/
|
|
109
|
+
background-image: url(../../../assets/img/whatsapp_background.png);
|
|
110
110
|
border-radius: 8px;
|
|
111
111
|
background-size: cover;
|
|
112
112
|
display: flex;
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
<!-- ----------------------------------------------------------- -->
|
|
174
174
|
<app-canned-response *ngIf="SHOW_CANNED_RESPONSES"
|
|
175
175
|
id="canned"
|
|
176
|
-
[
|
|
176
|
+
[canShowCanned]="canShowCanned"
|
|
177
177
|
[conversationWith]="conversationWith"
|
|
178
178
|
[conversationWithFullname]="conversationWithFullname"
|
|
179
179
|
[currentString]="messageStr"
|
|
@@ -201,8 +201,7 @@
|
|
|
201
201
|
<!-- [tagsCannedFilter]="tagsCannedFilter" -->
|
|
202
202
|
<!-- openInfoConversation {{openInfoConversation}} - isMobile {{isMobile}} -->
|
|
203
203
|
<app-message-text-area *ngIf="(openInfoConversation === false && isMobile === true) || (openInfoConversation === true && isMobile === false) || (openInfoConversation === false && isMobile === false)"
|
|
204
|
-
[loggedUser]="loggedUser"
|
|
205
|
-
[projectUser]="projectUser"
|
|
204
|
+
[loggedUser]="loggedUser"
|
|
206
205
|
[conversationWith]="conversationWith"
|
|
207
206
|
[channelType]="channelType"
|
|
208
207
|
[channel]="conversation?.attributes?.request_channel"
|
|
@@ -214,10 +213,8 @@
|
|
|
214
213
|
[fileUploadAccept]="fileUploadAccept"
|
|
215
214
|
[emailSection]="isEmailEnabled"
|
|
216
215
|
[offlineMsgEmail]="offlineMsgEmail"
|
|
217
|
-
[cannedSection]="canShowCanned"
|
|
218
216
|
[whatsappTemplatesSection]="isWhatsappTemplatesEnabled"
|
|
219
217
|
[isOpenInfoConversation]="openInfoConversation"
|
|
220
|
-
[ticketSection]="isTicketEnabled"
|
|
221
218
|
[stylesMap]="styleMap"
|
|
222
219
|
[translationMap]="translationsMap"
|
|
223
220
|
[dropEvent]="dropEvent"
|
|
@@ -226,8 +223,7 @@
|
|
|
226
223
|
(onClickOpenCannedResponses)="onClickOpenCannedResponses($event)"
|
|
227
224
|
(eventSendMessage)="returnSendMessage($event)"
|
|
228
225
|
(onPresentModalScrollToBottom)="onPresentModalScrollToBottom($event)"
|
|
229
|
-
(onOpenFooterSection)="onOpenFooterSection($event)"
|
|
230
|
-
(onOpenTicket)="onOpenTicket($event)">
|
|
226
|
+
(onOpenFooterSection)="onOpenFooterSection($event)">
|
|
231
227
|
</app-message-text-area>
|
|
232
228
|
<!-- [events]="eventsReplaceTexareaText.asObservable()" -->
|
|
233
229
|
</ion-row>
|
|
@@ -83,10 +83,7 @@ import { WebsocketService } from 'src/app/services/websocket/websocket.service';
|
|
|
83
83
|
import { Project } from 'src/chat21-core/models/projects';
|
|
84
84
|
import { Globals } from 'src/app/utils/globals';
|
|
85
85
|
import { ProjectService } from 'src/app/services/projects/project.service';
|
|
86
|
-
import {
|
|
87
|
-
import { ProjectUser } from 'src/chat21-core/models/projectUsers';
|
|
88
|
-
import { getOSCode, hasRole } from 'src/app/utils/utils';
|
|
89
|
-
import { PERMISSIONS } from 'src/app/utils/permissions.constants';
|
|
86
|
+
import { getOSCode } from 'src/app/utils/utils';
|
|
90
87
|
|
|
91
88
|
@Component({
|
|
92
89
|
selector: 'app-conversation-detail',
|
|
@@ -111,7 +108,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
111
108
|
private subscriptions: Array<any>
|
|
112
109
|
public tenant: string;
|
|
113
110
|
public loggedUser: UserModel
|
|
114
|
-
public projectUser: ProjectUser;
|
|
115
111
|
public conversationWith: string
|
|
116
112
|
public conversationWithFullname: string
|
|
117
113
|
public messages: Array<MessageModel> = []
|
|
@@ -141,7 +137,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
141
137
|
public tagsCannedFilter: Array<any> = [];
|
|
142
138
|
public SHOW_CANNED_RESPONSES: boolean = false
|
|
143
139
|
public canShowCanned: boolean = true
|
|
144
|
-
public rolesCanned: { [key: string]: boolean }
|
|
145
140
|
|
|
146
141
|
public SHOW_COPILOT_SUGGESTIONS: boolean = false;
|
|
147
142
|
|
|
@@ -176,10 +171,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
176
171
|
copilotQuestion: string = '';
|
|
177
172
|
/**COPILOT : end */
|
|
178
173
|
|
|
179
|
-
/** TICKET: start */
|
|
180
|
-
isTicketEnabled: boolean = false;
|
|
181
|
-
/** TICKET: end */
|
|
182
|
-
|
|
183
174
|
isMine = isMine
|
|
184
175
|
isInfo = isInfo
|
|
185
176
|
isFirstMessage = isFirstMessage
|
|
@@ -249,7 +240,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
249
240
|
public toastController: ToastController,
|
|
250
241
|
public tiledeskService: TiledeskService,
|
|
251
242
|
public projectService: ProjectService,
|
|
252
|
-
public projectUsersService: ProjectUsersService,
|
|
253
243
|
private networkService: NetworkService,
|
|
254
244
|
private events: EventsService,
|
|
255
245
|
private webSocketService: WebsocketService,
|
|
@@ -487,7 +477,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
487
477
|
this.messages = [] // list messages of conversation
|
|
488
478
|
this.isFileSelected = false // indicates if a file has been selected (image to upload)
|
|
489
479
|
this.isEmailEnabled = (this.appConfigProvider.getConfig().emailSection === 'true' || this.appConfigProvider.getConfig().emailSection === true) ? true : false;
|
|
490
|
-
this.isTicketEnabled = (this.appConfigProvider.getConfig().ticketSection === 'true' || this.appConfigProvider.getConfig().ticketSection === true) ? true : false;
|
|
491
480
|
this.isWhatsappTemplatesEnabled = (this.appConfigProvider.getConfig().whatsappTemplatesSection === 'true' || this.appConfigProvider.getConfig().whatsappTemplatesSection === true) ? true : false;
|
|
492
481
|
|
|
493
482
|
this.cannedResponsesService.initialize(appconfig.apiUrl)
|
|
@@ -545,6 +534,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
545
534
|
this.logger.log('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT * COMPLETE *',)
|
|
546
535
|
})
|
|
547
536
|
}else {
|
|
537
|
+
this.canShowCanned = false;
|
|
548
538
|
this.offlineMsgEmail = false;
|
|
549
539
|
}
|
|
550
540
|
|
|
@@ -555,13 +545,10 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
555
545
|
this.logger.log('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT RES', project)
|
|
556
546
|
if (project) {
|
|
557
547
|
const projectId = project.id_project
|
|
558
|
-
this.
|
|
548
|
+
this.canShowCanned = this.projectPlanUtils.checkPlanIsExpired(project)
|
|
559
549
|
this.offlineMsgEmail = this.checkOfflineMsgEmailIsEnabled(project)
|
|
560
550
|
this.isCopilotEnabled = this.projectPlanUtils.checkProjectProfileFeature(project, 'copilot');
|
|
561
551
|
this.fileUploadAccept = this.checkAcceptedUploadFile(project)
|
|
562
|
-
this.rolesCanned = this.checkCannedResponsesRoles(project)
|
|
563
|
-
this.canShowCanned = this.checkCannedResponses(project)
|
|
564
|
-
this.logger.log('[CONVS-DETAIL] this.rolesCanned ', this.canShowCanned)
|
|
565
552
|
}
|
|
566
553
|
}, (error) => {
|
|
567
554
|
this.logger.error('[CONVS-DETAIL] - GET PROJECTID BY CONV RECIPIENT - ERROR ', error)
|
|
@@ -599,40 +586,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
599
586
|
return this.appConfigProvider.getConfig().fileUploadAccept
|
|
600
587
|
}
|
|
601
588
|
|
|
602
|
-
checkCannedResponses(project: Project): boolean {
|
|
603
|
-
let expires = this.projectPlanUtils.checkPlanIsExpired(project)
|
|
604
|
-
this.logger.log('[CONVS-DETAIL] checkCannedResponses expires ', expires)
|
|
605
|
-
if(expires){
|
|
606
|
-
return false
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
let hasRoleToShowCanned = this.rolesCanned[PERMISSIONS.CANNED_RESPONSES_READ]
|
|
610
|
-
this.logger.log('[CONVS-DETAIL] checkCannedResponses hasRoleToShowCanned ', hasRoleToShowCanned)
|
|
611
|
-
if(!hasRoleToShowCanned){
|
|
612
|
-
return false
|
|
613
|
-
}
|
|
614
|
-
|
|
615
|
-
return true
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
checkCannedResponsesRoles(project: Project): { [key: string]: boolean } {
|
|
619
|
-
const permissionKeys = [
|
|
620
|
-
'CANNED_RESPONSES_CREATE',
|
|
621
|
-
'CANNED_RESPONSES_READ',
|
|
622
|
-
'CANNED_RESPONSES_UPDATE',
|
|
623
|
-
'CANNED_RESPONSES_DELETE',
|
|
624
|
-
] as const;
|
|
625
|
-
|
|
626
|
-
const roles: { [key: string]: boolean } = {};
|
|
627
|
-
for (const key of permissionKeys) {
|
|
628
|
-
const permission = PERMISSIONS[key];
|
|
629
|
-
roles[permission] = hasRole(this.projectUser, permission);
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
return roles;
|
|
633
|
-
|
|
634
|
-
}
|
|
635
|
-
|
|
636
589
|
// getProjectIdSelectedConversation(conversationWith: string): string{
|
|
637
590
|
// const conversationWith_segments = conversationWith.split('-')
|
|
638
591
|
// // Removes the last element of the array if is = to the separator
|
|
@@ -716,11 +669,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
716
669
|
"WHATSAPP.ERROR_WHATSAPP_NOT_INSTALLED",
|
|
717
670
|
"WHATSAPP.ERROR_WHATSAPP_GENERIC_ERROR",
|
|
718
671
|
|
|
719
|
-
"TICKET.OPEN_TICKET",
|
|
720
|
-
"TICKET.DESCRIPTION",
|
|
721
|
-
"TICKET.CONFIRM",
|
|
722
|
-
"TICKET.CLOSE",
|
|
723
|
-
|
|
724
672
|
"COPILOT.ASK_AI",
|
|
725
673
|
"COPILOT.NO_SUGGESTIONS_PRESENT",
|
|
726
674
|
|
|
@@ -1156,7 +1104,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
1156
1104
|
// ${metadata.name}
|
|
1157
1105
|
// </a>`
|
|
1158
1106
|
|
|
1159
|
-
// msg =  + [${metadata.name}](${metadata.src})
|
|
1160
1108
|
msg = `[${metadata.name}](${metadata.src})`
|
|
1161
1109
|
}
|
|
1162
1110
|
}
|
|
@@ -1936,13 +1884,6 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
|
|
|
1936
1884
|
}
|
|
1937
1885
|
|
|
1938
1886
|
|
|
1939
|
-
onOpenTicket() {
|
|
1940
|
-
this.logger.debug('[CONVS-DETAIL] openTicketOnExternalService - conversationWith ', this.conversationWith)
|
|
1941
|
-
if(window['openTicketOnHDA']){
|
|
1942
|
-
window['openTicketOnHDA'](this.conversationWith)
|
|
1943
|
-
}
|
|
1944
|
-
|
|
1945
|
-
}
|
|
1946
1887
|
// -------------- START SCROLL/RESIZE -------------- //
|
|
1947
1888
|
/** */
|
|
1948
1889
|
resizeTextArea() {
|
|
@@ -109,9 +109,9 @@ export class ConversationListPage implements OnInit {
|
|
|
109
109
|
profile_name_translated: string;
|
|
110
110
|
selectedStatus: any;
|
|
111
111
|
teammateStatus = [
|
|
112
|
-
{ id: 1, name: 'Available', avatar: 'assets/
|
|
113
|
-
{ id: 2, name: 'Unavailable', avatar: 'assets/
|
|
114
|
-
{ id: 3, name: 'Inactive', avatar: 'assets/
|
|
112
|
+
{ id: 1, name: 'Available', avatar: 'assets/img/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
|
|
113
|
+
{ id: 2, name: 'Unavailable', avatar: 'assets/img/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
|
|
114
|
+
{ id: 3, name: 'Inactive', avatar: 'assets/img/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
|
|
115
115
|
];
|
|
116
116
|
// PROJECT AVAILABILITY INFO: end
|
|
117
117
|
|
|
@@ -473,7 +473,7 @@ export class ConversationListPage implements OnInit {
|
|
|
473
473
|
listenToCurrentStoredProject() {
|
|
474
474
|
this.events.subscribe('storage:last_project', projectObjct => {
|
|
475
475
|
if (projectObjct && projectObjct !== 'undefined') {
|
|
476
|
-
|
|
476
|
+
this.logger.log('[CONVS-LIST-PAGE] - GET STORED PROJECT ', projectObjct)
|
|
477
477
|
|
|
478
478
|
//TODO: recuperare info da root e non da id_project
|
|
479
479
|
this.project = {
|
|
@@ -888,21 +888,21 @@ export class ConversationListPage implements OnInit {
|
|
|
888
888
|
this.logger.log('[CONVS-LIST-PAGE] checkPlatformIsMobile(): ', checkPlatformIsMobile())
|
|
889
889
|
this.logger.log('[CONVS-LIST-PAGE] DESKTOP (window < 768)', this.navService)
|
|
890
890
|
this.logger.log('[CONVS-LIST-PAGE] navigateByUrl this.conversationSelected conversation_with_fullname ', this.conversationSelected)
|
|
891
|
-
let pageUrl = 'conversation-detail/' + this.uidConvSelected + '/' + this.conversationSelected.conversation_with_fullname + '/' + converationType
|
|
891
|
+
let pageUrl = 'conversation-detail/' + this.uidConvSelected + '/' + encodeURIComponent(this.conversationSelected.conversation_with_fullname) + '/' + converationType
|
|
892
892
|
this.logger.log('[CONVS-LIST-PAGE] pageURL', pageUrl)
|
|
893
893
|
// replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
|
|
894
|
-
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29')
|
|
894
|
+
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'), {replaceUrl: true})
|
|
895
895
|
} else {
|
|
896
896
|
this.logger.log('[CONVS-LIST-PAGE] navigateByUrl this.conversationSelected conversation_with_fullname ', this.conversationSelected)
|
|
897
897
|
this.logger.log('[CONVS-LIST-PAGE] checkPlatformIsMobile(): ', checkPlatformIsMobile())
|
|
898
898
|
this.logger.log('[CONVS-LIST-PAGE] MOBILE (window >= 768) ', this.navService)
|
|
899
899
|
let pageUrl = 'conversation-detail/' + this.uidConvSelected
|
|
900
900
|
if (this.conversationSelected && this.conversationSelected.conversation_with_fullname) {
|
|
901
|
-
pageUrl = 'conversation-detail/' + this.uidConvSelected + '/' + this.conversationSelected.conversation_with_fullname + '/' + converationType
|
|
901
|
+
pageUrl = 'conversation-detail/' + this.uidConvSelected + '/' + encodeURIComponent(this.conversationSelected.conversation_with_fullname) + '/' + converationType
|
|
902
902
|
}
|
|
903
903
|
this.logger.log('[CONVS-LIST-PAGE] setUidConvSelected navigateByUrl--->: ', pageUrl)
|
|
904
904
|
// replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
|
|
905
|
-
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29')
|
|
905
|
+
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'), {replaceUrl: true})
|
|
906
906
|
}
|
|
907
907
|
}
|
|
908
908
|
|
|
@@ -51,9 +51,9 @@ export class ProfileInfoPage implements OnInit {
|
|
|
51
51
|
|
|
52
52
|
isVisiblePAY: boolean;
|
|
53
53
|
teammateStatus = [
|
|
54
|
-
{ id: 1, name: 'Available', avatar: 'assets/
|
|
55
|
-
{ id: 2, name: 'Unavailable', avatar: 'assets/
|
|
56
|
-
{ id: 3, name: 'Inactive', avatar: 'assets/
|
|
54
|
+
{ id: 1, name: 'Available', avatar: 'assets/img/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
|
|
55
|
+
{ id: 2, name: 'Unavailable', avatar: 'assets/img/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
|
|
56
|
+
{ id: 3, name: 'Inactive', avatar: 'assets/img/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
|
|
57
57
|
];
|
|
58
58
|
|
|
59
59
|
constructor(
|
|
@@ -67,11 +67,11 @@ export class BrandService {
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
COMMON: {
|
|
70
|
-
COMPANY_LOGO:"assets/logos/tiledesk_logo.svg",
|
|
71
|
-
COMPANY_LOGO_NO_TEXT:"assets/logos/tiledesk_logo.svg",
|
|
72
|
-
BASE_LOGO: "assets/logos/tiledesk_logo.svg",
|
|
73
|
-
BASE_LOGO_NO_TEXT: "assets/logos/tiledesk_logo.svg",
|
|
74
|
-
BASE_LOGO_WHITE: "assets/logos/tiledesk-logo_new_white.svg",
|
|
70
|
+
COMPANY_LOGO:"assets/img/logos/tiledesk_logo.svg",
|
|
71
|
+
COMPANY_LOGO_NO_TEXT:"assets/img/logos/tiledesk_logo.svg",
|
|
72
|
+
BASE_LOGO: "assets/img/logos/tiledesk_logo.svg",
|
|
73
|
+
BASE_LOGO_NO_TEXT: "assets/img/logos/tiledesk_logo.svg",
|
|
74
|
+
BASE_LOGO_WHITE: "assets/img/logos/tiledesk-logo_new_white.svg",
|
|
75
75
|
BASE_LOGO_WHITE_NO_TEXT:"",
|
|
76
76
|
COMPANY_NAME: "Tiledesk",
|
|
77
77
|
BRAND_NAME: "Tiledesk",
|
|
@@ -88,8 +88,8 @@ 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
|
-
this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals KEY ---------->', key);
|
|
92
|
-
this.logger.debug('[GLOBAL-SET] setVariableFromStorage SET globals VAL ---------->', val);
|
|
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);
|
|
@@ -111,10 +111,8 @@ export class GlobalSettingsService {
|
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
TEMP = getParameterByName(windowContext, 'tiledesk_supportMode');
|
|
114
|
-
console.log('TEMP supportMode', TEMP);
|
|
115
114
|
if (TEMP) {
|
|
116
115
|
globals.supportMode = stringToBoolean(TEMP);
|
|
117
|
-
this.appStorageService.setItem('supportMode', String(globals.supportMode))
|
|
118
116
|
}
|
|
119
117
|
|
|
120
118
|
TEMP = getParameterByName(windowContext, 'tiledesk_lang');
|
|
@@ -140,7 +138,6 @@ export class GlobalSettingsService {
|
|
|
140
138
|
TEMP = getParameterByName(windowContext, 'tiledesk_projectID');
|
|
141
139
|
if (TEMP) {
|
|
142
140
|
globals.projectID = TEMP;
|
|
143
|
-
this.appStorageService.setItem('projectID', TEMP)
|
|
144
141
|
}
|
|
145
142
|
|
|
146
143
|
}
|
|
@@ -93,6 +93,22 @@ 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
|
+
|
|
96
112
|
public getAllLeadsActiveWithLimit(project_id: string, limit: number) {
|
|
97
113
|
const url = this.SERVER_BASE_URL + project_id + '/leads?limit=' + limit + '&with_fullname=true';
|
|
98
114
|
this.logger.log('[TILEDESK-SERVICE] - GET ALL ACTIVE LEADS (LIMIT 10000) - URL', url);
|
|
@@ -22,9 +22,6 @@ import { MatTooltipModule } from '@angular/material/tooltip';
|
|
|
22
22
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
23
23
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
24
24
|
import { SafeHtmlPipe } from '../directives/safe-html.pipe';
|
|
25
|
-
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
|
26
|
-
import { createTranslateLoader } from 'src/chat21-core/utils/utils';
|
|
27
|
-
import { HttpClient } from '@angular/common/http';
|
|
28
25
|
|
|
29
26
|
// import { MessageTextAreaComponent } from '../components/conversation-detail/message-text-area/message-text-area.component'; // MessageTextAreaComponent is part of the declarations ConversationDetailPageModule
|
|
30
27
|
|
|
@@ -143,14 +140,6 @@ import { HttpClient } from '@angular/common/http';
|
|
|
143
140
|
NgSelectModule,
|
|
144
141
|
FormsModule,
|
|
145
142
|
|
|
146
|
-
TranslateModule.forChild({
|
|
147
|
-
loader: {
|
|
148
|
-
provide: TranslateLoader,
|
|
149
|
-
useFactory: (createTranslateLoader),
|
|
150
|
-
deps: [HttpClient]
|
|
151
|
-
}
|
|
152
|
-
})
|
|
153
|
-
|
|
154
143
|
],
|
|
155
144
|
schemas: [
|
|
156
145
|
CUSTOM_ELEMENTS_SCHEMA,
|
|
@@ -129,9 +129,9 @@ export class ProjectPlanUtils {
|
|
|
129
129
|
|
|
130
130
|
//case PAYMENT plan
|
|
131
131
|
if(project && project.isActiveSubscription && project.profile.type=== 'payment'){
|
|
132
|
-
check = false
|
|
133
|
-
}else if(project && !project.isActiveSubscription && project.profile.type=== 'payment'){
|
|
134
132
|
check = true
|
|
133
|
+
}else if(project && !project.isActiveSubscription && project.profile.type=== 'payment'){
|
|
134
|
+
check = false
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
return check
|
|
@@ -7,16 +7,17 @@ export const BRAND_BASE_INFO: { [key: string] : string | boolean} ={
|
|
|
7
7
|
FAVICON: "https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v13-300x300.png",
|
|
8
8
|
META_TITLE:"Tiledesk - Open Source Live Chat",
|
|
9
9
|
DOCS: true,
|
|
10
|
-
LOGOUT_ENABLED: true
|
|
10
|
+
LOGOUT_ENABLED: true,
|
|
11
|
+
DISPLAY_EDIT_PROFILE: true
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export var LOGOS_ITEMS: { [key: string] : { label: string | boolean, icon: string }} ={
|
|
14
|
-
COMPANY_LOGO: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/logos/tiledesk_logo.svg'},
|
|
15
|
-
COMPANY_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/logos/tiledesk_logo_no_text.svg'},
|
|
16
|
-
BASE_LOGO: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/logos/tiledesk_logo.svg'},
|
|
17
|
-
BASE_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/logos/tiledesk_logo_no_text.svg'},
|
|
18
|
-
BASE_LOGO_WHITE: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/logos/tiledesk-logo_new_white.svg'},
|
|
19
|
-
BASE_LOGO_WHITE_NO_TEXT: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/logos/tiledesk-logo_new_white.svg'},
|
|
15
|
+
COMPANY_LOGO: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/img/logos/tiledesk_logo.svg'},
|
|
16
|
+
COMPANY_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/img/logos/tiledesk_logo_no_text.svg'},
|
|
17
|
+
BASE_LOGO: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/img/logos/tiledesk_logo.svg'},
|
|
18
|
+
BASE_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/img/logos/tiledesk_logo_no_text.svg'},
|
|
19
|
+
BASE_LOGO_WHITE: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/img/logos/tiledesk-logo_new_white.svg'},
|
|
20
|
+
BASE_LOGO_WHITE_NO_TEXT: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/img/logos/tiledesk-logo_new_white.svg'},
|
|
20
21
|
BASE_LOGO_GRAY: { label: BRAND_BASE_INFO.BRAND_NAME, icon: 'https://support-pre.tiledesk.com/dashboard/assets/img/logos/tiledesk-logo_new_gray.svg'}
|
|
21
22
|
}
|
|
22
23
|
|
package/src/app/utils/utils.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { ProjectUser } from "src/chat21-core/models/projectUsers";
|
|
2
|
-
|
|
3
1
|
export function getOSCode(key: string, token: string): boolean {
|
|
4
2
|
|
|
5
3
|
if (token) {
|
|
6
4
|
const keys: String[] = token.split("-");
|
|
7
5
|
|
|
8
6
|
let element = keys.find(el => el.includes(key))
|
|
9
|
-
|
|
7
|
+
console.log('keys', keys)
|
|
10
8
|
if(element){
|
|
11
9
|
element = element.split(":")[1]
|
|
12
10
|
if(element && element === "F"){
|
|
@@ -23,19 +21,4 @@ export function getOSCode(key: string, token: string): boolean {
|
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
return false
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
export function hasRole(projectUser: ProjectUser, role: string ): boolean {
|
|
30
|
-
let roles = ['owner', 'admin', 'agent'];
|
|
31
|
-
if(roles.includes(projectUser.role)){
|
|
32
|
-
return true
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if(Array.isArray(projectUser.rolePermissions) && projectUser.rolePermissions.includes(role)){
|
|
36
|
-
return true
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return false
|
|
40
|
-
|
|
41
24
|
}
|
package/src/assets/i18n/ar.json
CHANGED
|
@@ -225,10 +225,6 @@
|
|
|
225
225
|
"admin": "مدير",
|
|
226
226
|
"agent": "وكيل",
|
|
227
227
|
"Conversations": "المحادثات",
|
|
228
|
-
"Monitor": "شاشة",
|
|
229
|
-
"Flows": "التدفّقات",
|
|
230
|
-
"Knowledgebases": "قواعد المعرفة",
|
|
231
|
-
"Whatsappbroadcasts": "نشرات WhatsApp",
|
|
232
228
|
"Apps": "تطبيقات",
|
|
233
229
|
"Analytics": "تحليلات",
|
|
234
230
|
"Activities": "أنشطة",
|
|
@@ -310,11 +306,5 @@
|
|
|
310
306
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"تم إرسال الرسالة أيضًا عبر البريد الإلكتروني 📩"
|
|
311
307
|
},
|
|
312
308
|
"EMOJI_NOT_ELLOWED": "الرموز التعبيرية غير مسموح بها",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "يحتوي الرابط على نطاق غير مسموح"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "افتح تذكرة",
|
|
316
|
-
"DESCRIPTION": "هل تؤكد أنك تريد فتح تذكرة لهذه المحادثة؟",
|
|
317
|
-
"CONFIRM": "تأكيد",
|
|
318
|
-
"CLOSE": "إغلاق"
|
|
319
|
-
}
|
|
309
|
+
"DOMAIN_NOT_ALLOWED": "يحتوي الرابط على نطاق غير مسموح"
|
|
320
310
|
}
|
package/src/assets/i18n/az.json
CHANGED
|
@@ -225,10 +225,6 @@
|
|
|
225
225
|
"admin": "Administrator",
|
|
226
226
|
"agent": "Agent",
|
|
227
227
|
"Conversations": "Söhbətlər",
|
|
228
|
-
"Monitor": "Monitor",
|
|
229
|
-
"Flows": "Axınlar",
|
|
230
|
-
"Knowledgebases": "Bilik bazaları",
|
|
231
|
-
"Whatsappbroadcasts": "WhatsApp Yayınları",
|
|
232
228
|
"Apps": "Proqramlar",
|
|
233
229
|
"Analytics": "Analitika",
|
|
234
230
|
"Activities": "Fəaliyyətlər",
|
|
@@ -310,11 +306,5 @@
|
|
|
310
306
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Mesaj e-poçt vasitəsilə də göndərilib 📩"
|
|
311
307
|
},
|
|
312
308
|
"EMOJI_NOT_ELLOWED": "Emoji icazə verilmir",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "URL icazə verilməyən domeni ehtiva edir"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Bilet aç",
|
|
316
|
-
"DESCRIPTION": "Bu söhbət üçün bilet açmaq istədiyinizi təsdiqləyirsinizmi?",
|
|
317
|
-
"CONFIRM": "Təsdiqlə",
|
|
318
|
-
"CLOSE": "Bağla"
|
|
319
|
-
}
|
|
309
|
+
"DOMAIN_NOT_ALLOWED": "URL icazə verilməyən domeni ehtiva edir"
|
|
320
310
|
}
|
package/src/assets/i18n/de.json
CHANGED
|
@@ -225,10 +225,6 @@
|
|
|
225
225
|
"admin": "Administrator",
|
|
226
226
|
"agent": "Agent",
|
|
227
227
|
"Conversations": "Gespräche",
|
|
228
|
-
"Monitor": "Monitor",
|
|
229
|
-
"Flows": "Flows",
|
|
230
|
-
"Knowledgebases": "Wissensdatenbanken",
|
|
231
|
-
"Whatsappbroadcasts": "WhatsApp-Broadcasts",
|
|
232
228
|
"Apps": "Anwendungen",
|
|
233
229
|
"Analytics": "Analytik",
|
|
234
230
|
"Activities": "Aktivitäten",
|
|
@@ -310,11 +306,5 @@
|
|
|
310
306
|
"SEND_EMAIL_SUCCESS_OFFLINE_MESSAGE":"Nachricht auch per E-Mail gesendet 📩"
|
|
311
307
|
},
|
|
312
308
|
"EMOJI_NOT_ELLOWED": "Emoji nicht erlaubt",
|
|
313
|
-
"DOMAIN_NOT_ALLOWED": "Die URL enthält eine nicht erlaubte Domain"
|
|
314
|
-
"TICKET": {
|
|
315
|
-
"OPEN_TICKET": "Ticket öffnen",
|
|
316
|
-
"DESCRIPTION": "Bestätigen Sie, dass Sie ein Ticket für dieses Gespräch eröffnen möchten?",
|
|
317
|
-
"CONFIRM": "Bestätigen",
|
|
318
|
-
"CLOSE": "Schließen"
|
|
319
|
-
}
|
|
309
|
+
"DOMAIN_NOT_ALLOWED": "Die URL enthält eine nicht erlaubte Domain"
|
|
320
310
|
}
|