@chat21/chat21-ionic 3.4.33 → 3.4.34
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 +3 -0
- package/package.json +1 -1
- package/src/app/app.component.ts +3 -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 +1 -1
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +3 -0
- 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 +3 -3
- package/src/app/components/navbar/navbar.component.ts +29 -39
- package/src/app/components/project-item/project-item.component.ts +1 -1
- package/src/app/components/sidebar/sidebar.component.html +64 -64
- package/src/app/components/sidebar/sidebar.component.ts +110 -119
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +2 -1
- package/src/app/modals/create-ticket/create-ticket.page.ts +4 -2
- package/src/app/pages/conversation-detail/conversation-detail.page.html +4 -2
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +45 -3
- package/src/app/pages/conversations-list/conversations-list.page.html +2 -0
- package/src/app/pages/conversations-list/conversations-list.page.ts +36 -4
- 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 +1 -1
- package/src/app/services/tiledesk/tiledesk.service.ts +0 -17
- package/src/app/utils/permissions.constants.ts +138 -0
- package/src/app/utils/project-utils.ts +2 -2
- package/src/app/utils/utils.ts +17 -0
- package/src/assets/i18n/ar.json +4 -0
- package/src/assets/i18n/az.json +4 -0
- package/src/assets/i18n/de.json +4 -0
- package/src/assets/i18n/en.json +4 -0
- package/src/assets/i18n/es.json +4 -0
- package/src/assets/i18n/fr.json +4 -0
- package/src/assets/i18n/it.json +4 -0
- package/src/assets/i18n/kk.json +4 -0
- package/src/assets/i18n/pt.json +4 -0
- package/src/assets/i18n/ru.json +4 -0
- package/src/assets/i18n/sr.json +4 -0
- package/src/assets/i18n/sv.json +4 -0
- package/src/assets/i18n/tr.json +4 -0
- package/src/assets/i18n/uk.json +4 -0
- package/src/assets/i18n/uz.json +4 -0
- package/src/chat21-core/models/{project_user.ts → projectUsers.ts} +13 -11
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +3 -0
|
@@ -57,25 +57,27 @@
|
|
|
57
57
|
<!-- ------------------------------------------- -->
|
|
58
58
|
<!-- HOME (click)="goToHome()"" -->
|
|
59
59
|
<!-- ------------------------------------------- -->
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
<
|
|
64
|
-
<
|
|
65
|
-
<
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
60
|
+
<ng-container *ngIf="roles?.[PERMISSIONS.HOME_READ]">
|
|
61
|
+
<div matTooltip="Home" #tooltip="matTooltip" matTooltipPosition='right'
|
|
62
|
+
matTooltipHideDelay="100" matTooltipClass="custom-mat-tooltip">
|
|
63
|
+
<a target="_self" href="{{ URLS.HOME }}" class="customAncor">
|
|
64
|
+
<span>
|
|
65
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="24px" height="24px" fill="none">
|
|
66
|
+
<path d="M240-200h120v-240h240v240h120v-360L480-740 240-560v360Zm-80 80v-480l320-240 320 240v480H520v-240h-80v240H160Zm320-350Z" />
|
|
67
|
+
</svg>
|
|
68
|
+
</span>
|
|
69
|
+
</a>
|
|
70
|
+
</div>
|
|
71
|
+
</ng-container>
|
|
70
72
|
|
|
71
73
|
<!-- -------------------------------------------------------- -->
|
|
72
74
|
<!-- @ Knowledge Bases -->
|
|
73
75
|
<!-- -------------------------------------------------------- -->
|
|
74
|
-
<ng-container *ngIf="USER_ROLE !== 'agent' && isVisibleKNB">
|
|
76
|
+
<ng-container *ngIf="USER_ROLE !== 'agent' && isVisibleKNB && roles?.[PERMISSIONS.KB_READ]">
|
|
75
77
|
<div id="bot-anchor-wpr" matTooltipClass="custom-mat-tooltip"
|
|
76
|
-
matTooltip="
|
|
78
|
+
matTooltip="{{translationsMap?.get('Knowledgebases')}}" #tooltip="matTooltip" matTooltipPosition='right'
|
|
77
79
|
matTooltipHideDelay="100" routerLinkActive="item-active">
|
|
78
|
-
<a target="_self" href="{{
|
|
80
|
+
<a target="_self" href="{{ URLS.KNOWLEDGEBASE }}" class="customAncor">
|
|
79
81
|
<span>
|
|
80
82
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="24px" height="24px" fill="none">
|
|
81
83
|
<path d="M390-120q-51 0-88-35.5T260-241q-60-8-100-53t-40-106q0-21 5.5-41.5T142-480q-11-18-16.5-38t-5.5-42q0-61 40-105.5t99-52.5q3-51 41-86.5t90-35.5q26 0 48.5 10t41.5 27q18-17 41-27t49-10q52 0 89.5 35t40.5 86q59 8 99.5 53T840-560q0 22-5.5 42T818-480q11 18 16.5 38.5T840-400q0 62-40.5 106.5T699-241q-5 50-41.5 85.5T570-120q-25 0-48.5-9.5T480-156q-19 17-42 26.5t-48 9.5Zm130-590v460q0 21 14.5 35.5T570-200q20 0 34.5-16t15.5-36q-21-8-38.5-21.5T550-306q-10-14-7.5-30t16.5-26q14-10 30-7.5t26 16.5q11 16 28 24.5t37 8.5q33 0 56.5-23.5T760-400q0-5-.5-10t-2.5-10q-17 10-36.5 15t-40.5 5q-17 0-28.5-11.5T640-440q0-17 11.5-28.5T680-480q33 0 56.5-23.5T760-560q0-33-23.5-56T680-640q-11 18-28.5 31.5T613-587q-16 6-31-1t-20-23q-5-16 1.5-31t22.5-20q15-5 24.5-18t9.5-30q0-21-14.5-35.5T570-760q-21 0-35.5 14.5T520-710Zm-80 460v-460q0-21-14.5-35.5T390-760q-21 0-35.5 14.5T340-710q0 16 9 29.5t24 18.5q16 5 23 20t2 31q-6 16-21 23t-31 1q-21-8-38.5-21.5T279-640q-32 1-55.5 24.5T200-560q0 33 23.5 56.5T280-480q17 0 28.5 11.5T320-440q0 17-11.5 28.5T280-400q-21 0-40.5-5T203-420q-2 5-2.5 10t-.5 10q0 33 23.5 56.5T280-320q20 0 37-8.5t28-24.5q10-14 26-16.5t30 7.5q14 10 16.5 26t-7.5 30q-14 19-32 33t-39 22q1 20 16 35.5t35 15.5q21 0 35.5-14.5T440-250Zm40-230Z" />
|
|
@@ -89,10 +91,10 @@
|
|
|
89
91
|
<!-- ---------------------------------- -->
|
|
90
92
|
<!-- Bot (click)="goToBots()" -->
|
|
91
93
|
<!-- ---------------------------------- -->
|
|
92
|
-
<ng-container *ngIf="USER_ROLE !== 'agent'">
|
|
93
|
-
<div id="bot-anchor-wpr" matTooltipClass="custom-mat-tooltip" matTooltip="
|
|
94
|
+
<ng-container *ngIf="USER_ROLE !== 'agent' && roles?.[PERMISSIONS.FLOWS_READ]">
|
|
95
|
+
<div id="bot-anchor-wpr" matTooltipClass="custom-mat-tooltip" matTooltip="{{translationsMap?.get('Flows')}}"
|
|
94
96
|
#tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
|
|
95
|
-
<a target="_self" href="{{
|
|
97
|
+
<a target="_self" href="{{ URLS.BOTS }}" id="bot-anchor" #botbtn class="customAncor">
|
|
96
98
|
<span class="bot-icon-wpr">
|
|
97
99
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"width="24px" height="24px" fill="none">
|
|
98
100
|
<path d="M12,21.9c-1,0-1.8-0.3-2.5-1c-0.7-0.7-1-1.5-1-2.5c0-0.8,0.3-1.6,0.8-2.2c0.5-0.6,1.2-1,1.9-1.2v-2.3H5.5V9H3 V2.5h6.4V9H7v2.3h10V8.9c-0.8-0.2-1.4-0.6-1.9-1.2c-0.5-0.6-0.8-1.3-0.8-2.2c0-1,0.3-1.8,1-2.5c0.7-0.7,1.5-1,2.5-1 c1,0,1.8,0.3,2.5,1c0.7,0.7,1,1.5,1,2.5c0,0.8-0.3,1.6-0.8,2.2c-0.5,0.6-1.2,1-1.9,1.2v3.9h-5.7v2.3c0.8,0.2,1.4,0.6,1.9,1.2 c0.5,0.6,0.8,1.3,0.8,2.2c0,1-0.3,1.8-1,2.5C13.8,21.6,13,21.9,12,21.9z M17.8,7.5c0.5,0,1-0.2,1.4-0.6c0.4-0.4,0.6-0.8,0.6-1.4 c0-0.5-0.2-1-0.6-1.4c-0.4-0.4-0.8-0.6-1.4-0.6c-0.5,0-1,0.2-1.4,0.6C16,4.5,15.8,5,15.8,5.5c0,0.5,0.2,1,0.6,1.4S17.2,7.5,17.8,7.5 z M4.5,7.5H8V4H4.5C4.5,4,4.5,7.5,4.5,7.5z M12,20.4c0.5,0,1-0.2,1.4-0.6S14,19,14,18.5s-0.2-1-0.6-1.4c-0.4-0.4-0.8-0.6-1.4-0.6 c-0.5,0-1,0.2-1.4,0.6S10,17.9,10,18.5s0.2,1,0.6,1.4C11,20.2,11.5,20.4,12,20.4z" />
|
|
@@ -105,10 +107,10 @@
|
|
|
105
107
|
<!-- ------------------------------------------- -->
|
|
106
108
|
<!-- Conversations (MONITOR) (click)="goToConversations()" -->
|
|
107
109
|
<!-- ------------------------------------------- -->
|
|
108
|
-
<ng-container *ngIf="isVisibleMON">
|
|
109
|
-
<div matTooltipClass="custom-mat-tooltip" matTooltip="Monitor"
|
|
110
|
+
<ng-container *ngIf="isVisibleMON && roles?.[PERMISSIONS.INBOX_READ]">
|
|
111
|
+
<div matTooltipClass="custom-mat-tooltip" matTooltip="{{translationsMap?.get('Monitor')}}"
|
|
110
112
|
#tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
|
|
111
|
-
<a target="_self" href="{{
|
|
113
|
+
<a target="_self" href="{{ URLS.MONITOR }}" class="customAncor">
|
|
112
114
|
<!-- <i class="material-icons sidebar-icons">forum</i> -->
|
|
113
115
|
<span>
|
|
114
116
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="24px" height="24px" fill="none">
|
|
@@ -123,33 +125,27 @@
|
|
|
123
125
|
|
|
124
126
|
<div class="nav-custom sidebar-bottom">
|
|
125
127
|
|
|
126
|
-
<!--
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
</svg>
|
|
140
|
-
</span>
|
|
141
|
-
</a>
|
|
142
|
-
</div>
|
|
143
|
-
</ng-container>
|
|
144
|
-
<!-- </ng-container> -->
|
|
128
|
+
<!-- ----------------------------- -->
|
|
129
|
+
<!-- WA broadcasts -->
|
|
130
|
+
<!-- ----------------------------- -->
|
|
131
|
+
<ng-container *ngIf="isVisibleAUT && roles?.[PERMISSIONS.AUTOMATIONSLOG_READ]">
|
|
132
|
+
<div matTooltipClass="custom-mat-tooltip" matTooltip="{{translationsMap?.get('WhatsAppBroadcasts')}}"
|
|
133
|
+
#tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
|
|
134
|
+
<a target="_self" href="{{ URLS.WHATSAPP }}" class="customAncor">
|
|
135
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 48 48" height="24" width="24">
|
|
136
|
+
<path fill="none" fill-rule="evenodd" d="M40.6666 7.3156c-2.1744 -2.1755 -4.7577 -3.8995 -7.6012 -5.0726C30.222 1.0699 27.1745 0.4708 24.0986 0.4801 11.1899 0.4801 0.6816 10.936 0.6763 23.79c-0.0057 4.093 1.0733 8.1145 3.1269 11.655L0.48 47.52l12.4163 -3.2413c3.4367 1.8619 7.2841 2.8363 11.193 2.835h0.0094c12.9076 0 23.415 -10.4569 23.4212 -23.31 0.0078 -3.0653 -0.594 -6.1017 -1.7706 -8.9324 -1.1766 -2.8306 -2.9043 -5.399 -5.0827 -7.5557ZM24.0987 43.1794h-0.0084c-3.4845 0.001 -6.9057 -0.9315 -9.9078 -2.7007l-0.7109 -0.42 -7.3678 1.9236 1.9666 -7.1494 -0.463 -0.735C5.659 31.0132 4.6267 27.4386 4.6306 23.79c0 -10.6815 8.7371 -19.3724 19.4754 -19.3724 5.1513 -0.0092 10.0953 2.0281 13.7446 5.6638 3.6493 3.6357 5.705 8.572 5.715 13.7233 -0.0041 10.6827 -8.737 19.3747 -19.4669 19.3747Zm10.6774 -14.51c-0.5849 -0.2919 -3.465 -1.701 -3.9984 -1.8952 -0.5334 -0.1943 -0.9271 -0.292 -1.3167 0.2919 -0.3895 0.5837 -1.512 1.89 -1.8532 2.2837 -0.3413 0.3938 -0.6826 0.4368 -1.2675 0.1449 -0.5847 -0.2918 -2.4716 -0.9062 -4.707 -2.8906 -1.7399 -1.5446 -2.9137 -3.4513 -3.255 -4.0341 -0.3413 -0.5828 -0.0368 -0.8988 0.2561 -1.1886 0.2636 -0.2614 0.5849 -0.6804 0.8779 -1.0206 0.2929 -0.3403 0.3906 -0.5839 0.5848 -0.9723 0.1943 -0.3885 0.0976 -0.7288 -0.0483 -1.0195 -0.1459 -0.2909 -1.3167 -3.1585 -1.8039 -4.325 -0.4757 -1.1361 -0.9576 -0.9818 -1.3167 -0.9996 -0.3413 -0.0168 -0.7349 -0.021 -1.1225 -0.021 -0.2961 0.0077 -0.5875 0.0765 -0.856 0.2018 -0.2685 0.1253 -0.5081 0.3048 -0.7043 0.5269 -0.5364 0.5838 -2.0485 1.995 -2.0485 4.8594s2.1001 5.6364 2.3898 6.0248c0.2899 0.3886 4.1265 6.2717 9.997 8.7948 1.0901 0.4669 2.204 0.8763 3.337 1.2264 1.4017 0.4431 2.6775 0.3812 3.6854 0.2311 1.1246 -0.167 3.4651 -1.4092 3.9512 -2.7699 0.4862 -1.3608 0.4872 -2.5263 0.3413 -2.7689 -0.146 -0.2426 -0.5366 -0.3895 -1.1225 -0.6804Z" clip-rule="evenodd" stroke-width="1"></path>
|
|
137
|
+
</svg>
|
|
138
|
+
</a>
|
|
139
|
+
</div>
|
|
140
|
+
</ng-container>
|
|
145
141
|
|
|
146
142
|
<!-- ------------------------------------------- -->
|
|
147
143
|
<!-- CONTACTS (LEADS) (click)="goToContacts()" -->
|
|
148
144
|
<!-- ------------------------------------------- -->
|
|
149
|
-
<ng-container *ngIf="isVisibleCNT">
|
|
150
|
-
<div matTooltipClass="custom-mat-tooltip" matTooltip="{{
|
|
145
|
+
<ng-container *ngIf="isVisibleCNT && roles?.[PERMISSIONS.LEADS_READ]">
|
|
146
|
+
<div matTooltipClass="custom-mat-tooltip" matTooltip="{{translationsMap?.get('LABEL_CONTACTS')}}"
|
|
151
147
|
#tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
|
|
152
|
-
<a target="_self" href="{{
|
|
148
|
+
<a target="_self" href="{{ URLS.CONTACTS }}" class="customAncor">
|
|
153
149
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="24px" height="24px" fill="none">
|
|
154
150
|
<path d="M160-40v-80h640v80H160Zm0-800v-80h640v80H160Zm320 400q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35ZM160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm70-80q45-56 109-88t141-32q77 0 141 32t109 88h70v-480H160v480h70Zm118 0h264q-29-20-62.5-30T480-280q-36 0-69.5 10T348-240Zm132-280q-17 0-28.5-11.5T440-560q0-17 11.5-28.5T480-600q17 0 28.5 11.5T520-560q0 17-11.5 28.5T480-520Zm0 40Z" />
|
|
155
151
|
</svg>
|
|
@@ -161,10 +157,10 @@
|
|
|
161
157
|
<!-- ------------------------------------------- -->
|
|
162
158
|
<!-- ANALYTICS (click)="goToAnalytics()" -->
|
|
163
159
|
<!-- ------------------------------------------- -->
|
|
164
|
-
<ng-container *ngIf="
|
|
165
|
-
<div matTooltipClass="custom-mat-tooltip" matTooltip="{{
|
|
160
|
+
<ng-container *ngIf="USER_ROLE !== 'agent' && isVisibleANA && roles?.[PERMISSIONS.ANALYTICS_READ]">
|
|
161
|
+
<div matTooltipClass="custom-mat-tooltip" matTooltip="{{translationsMap?.get('Analytics')}}"
|
|
166
162
|
#tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" >
|
|
167
|
-
<a target="_self" href="{{
|
|
163
|
+
<a target="_self" href="{{ URLS.ANALYTICS }}" class="customAncor">
|
|
168
164
|
<!-- <i class="material-icons sidebar-icons">trending_up</i> -->
|
|
169
165
|
<!-- <i class="material-icons sidebar-icons"> analytics </i> -->
|
|
170
166
|
<!-- <i class="material-icons sidebar-icons"> bar_chart </i> -->
|
|
@@ -180,10 +176,10 @@
|
|
|
180
176
|
<!-- ------------------------------------------- -->
|
|
181
177
|
<!-- ACTIVITIES (click)="goToActivities()" -->
|
|
182
178
|
<!-- ------------------------------------------- -->
|
|
183
|
-
<ng-container *ngIf="isVisibleACT">
|
|
179
|
+
<ng-container *ngIf="isVisibleACT && roles?.[PERMISSIONS.ACTIVITIES_READ]">
|
|
184
180
|
<div *ngIf="USER_ROLE !== 'agent'" matTooltipClass="custom-mat-tooltip"
|
|
185
|
-
matTooltip="{{
|
|
186
|
-
<a target="_self" href="{{
|
|
181
|
+
matTooltip="{{translationsMap?.get('Activities')}}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
|
|
182
|
+
<a target="_self" href="{{ URLS.ACTIVITIES }}" class="customAncor">
|
|
187
183
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="24px" height="24px" fill="none">
|
|
188
184
|
<path d="M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h168q13-36 43.5-58t68.5-22q38 0 68.5 22t43.5 58h168q33 0 56.5 23.5T840-760v560q0 33-23.5 56.5T760-120H200Zm0-80h560v-560H200v560Zm80-80h280v-80H280v80Zm0-160h400v-80H280v80Zm0-160h400v-80H280v80Zm200-190q13 0 21.5-8.5T510-820q0-13-8.5-21.5T480-850q-13 0-21.5 8.5T450-820q0 13 8.5 21.5T480-790ZM200-200v-560 560Z" />
|
|
189
185
|
</svg>
|
|
@@ -194,26 +190,30 @@
|
|
|
194
190
|
<!-- ------------------------------------------- -->
|
|
195
191
|
<!-- REQUESTS HISTORY (click)="goToHistory()" -->
|
|
196
192
|
<!-- ------------------------------------------- -->
|
|
197
|
-
<
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
<
|
|
201
|
-
<
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
193
|
+
<ng-container *ngIf="roles?.[PERMISSIONS.HISTORY_READ]">
|
|
194
|
+
<div matTooltipClass="custom-mat-tooltip" matTooltip="{{translationsMap?.get('History')}}"
|
|
195
|
+
#tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
|
|
196
|
+
<a target="_self" href="{{URLS.HISTORY}}" class="customAncor">
|
|
197
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="24px" height="24px" fill="none">
|
|
198
|
+
<path d="M480-120q-138 0-240.5-91.5T122-440h82q14 104 92.5 172T480-200q117 0 198.5-81.5T760-480q0-117-81.5-198.5T480-760q-69 0-129 32t-101 88h110v80H120v-240h80v94q51-64 124.5-99T480-840q75 0 140.5 28.5t114 77q48.5 48.5 77 114T840-480q0 75-28.5 140.5t-77 114q-48.5 48.5-114 77T480-120Zm112-192L440-464v-216h80v184l128 128-56 56Z" />
|
|
199
|
+
</svg>
|
|
200
|
+
</a>
|
|
201
|
+
</div>
|
|
202
|
+
</ng-container>
|
|
205
203
|
|
|
206
204
|
<!-- ----------------------------------------------------------------------------------- -->
|
|
207
205
|
<!-- SETTINGS // old: goToSettings_CannedResponses() *ngIf="USER_ROLE !== 'agent'" (click)="goToWidgetSetUpOrToCannedResponses()" -->
|
|
208
206
|
<!-- ----------------------------------------------------------------------------------- -->
|
|
209
|
-
<
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
<
|
|
213
|
-
<
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
207
|
+
<ng-container *ngIf="roles?.[PERMISSIONS.SETTINGS_READ]">
|
|
208
|
+
<div *ngIf="USER_ROLE !== 'agent'" matTooltipClass="custom-mat-tooltip"
|
|
209
|
+
matTooltip="{{translationsMap?.get('Settings')}}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
|
|
210
|
+
<a target="_self" href="{{URLS.SETTINGS}}" class="customAncor">
|
|
211
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960" width="24px" height="24px" fill="none">
|
|
212
|
+
<path d="m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z" />
|
|
213
|
+
</svg>
|
|
214
|
+
</a>
|
|
215
|
+
</div>
|
|
216
|
+
</ng-container>
|
|
217
217
|
|
|
218
218
|
<div class="sidebar-separator">
|
|
219
219
|
<!-- <i class="material-symbols-outlined sidebar-icons">
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
<!-- ------------------------------------------- -->
|
|
231
231
|
<!-- LOGO BRAND (click)="goToOfficialSite()" -->
|
|
232
232
|
<!-- ------------------------------------------- -->
|
|
233
|
-
<a target="_blank" href="{{
|
|
233
|
+
<a target="_blank" href="{{ URLS.TILEDESK }}" class="customAncor">
|
|
234
234
|
<img [src]="LOGOS_ITEMS['COMPANY_LOGO_NO_TEXT'].icon">
|
|
235
235
|
</a>
|
|
236
236
|
</div>
|
|
@@ -15,7 +15,10 @@ import { tranlatedLanguage } from '../../../chat21-core/utils/constants';
|
|
|
15
15
|
// utils
|
|
16
16
|
import { avatarPlaceholder, getColorBck } from 'src/chat21-core/utils/utils-user';
|
|
17
17
|
import { BRAND_BASE_INFO, LOGOS_ITEMS } from 'src/app/utils/utils-resources';
|
|
18
|
-
import { getOSCode } from 'src/app/utils/utils';
|
|
18
|
+
import { getOSCode, hasRole } from 'src/app/utils/utils';
|
|
19
|
+
import { PERMISSIONS } from 'src/app/utils/permissions.constants';
|
|
20
|
+
import { ProjectUser } from 'src/chat21-core/models/projectUsers';
|
|
21
|
+
import { ProjectUsersService } from 'src/app/services/project_users/project-users.service';
|
|
19
22
|
|
|
20
23
|
@Component({
|
|
21
24
|
selector: 'app-sidebar',
|
|
@@ -31,7 +34,7 @@ export class SidebarComponent implements OnInit {
|
|
|
31
34
|
IS_AVAILABLE: boolean = false;
|
|
32
35
|
IS_INACTIVE: boolean = true;
|
|
33
36
|
IS_BUSY: boolean;
|
|
34
|
-
isVisibleAPP: boolean;
|
|
37
|
+
// isVisibleAPP: boolean;
|
|
35
38
|
isVisibleANA: boolean;
|
|
36
39
|
isVisibleACT: boolean;
|
|
37
40
|
isVisibleMON: boolean;
|
|
@@ -42,9 +45,10 @@ export class SidebarComponent implements OnInit {
|
|
|
42
45
|
project_id: string;
|
|
43
46
|
DASHBOARD_URL: string;
|
|
44
47
|
// HAS_CLICKED_OPEN_USER_DETAIL: boolean = false
|
|
45
|
-
public
|
|
48
|
+
public translationsMap: Map<string, string>;
|
|
46
49
|
public_Key: any;
|
|
47
50
|
conversations_lbl: string;
|
|
51
|
+
whatsappbroadcast_lbl: string;
|
|
48
52
|
contacts_lbl: string;
|
|
49
53
|
whatsapp_lbl: string;
|
|
50
54
|
apps_lbl: string;
|
|
@@ -55,20 +59,14 @@ export class SidebarComponent implements OnInit {
|
|
|
55
59
|
countClickOnOpenUserDetailSidebar: number = 0
|
|
56
60
|
USER_PHOTO_PROFILE_EXIST: boolean;
|
|
57
61
|
currentUser: any;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
dashboard_wa_url: string;
|
|
64
|
-
dashboard_app_url: string;
|
|
65
|
-
dashboard_analytics_url: string;
|
|
66
|
-
dashboard_activities_url: string;
|
|
67
|
-
dashboard_history_url: string;
|
|
68
|
-
dashboard_settings_url: string;
|
|
69
|
-
tiledesk_url: string;
|
|
62
|
+
URLS: { [key: string]: string} = {};
|
|
63
|
+
|
|
64
|
+
public projectUser: ProjectUser;
|
|
65
|
+
public roles: { [key: string]: boolean }
|
|
66
|
+
|
|
70
67
|
LOGOS_ITEMS = LOGOS_ITEMS;
|
|
71
68
|
BRAND_BASE_INFO = BRAND_BASE_INFO;
|
|
69
|
+
PERMISSIONS = PERMISSIONS;
|
|
72
70
|
constructor(
|
|
73
71
|
public imageRepoService: ImageRepoService,
|
|
74
72
|
public appStorageService: AppStorageService,
|
|
@@ -78,12 +76,13 @@ export class SidebarComponent implements OnInit {
|
|
|
78
76
|
public wsService: WebsocketService,
|
|
79
77
|
public appConfigProvider: AppConfigProvider,
|
|
80
78
|
private translate: TranslateService,
|
|
79
|
+
public projectUsersService: ProjectUsersService,
|
|
81
80
|
public events: EventsService,
|
|
82
81
|
|
|
83
82
|
) { }
|
|
84
83
|
|
|
85
84
|
ngOnInit() {
|
|
86
|
-
this.
|
|
85
|
+
this.URLS.TILEDESK = BRAND_BASE_INFO['COMPANY_SITE_URL'] as string
|
|
87
86
|
|
|
88
87
|
this.DASHBOARD_URL = this.appConfig.getConfig().dashboardUrl + '#/project/';
|
|
89
88
|
this.getStoredProjectAndUserRole()
|
|
@@ -95,37 +94,57 @@ export class SidebarComponent implements OnInit {
|
|
|
95
94
|
|
|
96
95
|
|
|
97
96
|
getStoredProjectAndUserRole() {
|
|
98
|
-
this.events.subscribe('storage:last_project',project =>{
|
|
97
|
+
this.events.subscribe('storage:last_project',async (project) =>{
|
|
99
98
|
this.logger.log('[SIDEBAR] stored_project ', project)
|
|
100
99
|
if (project && project !== 'undefined') {
|
|
101
100
|
this.project_id = project.id_project.id
|
|
102
101
|
this.USER_ROLE = project.role;
|
|
103
102
|
this.buildURLs(this.USER_ROLE)
|
|
103
|
+
this.projectUser = await this.projectUsersService.getProjectUserByProjectId(project.id_project.id)
|
|
104
|
+
this.roles = this.checkRoles()
|
|
105
|
+
this.logger.log('[SIDEBAR] roles ', this.roles)
|
|
104
106
|
}
|
|
105
107
|
})
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
buildURLs(USER_ROLE) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
this.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
|
|
111
|
+
const base = this.DASHBOARD_URL + this.project_id;
|
|
112
|
+
|
|
113
|
+
this.URLS = {
|
|
114
|
+
HOME: `${base}/home`,
|
|
115
|
+
KNOWLEDGEBASE: `${base}/knowledge-bases`,
|
|
116
|
+
BOTS: `${base}/bots`,
|
|
117
|
+
MONITOR: `${base}/wsrequests`,
|
|
118
|
+
WHATSAPP: `${base}/automations`,
|
|
119
|
+
CONTACTS: `${base}/contacts`,
|
|
120
|
+
APPSTORE: `${base}/app-store`,
|
|
121
|
+
ANALYTICS: `${base}/analytics`,
|
|
122
|
+
ACTIVITIES: `${base}/activities`,
|
|
123
|
+
HISTORY: `${base}/history`,
|
|
124
|
+
SETTINGS: USER_ROLE !== 'agent' ? `${base}/widget-set-up` : `${base}/cannedresponses`,
|
|
125
|
+
TILEDESK: 'https://www.tiledesk.com'
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
this.setQueryParamsForAll({ tiledesk_logOut: BRAND_BASE_INFO['LOGOUT_ENABLED'] });
|
|
126
129
|
|
|
127
130
|
}
|
|
128
131
|
|
|
132
|
+
// Funzione helper per aggiungere query params a tutte le URL
|
|
133
|
+
setQueryParamsForAll(queryParams: any) {
|
|
134
|
+
if (!queryParams) return;
|
|
135
|
+
|
|
136
|
+
const queryString = new URLSearchParams(queryParams).toString();
|
|
137
|
+
|
|
138
|
+
// Cicla tutte le chiavi di URLS
|
|
139
|
+
Object.keys(this.URLS).forEach(key => {
|
|
140
|
+
if (this.URLS[key]) {
|
|
141
|
+
// Controlla se già ci sono query params
|
|
142
|
+
const separator = this.URLS[key].includes('?') ? '&' : '?';
|
|
143
|
+
this.URLS[key] = `${this.URLS[key]}${queryString ? separator + queryString : ''}`;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
129
148
|
subcribeToAuthStateChanged() {
|
|
130
149
|
this.messagingAuthService.BSAuthStateChanged.subscribe((state) => {
|
|
131
150
|
this.logger.log('[SIDEBAR] BSAuthStateChanged ', state)
|
|
@@ -244,6 +263,7 @@ export class SidebarComponent implements OnInit {
|
|
|
244
263
|
this.logger.error('[SIDEBAR] - ngOnInit - currentUser not found in storage ')
|
|
245
264
|
}
|
|
246
265
|
this.translateLabels()
|
|
266
|
+
this.translations()
|
|
247
267
|
}
|
|
248
268
|
|
|
249
269
|
|
|
@@ -261,6 +281,7 @@ export class SidebarComponent implements OnInit {
|
|
|
261
281
|
|
|
262
282
|
this.translate.get(keys).subscribe((text: string) => {
|
|
263
283
|
this.conversations_lbl = text['Conversations'];
|
|
284
|
+
this.whatsappbroadcast_lbl = text['WhatsAppBroadcasts']
|
|
264
285
|
this.contacts_lbl = text['LABEL_CONTACTS']
|
|
265
286
|
this.whatsapp_lbl = text['LABEL_WA']
|
|
266
287
|
this.apps_lbl = text['Apps']
|
|
@@ -277,14 +298,56 @@ export class SidebarComponent implements OnInit {
|
|
|
277
298
|
|
|
278
299
|
this.isVisibleANA = getOSCode("ANA", this.public_Key);
|
|
279
300
|
this.isVisibleACT = getOSCode("ACT", this.public_Key);
|
|
280
|
-
this.isVisibleAPP = getOSCode("APP", this.public_Key);
|
|
281
301
|
this.isVisibleMON = getOSCode("MON", this.public_Key);
|
|
282
302
|
this.isVisibleCNT = getOSCode("CNT", this.public_Key);
|
|
283
303
|
this.isVisibleAUT = getOSCode("AUT", this.public_Key);
|
|
284
304
|
this.isVisibleKNB = getOSCode("KNB", this.public_Key);
|
|
285
|
-
|
|
305
|
+
|
|
286
306
|
}
|
|
287
307
|
|
|
308
|
+
|
|
309
|
+
checkRoles(): { [key: string]: boolean } {
|
|
310
|
+
const permissionKeys = [
|
|
311
|
+
'HOME_READ',
|
|
312
|
+
'KB_READ',
|
|
313
|
+
'FLOWS_READ',
|
|
314
|
+
'INBOX_READ',
|
|
315
|
+
'AUTOMATIONSLOG_READ',
|
|
316
|
+
'LEADS_READ',
|
|
317
|
+
'ANALYTICS_READ',
|
|
318
|
+
'ACTIVITIES_READ',
|
|
319
|
+
'HISTORY_READ',
|
|
320
|
+
'PROJECTSETTINGS_GENERAL_READ',
|
|
321
|
+
'PROJECTSETTINGS_DEVELOPER_READ',
|
|
322
|
+
'PROJECTSETTINGS_SMARTASSIGNMENT_READ',
|
|
323
|
+
'PROJECTSETTINGS_NOTIFICATION_READ',
|
|
324
|
+
'PROJECTSETTINGS_SECURITY_READ',
|
|
325
|
+
'PROJECTSETTINGS_BANNED_READ',
|
|
326
|
+
'PROJECTSETTINGS_ADVANCED_READ'
|
|
327
|
+
] as const;
|
|
328
|
+
|
|
329
|
+
const roles: { [key: string]: boolean } = {};
|
|
330
|
+
for (const key of permissionKeys) {
|
|
331
|
+
const permission = PERMISSIONS[key];
|
|
332
|
+
roles[permission] = hasRole(this.projectUser, permission);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
let settingRoleKEys = [
|
|
337
|
+
'PROJECTSETTINGS_GENERAL_READ',
|
|
338
|
+
'PROJECTSETTINGS_DEVELOPER_READ',
|
|
339
|
+
'PROJECTSETTINGS_SMARTASSIGNMENT_READ',
|
|
340
|
+
'PROJECTSETTINGS_NOTIFICATION_READ',
|
|
341
|
+
'PROJECTSETTINGS_SECURITY_READ',
|
|
342
|
+
'PROJECTSETTINGS_BANNED_READ',
|
|
343
|
+
'PROJECTSETTINGS_ADVANCED_READ'
|
|
344
|
+
] as const;
|
|
345
|
+
roles[PERMISSIONS.SETTINGS_READ] = settingRoleKEys.some(settingKey => roles[PERMISSIONS[settingKey]]);
|
|
346
|
+
|
|
347
|
+
return roles;
|
|
348
|
+
|
|
349
|
+
}
|
|
350
|
+
|
|
288
351
|
listenTocurrentProjectUserUserAvailability$() {
|
|
289
352
|
this.wsService.currentProjectUserAvailability$.subscribe((data) => {
|
|
290
353
|
this.logger.log('[SIDEBAR] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS RES ', data);
|
|
@@ -334,92 +397,20 @@ export class SidebarComponent implements OnInit {
|
|
|
334
397
|
}
|
|
335
398
|
}
|
|
336
399
|
|
|
337
|
-
goToHome() {
|
|
338
|
-
let url = this.DASHBOARD_URL + this.project_id + '/home'
|
|
339
|
-
this.dashboard_home_url = url;
|
|
340
|
-
const myWindow = window.open(url, '_self');
|
|
341
|
-
myWindow.focus();
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
goToBots() {
|
|
345
|
-
let url = this.DASHBOARD_URL + this.project_id + '/bots/my-chatbots/all'
|
|
346
|
-
const myWindow = window.open(url, '_self');
|
|
347
|
-
myWindow.focus();
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
goToConversations() {
|
|
351
|
-
let url = this.DASHBOARD_URL + this.project_id + '/wsrequests'
|
|
352
|
-
const myWindow = window.open(url, '_self');
|
|
353
|
-
myWindow.focus();
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
goToContacts() {
|
|
357
|
-
let url = this.DASHBOARD_URL + this.project_id + '/contacts'
|
|
358
|
-
const myWindow = window.open(url, '_self');
|
|
359
|
-
myWindow.focus();
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
goToAppStore() {
|
|
363
|
-
let url = this.DASHBOARD_URL + this.project_id + '/app-store'
|
|
364
|
-
const myWindow = window.open(url, '_self');
|
|
365
|
-
myWindow.focus();
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
goToAnalytics() {
|
|
369
|
-
let url = this.DASHBOARD_URL + this.project_id + '/analytics'
|
|
370
|
-
const myWindow = window.open(url, '_self');
|
|
371
|
-
myWindow.focus();
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
goToActivities() {
|
|
375
|
-
let url = this.DASHBOARD_URL + this.project_id + '/activities'
|
|
376
|
-
const myWindow = window.open(url, '_self');
|
|
377
|
-
myWindow.focus();
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
goToHistory() {
|
|
381
|
-
let url = this.DASHBOARD_URL + this.project_id + '/history'
|
|
382
|
-
const myWindow = window.open(url, '_self');
|
|
383
|
-
myWindow.focus();
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
goToWidgetSetUpOrToCannedResponses() {
|
|
387
|
-
if (this.USER_ROLE !== 'agent') {
|
|
388
|
-
this.goToWidgetSetUp()
|
|
389
|
-
} else if (this.USER_ROLE === 'agent') {
|
|
390
|
-
this.goToSettings_CannedResponses()
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
goToWidgetSetUp() {
|
|
395
|
-
let url = this.DASHBOARD_URL + this.project_id + '/widget-set-up'
|
|
396
|
-
const myWindow = window.open(url, '_self');
|
|
397
|
-
myWindow.focus();
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
goToSettings_CannedResponses() {
|
|
401
|
-
let url = this.DASHBOARD_URL + this.project_id + '/cannedresponses'
|
|
402
|
-
const myWindow = window.open(url, '_self');
|
|
403
|
-
myWindow.focus();
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
400
|
public translations() {
|
|
409
401
|
const keys = [
|
|
410
|
-
'
|
|
411
|
-
'
|
|
412
|
-
'
|
|
413
|
-
'
|
|
414
|
-
'
|
|
415
|
-
'
|
|
416
|
-
'
|
|
417
|
-
'
|
|
418
|
-
'
|
|
419
|
-
|
|
420
|
-
"CHANGE_TO_YOUR_STATUS_TO_UNAVAILABLE"
|
|
402
|
+
'Monitor',
|
|
403
|
+
'Flows',
|
|
404
|
+
'Knowledgebases',
|
|
405
|
+
'WhatsAppBroadcasts',
|
|
406
|
+
'LABEL_CONTACTS',
|
|
407
|
+
'Apps',
|
|
408
|
+
'Analytics',
|
|
409
|
+
'Activities',
|
|
410
|
+
'History',
|
|
411
|
+
'Settings'
|
|
421
412
|
];
|
|
422
|
-
this.
|
|
413
|
+
this.translationsMap = this.translateService.translateLanguage(keys);
|
|
423
414
|
}
|
|
424
415
|
|
|
425
416
|
|
|
@@ -18,7 +18,8 @@ import { BRAND_BASE_INFO } from 'src/app/utils/utils-resources';
|
|
|
18
18
|
import { getOSCode } from 'src/app/utils/utils';
|
|
19
19
|
import { getUserStatusFromProjectUser } from 'src/chat21-core/utils/utils';
|
|
20
20
|
import { ProjectService } from 'src/app/services/projects/project.service';
|
|
21
|
-
import { ProjectUser } from 'src/chat21-core/models/
|
|
21
|
+
import { ProjectUser } from 'src/chat21-core/models/projectUsers';
|
|
22
|
+
|
|
22
23
|
@Component({
|
|
23
24
|
selector: 'app-sidebar-user-details',
|
|
24
25
|
templateUrl: './sidebar-user-details.component.html',
|
|
@@ -9,6 +9,7 @@ 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'
|
|
12
13
|
|
|
13
14
|
@Component({
|
|
14
15
|
selector: 'app-create-ticket',
|
|
@@ -64,6 +65,7 @@ export class CreateTicketPage implements OnInit {
|
|
|
64
65
|
logger: LoggerService = LoggerInstance.getInstance();
|
|
65
66
|
constructor(
|
|
66
67
|
public modalController: ModalController,
|
|
68
|
+
public projectUsersService: ProjectUsersService,
|
|
67
69
|
public tiledeskService: TiledeskService,
|
|
68
70
|
public appConfigProvider: AppConfigProvider,
|
|
69
71
|
public events: EventsService
|
|
@@ -104,7 +106,7 @@ export class CreateTicketPage implements OnInit {
|
|
|
104
106
|
// Create the array of the project-users and contacts displayed in the combo box "Requester"
|
|
105
107
|
// -------------------------------------------------------------------------------------------
|
|
106
108
|
getProjectUsersAndContacts(projctid: string) {
|
|
107
|
-
const projectUsers = this.
|
|
109
|
+
const projectUsers = this.projectUsersService.getProjectUsersByProjectId(projctid)
|
|
108
110
|
const leads = this.tiledeskService.getAllLeadsActiveWithLimit(projctid,10000)
|
|
109
111
|
|
|
110
112
|
zip(projectUsers, leads).subscribe(
|
|
@@ -243,7 +245,7 @@ export class CreateTicketPage implements OnInit {
|
|
|
243
245
|
// -------------------------------------------------------------------------------------------------------------------
|
|
244
246
|
getProjectUserBotsAndDepts(projctid: string) {
|
|
245
247
|
// this.loadingAssignee = true;
|
|
246
|
-
const projectUsers = this.
|
|
248
|
+
const projectUsers = this.projectUsersService.getProjectUsersByProjectId( projctid)
|
|
247
249
|
const bots = this.tiledeskService.getAllBotByProjectId(projctid)
|
|
248
250
|
const depts = this.tiledeskService.getDeptsByProjectId(projctid)
|
|
249
251
|
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
<!-- ----------------------------------------------------------- -->
|
|
174
174
|
<app-canned-response *ngIf="SHOW_CANNED_RESPONSES"
|
|
175
175
|
id="canned"
|
|
176
|
-
[
|
|
176
|
+
[roles]="rolesCanned"
|
|
177
177
|
[conversationWith]="conversationWith"
|
|
178
178
|
[conversationWithFullname]="conversationWithFullname"
|
|
179
179
|
[currentString]="messageStr"
|
|
@@ -201,7 +201,8 @@
|
|
|
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"
|
|
204
|
+
[loggedUser]="loggedUser"
|
|
205
|
+
[projectUser]="projectUser"
|
|
205
206
|
[conversationWith]="conversationWith"
|
|
206
207
|
[channelType]="channelType"
|
|
207
208
|
[channel]="conversation?.attributes?.request_channel"
|
|
@@ -213,6 +214,7 @@
|
|
|
213
214
|
[fileUploadAccept]="fileUploadAccept"
|
|
214
215
|
[emailSection]="isEmailEnabled"
|
|
215
216
|
[offlineMsgEmail]="offlineMsgEmail"
|
|
217
|
+
[cannedSection]="canShowCanned"
|
|
216
218
|
[whatsappTemplatesSection]="isWhatsappTemplatesEnabled"
|
|
217
219
|
[isOpenInfoConversation]="openInfoConversation"
|
|
218
220
|
[stylesMap]="styleMap"
|