@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.
Files changed (153) hide show
  1. package/CHANGELOG.md +6 -48
  2. package/angular.json +0 -1
  3. package/package.json +1 -1
  4. package/src/app/app.component.ts +13 -68
  5. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.scss +3 -3
  6. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +1 -1
  7. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +1 -1
  8. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.html +1 -1
  9. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.ts +4 -4
  10. package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.scss +3 -3
  11. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +9 -9
  12. package/src/app/components/bubbleMessageInfo-popover/bubbleinfo-popover.component.html +1 -1
  13. package/src/app/components/canned-response/canned-response.component.html +23 -26
  14. package/src/app/components/canned-response/canned-response.component.scss +2 -0
  15. package/src/app/components/canned-response/canned-response.component.ts +1 -3
  16. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +8 -8
  17. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +1 -24
  18. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +0 -30
  19. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +16 -29
  20. package/src/app/components/copilot-popover/copilot-popover.component.html +1 -1
  21. package/src/app/components/navbar/navbar.component.html +3 -3
  22. package/src/app/components/navbar/navbar.component.ts +38 -29
  23. package/src/app/components/project-item/project-item.component.ts +70 -52
  24. package/src/app/components/sidebar/sidebar.component.html +47 -67
  25. package/src/app/components/sidebar/sidebar.component.ts +117 -92
  26. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +4 -4
  27. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +14 -16
  28. package/src/app/modals/create-ticket/create-ticket.page.html +6 -6
  29. package/src/app/modals/create-ticket/create-ticket.page.ts +6 -8
  30. package/src/app/modals/loader-preview/loader-preview.page.ts +1 -1
  31. package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.scss +1 -1
  32. package/src/app/pages/conversation-detail/conversation-detail.page.html +3 -7
  33. package/src/app/pages/conversation-detail/conversation-detail.page.scss +1 -1
  34. package/src/app/pages/conversation-detail/conversation-detail.page.ts +4 -63
  35. package/src/app/pages/conversations-list/conversations-list.page.ts +8 -8
  36. package/src/app/pages/profile-info/profile-info.page.ts +3 -3
  37. package/src/app/services/brand/brand.service.ts +5 -5
  38. package/src/app/services/global-settings/global-settings.service.ts +2 -5
  39. package/src/app/services/tiledesk/tiledesk.service.ts +16 -0
  40. package/src/app/shared/shared.module.ts +0 -11
  41. package/src/app/utils/project-utils.ts +2 -2
  42. package/src/app/utils/utils-resources.ts +8 -7
  43. package/src/app/utils/utils.ts +1 -18
  44. package/src/assets/i18n/ar.json +1 -11
  45. package/src/assets/i18n/az.json +1 -11
  46. package/src/assets/i18n/de.json +1 -11
  47. package/src/assets/i18n/en.json +1 -11
  48. package/src/assets/i18n/es.json +1 -11
  49. package/src/assets/i18n/fr.json +1 -11
  50. package/src/assets/i18n/it.json +3 -13
  51. package/src/assets/i18n/kk.json +1 -11
  52. package/src/assets/i18n/pt.json +1 -11
  53. package/src/assets/i18n/ru.json +1 -11
  54. package/src/assets/i18n/sr.json +1 -11
  55. package/src/assets/i18n/sv.json +1 -11
  56. package/src/assets/i18n/tr.json +1 -11
  57. package/src/assets/i18n/uk.json +1 -11
  58. package/src/assets/i18n/uz.json +1 -12
  59. package/src/chat-config-template.json +0 -1
  60. package/src/chat-config.json +0 -1
  61. package/src/chat21-core/models/{projectUsers.ts → project_user.ts} +18 -12
  62. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +1 -1
  63. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +1 -1
  64. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -3
  65. package/src/chat21-core/utils/constants.ts +2 -2
  66. package/src/chat21-core/utils/utils.ts +2 -10
  67. package/src/app/services/project_users/project-users.service.spec.ts +0 -16
  68. package/src/app/services/project_users/project-users.service.ts +0 -63
  69. package/src/app/utils/permissions.constants.ts +0 -138
  70. package/src/assets/js/agentDesktop-sdk.js +0 -47
  71. /package/src/assets/{images → img}/channel_icons/chat21.svg +0 -0
  72. /package/src/assets/{images → img}/channel_icons/direct.svg +0 -0
  73. /package/src/assets/{images → img}/channel_icons/email-logo.svg +0 -0
  74. /package/src/assets/{images → img}/channel_icons/form-logo_v2.svg +0 -0
  75. /package/src/assets/{images → img}/channel_icons/group.svg +0 -0
  76. /package/src/assets/{images → img}/channel_icons/messenger-logo.svg +0 -0
  77. /package/src/assets/{images → img}/channel_icons/telegram-logo.svg +0 -0
  78. /package/src/assets/{images → img}/channel_icons/voice.svg +0 -0
  79. /package/src/assets/{images → img}/channel_icons/whatsapp-logo.svg +0 -0
  80. /package/src/assets/{images → img}/default-avatar-x-select.png +0 -0
  81. /package/src/assets/{images → img}/f21ico-done.svg +0 -0
  82. /package/src/assets/{images → img}/f21ico-done_all.svg +0 -0
  83. /package/src/assets/{images → img}/f21ico-schedule.svg +0 -0
  84. /package/src/assets/{images → img}/file-alt-solid.png +0 -0
  85. /package/src/assets/{images → img}/icons/copilot.svg +0 -0
  86. /package/src/assets/{images → img}/json-file.svg +0 -0
  87. /package/src/assets/{images → img}/language_flag/ar.png +0 -0
  88. /package/src/assets/{images → img}/language_flag/az.png +0 -0
  89. /package/src/assets/{images → img}/language_flag/bg.png +0 -0
  90. /package/src/assets/{images → img}/language_flag/ca.png +0 -0
  91. /package/src/assets/{images → img}/language_flag/cs.png +0 -0
  92. /package/src/assets/{images → img}/language_flag/da.png +0 -0
  93. /package/src/assets/{images → img}/language_flag/de.png +0 -0
  94. /package/src/assets/{images → img}/language_flag/el.png +0 -0
  95. /package/src/assets/{images → img}/language_flag/en.png +0 -0
  96. /package/src/assets/{images → img}/language_flag/es.png +0 -0
  97. /package/src/assets/{images → img}/language_flag/fa.png +0 -0
  98. /package/src/assets/{images → img}/language_flag/fi.png +0 -0
  99. /package/src/assets/{images → img}/language_flag/fr.png +0 -0
  100. /package/src/assets/{images → img}/language_flag/he.png +0 -0
  101. /package/src/assets/{images → img}/language_flag/hi.png +0 -0
  102. /package/src/assets/{images → img}/language_flag/hr.png +0 -0
  103. /package/src/assets/{images → img}/language_flag/hu.png +0 -0
  104. /package/src/assets/{images → img}/language_flag/id.png +0 -0
  105. /package/src/assets/{images → img}/language_flag/it.png +0 -0
  106. /package/src/assets/{images → img}/language_flag/ja.png +0 -0
  107. /package/src/assets/{images → img}/language_flag/kk.png +0 -0
  108. /package/src/assets/{images → img}/language_flag/ko.png +0 -0
  109. /package/src/assets/{images → img}/language_flag/ml-IN.png +0 -0
  110. /package/src/assets/{images → img}/language_flag/ne-NP.png +0 -0
  111. /package/src/assets/{images → img}/language_flag/nl.png +0 -0
  112. /package/src/assets/{images → img}/language_flag/no.png +0 -0
  113. /package/src/assets/{images → img}/language_flag/pl.png +0 -0
  114. /package/src/assets/{images → img}/language_flag/pt-BR.png +0 -0
  115. /package/src/assets/{images → img}/language_flag/pt.png +0 -0
  116. /package/src/assets/{images → img}/language_flag/ro.png +0 -0
  117. /package/src/assets/{images → img}/language_flag/ru.png +0 -0
  118. /package/src/assets/{images → img}/language_flag/sk.png +0 -0
  119. /package/src/assets/{images → img}/language_flag/sl.png +0 -0
  120. /package/src/assets/{images → img}/language_flag/sr.png +0 -0
  121. /package/src/assets/{images → img}/language_flag/sv.png +0 -0
  122. /package/src/assets/{images → img}/language_flag/ta.png +0 -0
  123. /package/src/assets/{images → img}/language_flag/th.png +0 -0
  124. /package/src/assets/{images → img}/language_flag/tr.png +0 -0
  125. /package/src/assets/{images → img}/language_flag/uk.png +0 -0
  126. /package/src/assets/{images → img}/language_flag/uz.png +0 -0
  127. /package/src/assets/{images → img}/language_flag/vi.png +0 -0
  128. /package/src/assets/{images → img}/language_flag/zh-CN.png +0 -0
  129. /package/src/assets/{images → img}/language_flag/zh-TW.png +0 -0
  130. /package/src/assets/{logos → img/logos}/chat21-logo.png +0 -0
  131. /package/src/assets/{logos → img/logos}/logo.png +0 -0
  132. /package/src/assets/{logos → img/logos}/tiledesk-logo_new_white.svg +0 -0
  133. /package/src/assets/{logos → img/logos}/tiledesk-solo-logo.png +0 -0
  134. /package/src/assets/{logos → img/logos}/tiledesk_logo.svg +0 -0
  135. /package/src/assets/{logos → img/logos}/tiledesk_logo_no_text.svg +0 -0
  136. /package/src/assets/{logos → img/logos}/tiledesk_logo_white_small.svg +0 -0
  137. /package/src/assets/{images → img}/no_conversation.jpg +0 -0
  138. /package/src/assets/{images → img}/no_image.png +0 -0
  139. /package/src/assets/{images → img}/no_image_user.png +0 -0
  140. /package/src/assets/{images → img}/pin.svg +0 -0
  141. /package/src/assets/{images → img}/pinned.svg +0 -0
  142. /package/src/assets/{images → img}/priority_icons/high.svg +0 -0
  143. /package/src/assets/{images → img}/priority_icons/high_v2.svg +0 -0
  144. /package/src/assets/{images → img}/priority_icons/low.svg +0 -0
  145. /package/src/assets/{images → img}/priority_icons/low_v2.svg +0 -0
  146. /package/src/assets/{images → img}/priority_icons/medium.svg +0 -0
  147. /package/src/assets/{images → img}/priority_icons/medium_v2.svg +0 -0
  148. /package/src/assets/{images → img}/priority_icons/urgent.svg +0 -0
  149. /package/src/assets/{images → img}/priority_icons/urgent_v2.svg +0 -0
  150. /package/src/assets/{images → img}/teammate-status/avaible.svg +0 -0
  151. /package/src/assets/{images → img}/teammate-status/inactive.svg +0 -0
  152. /package/src/assets/{images → img}/teammate-status/unavaible.svg +0 -0
  153. /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/images/default-avatar-x-select.png'">
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/images/default-avatar-x-select.png'">
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/images/default-avatar-x-select.png" alt="">
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/images/default-avatar-x-select.png'">
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/images/default-avatar-x-select.png'">
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/images/default-avatar-x-select.png" alt="">
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/images/priority_icons/urgent_v2.svg'
45
+ avatar: 'assets/img/priority_icons/urgent_v2.svg'
47
46
  },
48
47
  {
49
48
  id: 2,
50
49
  name: 'high',
51
- avatar: 'assets/images/priority_icons/high_v2.svg '
50
+ avatar: 'assets/img/priority_icons/high_v2.svg '
52
51
  },
53
52
  {
54
53
  id: 3,
55
54
  name: 'medium',
56
- avatar: 'assets/images/priority_icons/medium_v2.svg'
55
+ avatar: 'assets/img/priority_icons/medium_v2.svg'
57
56
  },
58
57
  {
59
58
  id: 4,
60
59
  name: 'low',
61
- avatar: 'assets/images/priority_icons/low_v2.svg'
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.projectUsersService.getProjectUsersByProjectId(projctid)
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.projectUsersService.getProjectUsersByProjectId( projctid)
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/images/file-alt-solid.png')
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/images/whatsapp_background.png);
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
- [roles]="rolesCanned"
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>
@@ -5,7 +5,7 @@
5
5
  }
6
6
 
7
7
  .image-splash-page {
8
- background: url("../../../assets/images/no_conversation.jpg");
8
+ background: url("../../../assets/img/no_conversation.jpg");
9
9
  width: 50%;
10
10
  height: 50%;
11
11
  position: relative;
@@ -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 { ProjectUsersService } from 'src/app/services/project_users/project-users.service';
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.projectUser = await this.projectUsersService.getProjectUserByProjectId(project._id)
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 = ![file-image-placehoder](./assets/images/file-alt-solid.png) + [${metadata.name}](${metadata.src})
1107
+ // msg = ![file-image-placehoder](./assets/img/file-alt-solid.png) + [${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/images/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
113
- { id: 2, name: 'Unavailable', avatar: 'assets/images/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
114
- { id: 3, name: 'Inactive', avatar: 'assets/images/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
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
- // console.log('[CONVS-LIST-PAGE] - GET STORED PROJECT ', projectObjct)
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').replace( /#/g, "%23" ), {replaceUrl: true})
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').replace( /#/g, "%23" ), {replaceUrl: true})
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/images/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
55
- { id: 2, name: 'Unavailable', avatar: 'assets/images/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
56
- { id: 3, name: 'Inactive', avatar: 'assets/images/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
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
 
@@ -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
- // console.log('keys', keys)
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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }