@chat21/chat21-ionic 3.0.76 → 3.0.77-rc.3

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 (39) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/deploy_amazon_beta.sh +1 -1
  3. package/package.json +1 -1
  4. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +12 -4
  5. package/src/app/components/conversation-info/info-content/info-content.component.html +3 -3
  6. package/src/app/components/conversation-info/info-content/info-content.component.ts +0 -1
  7. package/src/app/components/project-item/project-item.component.html +9 -21
  8. package/src/app/components/project-item/project-item.component.scss +1 -3
  9. package/src/app/components/project-item/project-item.component.ts +4 -4
  10. package/src/app/components/sidebar/sidebar.component.html +6 -5
  11. package/src/app/components/sidebar/sidebar.component.ts +23 -22
  12. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +25 -9
  13. package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +1 -1
  14. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +57 -69
  15. package/src/app/components/utils/user-presence/user-presence.component.ts +1 -1
  16. package/src/app/pages/conversation-detail/conversation-detail.page.ts +1 -1
  17. package/src/app/pages/profile-info/profile-info.page.ts +1 -1
  18. package/src/app/services/websocket/websocket.service.ts +5 -2
  19. package/src/app/shared/shared.module.ts +4 -0
  20. package/src/assets/i18n/ar.json +1 -4
  21. package/src/assets/i18n/az.json +1 -4
  22. package/src/assets/i18n/de.json +1 -4
  23. package/src/assets/i18n/en.json +1 -4
  24. package/src/assets/i18n/es.json +1 -4
  25. package/src/assets/i18n/fr.json +1 -4
  26. package/src/assets/i18n/it.json +1 -4
  27. package/src/assets/i18n/kk.json +1 -4
  28. package/src/assets/i18n/pt.json +1 -4
  29. package/src/assets/i18n/ru.json +1 -4
  30. package/src/assets/i18n/sr.json +1 -4
  31. package/src/assets/i18n/sv.json +1 -4
  32. package/src/assets/i18n/tr.json +1 -4
  33. package/src/assets/i18n/uk.json +1 -4
  34. package/src/assets/i18n/uz.json +1 -4
  35. package/src/assets/images/teammate-status/avaible.svg +9 -0
  36. package/src/assets/images/teammate-status/inactive.svg +11 -0
  37. package/src/assets/images/teammate-status/unavaible.svg +9 -0
  38. package/src/chat-config-pre.json +1 -1
  39. package/src/global.scss +67 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # chat21-ionic ver 3.0
2
2
 
3
+ ### 3.0.77-rc.3
4
+ - bug-fixed: with env
5
+
6
+ ### 3.0.77-rc.2
7
+ - bug-fixed: on ng-select focused element show blue border
8
+ - removed: unused labels and translations
9
+
10
+ ### 3.0.77-rc.1
11
+ - added: new sidebar-user-details and sidebar components
12
+ - changed: updateCurrentUserAvailability body http request to manage Inactive state
13
+ - removed label 'LABEL_ACTIVE_NOW'
14
+
3
15
  ## 3.0.76 in PROD
4
16
 
5
17
  ### 3.0.76-rc.4
@@ -12,7 +12,7 @@ sed -i -e "s/$URL_VER/g" src/utils/constants.ts
12
12
 
13
13
  ionic cordova platform add browser --save
14
14
  #ionic cordova build browser --prod --release
15
- ionic cordova build --env=pre browser #--prod --verbose
15
+ ionic cordova build --configuration="pre" browser #--prod --verbose
16
16
 
17
17
  cp -p src/firebase-messaging-sw.js platforms/browser/www/
18
18
  cp -p src/manifest.json platforms/browser/www/
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
3
  "author": "Tiledesk SRL",
4
- "version": "3.0.76",
4
+ "version": "3.0.77-rc.3",
5
5
  "license": "MIT License",
6
6
  "homepage": "https://tiledesk.com/",
7
7
  "repository": {
@@ -18,14 +18,22 @@
18
18
  </div>
19
19
  <!-- [ngStyle] = "{ 'left': platformName === 'ios' ? '63px' : '' }" -->
20
20
  <div *ngIf="isDirect" class="user-presence" [ngClass]="{ 'user-presence-ios': platformName === 'ios' }">
21
- <app-user-presence [idUser]=conversationAvatar.conversation_with [translationMap]=translationMap
22
- [borderColor]=borderColor [fontColor]=fontColor>
21
+ <app-user-presence
22
+ [idUser]=conversationAvatar.conversation_with
23
+ [translationMap]=translationMap
24
+ [borderColor]=borderColor
25
+ [fontColor]=fontColor>
23
26
  </app-user-presence>
24
27
  </div>
25
28
 
26
29
  <div *ngIf="conversationAvatar" class="user-typing">
27
- <app-user-typing [idConversation]=conversationAvatar.uid [idCurrentUser]=idLoggedUser [isDirect]=isDirect
28
- [translationMap]=translationMap [color]=fontColor [membersConversation]=membersConversation>
30
+ <app-user-typing
31
+ [idConversation]=conversationAvatar.uid
32
+ [idCurrentUser]=idLoggedUser
33
+ [isDirect]=isDirect
34
+ [translationMap]=translationMap
35
+ [color]=fontColor
36
+ [membersConversation]=membersConversation>
29
37
  </app-user-typing>
30
38
  </div>
31
39
 
@@ -1,9 +1,9 @@
1
1
  <ion-content [style.display]="openInfoConversation ? 'block' : 'none'">
2
2
 
3
3
  <app-info-direct *ngIf="panelType === 'direct-panel'"
4
- [member]=member
5
- [translationMap]=translationMap
6
- [conversationWith]= "conversationWith">
4
+ [member]=member
5
+ [translationMap]=translationMap
6
+ [conversationWith]= "conversationWith">
7
7
  </app-info-direct>
8
8
 
9
9
  <app-info-group *ngIf="panelType === 'group-panel' && IS_GROUP_PANEL === true"
@@ -341,7 +341,6 @@ export class InfoContentComponent implements OnInit {
341
341
  // 'LABEL_TO',
342
342
  // 'LABEL_LAST_ACCESS',
343
343
  // 'ARRAY_DAYS',
344
- // 'LABEL_ACTIVE_NOW'
345
344
  // ];
346
345
  // this.translationMap = this.translateService.translateLanguage(keys);
347
346
  // }
@@ -66,7 +66,7 @@
66
66
  </span>
67
67
  </ng-template>
68
68
 
69
- <div class="availabily-and-busy-wpr">
69
+ <!-- <div class="availabily-and-busy-wpr">
70
70
  <div class="availabily---wpr" tooltip="{{avaialble_status_for_tooltip}}" [options]="tooltipOptions">
71
71
  <div class="onoffswitch"
72
72
  (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)">
@@ -77,39 +77,27 @@
77
77
  </div>
78
78
 
79
79
 
80
- <!-- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" -->
80
+ <!- - (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" - ->
81
81
  <span *ngIf="project?.ws_projct_user_available === true" class="availibility-status-text"
82
82
  [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
83
- {{translationMap?.get('Available') }}
83
+ {{translationMap?.get('LABEL_AVAILABLE') }}
84
84
  </span>
85
- <!-- (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" -->
85
+ <!- - (click)="$event.stopPropagation();changeAvailabilityState(project?.id_project?._id, project?.ws_projct_user_available)" - ->
86
86
  <span *ngIf="project?.ws_projct_user_available === false" class="availibility-status-text"
87
87
  [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
88
- {{translationMap?.get('Unavailable')}}
88
+ {{translationMap?.get('LABEL_NOT_AVAILABLE')}}
89
89
  </span>
90
90
 
91
- <div class="project-item--isBusy-icon-wpr" *ngIf="project?.ws_projct_user_isBusy === true" tooltip="{{translationMap?.get('Busy')}}"
91
+ <div class="project-item--isBusy-icon-wpr" *ngIf="project?.ws_projct_user_isBusy === true" tooltip="{{translationMap?.get('LABEL_BUSY')}}"
92
92
  [options]="tooltipOptions" placement="top" >
93
- <!-- <span class="material-icons project-item--isBusy-icon">
94
- access_time
95
- </span> -->
96
93
  <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="16px"
97
94
  viewBox="0 0 24 24" width="16px" fill="#FEB92C">
98
- <g>
99
- <path d="M0,0h24v24H0V0z" fill="none" />
100
- </g>
101
- <g>
102
- <path
103
- d="M11.99,2C6.47,2,2,6.48,2,12s4.47,10,9.99,10C17.52,22,22,17.52,22,12S17.52,2,11.99,2z M15.29,16.71L11,12.41V7h2v4.59 l3.71,3.71L15.29,16.71z" />
104
- </g>
95
+ <g><path d="M0,0h24v24H0V0z" fill="none" /></g>
96
+ <g><path d="M11.99,2C6.47,2,2,6.48,2,12s4.47,10,9.99,10C17.52,22,22,17.52,22,12S17.52,2,11.99,2z M15.29,16.71L11,12.41V7h2v4.59 l3.71,3.71L15.29,16.71z" /></g>
105
97
  </svg>
106
98
  </div>
107
- <!-- <span *ngIf="project?.ws_projct_user_isBusy === true"
108
- class="project-item--isBusy-busy-text text-pulse-animation">
109
- {{translationMap?.get('Busy')}}
110
- </span> -->
111
99
  </div>
112
- </div>
100
+ </div> -->
113
101
 
114
102
  <div *ngIf="IS_ON_MOBILE_DEVICE === true" class="flex-child-view-all-convs">
115
103
  <div class="view-all-convs-icon-wpr" style="cursor: pointer;" [tooltip]="viewAllConvs"
@@ -241,9 +241,7 @@
241
241
  .flex-child-right {
242
242
  flex: 1;
243
243
  padding: 18px 0px;
244
- // width: 227px;
245
- // width: 207px;
246
- height: 100%;
244
+ // height: 100%;
247
245
  }
248
246
 
249
247
 
@@ -128,9 +128,9 @@ export class ProjectItemComponent implements OnInit {
128
128
 
129
129
  public translations() {
130
130
  const keys = [
131
- 'Available',
132
- 'Unavailable',
133
- 'Busy',
131
+ 'LABEL_AVAILABLE',
132
+ 'LABEL_NOT_AVAILABLE',
133
+ 'LABEL_BUSY',
134
134
  'VIEW_ALL_CONVERSATIONS',
135
135
  'CONVERSATIONS_IN_QUEUE',
136
136
  'CONVERSATION_IN_QUEUE',
@@ -278,7 +278,7 @@ export class ProjectItemComponent implements OnInit {
278
278
  available = !available
279
279
  this.logger.log('[PROJECT-ITEM] - changeAvailabilityState projectid', projectid, ' available: ', available);
280
280
 
281
- this.wsService.updateCurrentUserAvailability(this.tiledeskToken, projectid, available).subscribe((projectUser: any) => {
281
+ this.wsService.updateCurrentUserAvailability(this.tiledeskToken, projectid, available, "").subscribe((projectUser: any) => {
282
282
 
283
283
  this.logger.log('[PROJECT-ITEM] - PROJECT-USER UPDATED ', projectUser)
284
284
  // NOTIFY TO THE USER SERVICE WHEN THE AVAILABLE / UNAVAILABLE BUTTON IS CLICKED
@@ -23,13 +23,14 @@
23
23
 
24
24
  <!-- matTooltipClass="custom-mat-tooltip" matTooltip="{{ tooltip_text_for_availability_status}}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" -->
25
25
  <!-- (click)="changeAvailabilityState(IS_AVAILABLE = !IS_AVAILABLE)" -->
26
- <div id="sidebaravatar-status-icon" class="status-icon"
27
- [ngClass]="{'is-user-online' : IS_AVAILABLE === true, 'is-user-offline' : IS_AVAILABLE === false, 'small-sidebar-status-icon' : SIDEBAR_IS_SMALL === true }">
26
+ <div id="teammate-status-icon" *ngIf="project_id" class="status-icon" [ngClass]="{
27
+ 'is-user-online' : IS_AVAILABLE === true && IS_INACTIVE === false,
28
+ 'is-user-offline' : IS_AVAILABLE === false && IS_INACTIVE === false,
29
+ 'is-user-inactive': IS_AVAILABLE === false && IS_INACTIVE === true}">
28
30
  </div>
29
31
 
30
- <!-- matTooltipClass="custom-mat-tooltip" matTooltip="{{ 'Busy' | translate }}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" -->
31
- <div id="sidebaravatar-isbusy-icon-wpr" class="sidebar--isBusy-icon-wpr" [ngClass]="{'sidebar--isBusy-icon-wpr-with-image': USER_PHOTO_PROFILE_EXIST}" *ngIf="IS_BUSY === true"
32
- style="cursor:pointer">
32
+ <!-- matTooltipClass="custom-mat-tooltip" matTooltip="{{ 'LABEL_BUSY' | translate }}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" -->
33
+ <div id="sidebaravatar-isbusy-icon-wpr" class="sidebar--isBusy-icon-wpr" [ngClass]="{'sidebar--isBusy-icon-wpr-with-image': USER_PHOTO_PROFILE_EXIST}" *ngIf="IS_BUSY === true" style="cursor:pointer">
33
34
  <span id="sidebaravatar-isbusy-icon" class="material-icons sidebar-is-busy-icon">
34
35
  access_time
35
36
  </span>
@@ -27,9 +27,8 @@ export class SidebarComponent implements OnInit {
27
27
  USER_ROLE: string = 'agent'
28
28
  SIDEBAR_IS_SMALL = true
29
29
  IS_AVAILABLE: boolean;
30
- user: any;
31
- IS_BUSY: boolean;
32
-
30
+ IS_INACTIVE: boolean;
31
+ IS_BUSY: boolean;
33
32
  isVisibleAPP: boolean;
34
33
  isVisibleANA: boolean;
35
34
  isVisibleACT: boolean;
@@ -319,22 +318,24 @@ export class SidebarComponent implements OnInit {
319
318
  }
320
319
 
321
320
  listenTocurrentProjectUserUserAvailability$() {
322
- this.wsService.currentProjectUserAvailability$.subscribe((projectUser) => {
323
- this.logger.log('[SIDEBAR] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS RES ', projectUser);
324
-
325
- this.IS_AVAILABLE = projectUser['user_available']
326
- this.IS_BUSY = projectUser['isBusy']
327
- // if (project.id_project._id === projectUser['id_project']) {
328
- // project['ws_projct_user_available'] = projectUser['user_available'];
329
- // project['ws_projct_user_isBusy'] = projectUser['isBusy']
330
- // if (this.translationMap) {
331
- // if (projectUser['user_available'] === true) {
332
- // this.avaialble_status_for_tooltip = this.translationMap.get('CHANGE_TO_YOUR_STATUS_TO_UNAVAILABLE')
333
- // } else {
334
- // this.avaialble_status_for_tooltip = this.translationMap.get('CHANGE_TO_YOUR_STATUS_TO_AVAILABLE')
335
- // }
336
- // }
337
- // }
321
+ this.wsService.currentProjectUserAvailability$.subscribe((data) => {
322
+ this.logger.log('[SIDEBAR] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS RES ', data);
323
+
324
+ if (data !== null) {
325
+ if (data['user_available'] === false && data['profileStatus'] === "inactive") {
326
+ this.IS_AVAILABLE = false;
327
+ this.IS_INACTIVE = true;
328
+ // console.log('[SIDEBAR] - GET WS CURRENT-USER - data - IS_INACTIVE ' , this.IS_INACTIVE)
329
+ } else if (data['user_available'] === false && (data['profileStatus'] === '' || !data['profileStatus'] )) {
330
+ this.IS_AVAILABLE = false;
331
+ this.IS_INACTIVE = false;
332
+ // console.log('[SIDEBAR] - GET WS CURRENT-USER - data - IS_AVAILABLE ' , this.IS_AVAILABLE)
333
+ } else if (data['user_available'] === true && (data['profileStatus'] === '' || !data['profileStatus'])) {
334
+ this.IS_AVAILABLE = true;
335
+ this.IS_INACTIVE = false;
336
+ // console.log('[SIDEBAR] - GET WS CURRENT-USER - data - IS_AVAILABLE ' , this.IS_AVAILABLE)
337
+ }
338
+ }
338
339
 
339
340
  }, (error) => {
340
341
  this.logger.error('[SIDEBAR] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS error ', error);
@@ -438,9 +439,9 @@ export class SidebarComponent implements OnInit {
438
439
 
439
440
  public translations() {
440
441
  const keys = [
441
- 'Available',
442
- 'Unavailable',
443
- 'Busy',
442
+ 'LABEL_AVAILABLE',
443
+ 'LABEL_NOT_AVAILABLE',
444
+ 'LABEL_BUSY',
444
445
  'VIEW_ALL_CONVERSATIONS',
445
446
  'CONVERSATIONS_IN_QUEUE',
446
447
  'CONVERSATION_IN_QUEUE',
@@ -34,7 +34,7 @@
34
34
  </div>
35
35
 
36
36
  <div class="user-details-user-isbusy" *ngIf="IS_BUSY === true" style="cursor:pointer"
37
- matTooltipClass="custom-mat-tooltip" matTooltip="{{IS_BUSY_msg}}" #tooltip="matTooltip"
37
+ matTooltipClass="custom-mat-tooltip" matTooltip="{{translationsMap.get('LABEL_BUSY')}}" #tooltip="matTooltip"
38
38
  matTooltipPosition='right' matTooltipHideDelay="100">
39
39
  <span class="material-icons user-details-user-isbusy-icon">access_time</span>
40
40
  </div>
@@ -52,25 +52,41 @@
52
52
  <h3>{{ USER_ROLE_LABEL }} </h3>
53
53
 
54
54
  <div class="user-details-view-profile" (click)="goToUserProfile()">
55
- {{EditProfileLabel}}
55
+ {{translationsMap.get('EditProfileLabel')}}
56
56
  </div>
57
57
  </div>
58
58
 
59
59
  <section class="availability-section">
60
- <mat-slide-toggle (change)="changeAvailabilityStateInUserDetailsSidebar(IS_AVAILABLE = !IS_AVAILABLE)"
60
+ <!-- <mat-slide-toggle (change)="changeAvailabilityStateInUserDetailsSidebar(IS_AVAILABLE = !IS_AVAILABLE)"
61
61
  class="custom-mat-slide-toggle" [checked]="IS_AVAILABLE" labelPosition="before">
62
62
 
63
63
  <span *ngIf="IS_AVAILABLE"
64
64
  style="font-weight: 400 !important; text-transform: capitalize; font-size:14px; color:#a9afbb">
65
65
  {{IS_AVAILABLE_msg}}
66
- <!-- {{translationMap?.get('Available') }} -->
67
66
  </span>
68
67
  <span *ngIf="!IS_AVAILABLE"
69
68
  style="font-weight: 400 !important;text-transform: capitalize;font-size:14px; color:#a9afbb">
70
69
  {{IS_UNAVAILABLE_msg}}
71
- <!-- {{translationMap?.get('Unavailable') }} -->
72
70
  </span>
73
- </mat-slide-toggle>
71
+ </mat-slide-toggle> -->
72
+
73
+ <ng-select style="text-align: left;"
74
+ (change)="changeAvailabilityStateInUserDetailsSidebar(selectedStatus)"
75
+ [(ngModel)]="selectedStatus"
76
+ class="teammate-status-in-drawer"
77
+ [items]="teammateStatus"
78
+ bindLabel="name" bindValue="id"
79
+ [clearable]="false"
80
+ [searchable]="false">
81
+ <ng-template ng-label-tmp let-item="item">
82
+ <img style="width: 15px;height: 15px;position: relative; top: 1px;" height="15" width="15" [src]="item.avatar" />
83
+ <span id="sidebaravatar_{{item.name}}" style="text-transform: capitalize; margin-left:8px"> {{item.label}} </span>
84
+ </ng-template>
85
+ <ng-template ng-option-tmp let-item="item" let-index="index">
86
+ <img style="width: 15px;height: 15px;position: relative; top: 1px;" height="15" width="15" [src]="item.avatar" />
87
+ <span id="sidebaravatar_{{item.name}}" style="text-transform: capitalize; margin-left:8px"> {{item.label}} </span>
88
+ </ng-template>
89
+ </ng-select>
74
90
  </section>
75
91
 
76
92
  <hr class="first-divider">
@@ -85,12 +101,12 @@
85
101
  style="color:#f44336; position:relative; top: -1px;display: inline-block;">
86
102
  <i *ngIf="project?.plan_name !== 'enterprise'" class="material-icons" style="vertical-align: middle; color:#f44336; cursor:pointer;
87
103
  font-size: 16px;" matTooltipClass="custom-mat-tooltip"
88
- matTooltip="{{ SUBSCRIPTION_PAYMENT_PROBLEM_msg }}" #tooltip="matTooltip" matTooltipPosition='right'
104
+ matTooltip="{{ translationsMap.get('SubscriptionPaymentProblem') }}" #tooltip="matTooltip" matTooltipPosition='right'
89
105
  matTooltipHideDelay="100">
90
106
  error_outline
91
107
  </i>
92
108
  <i *ngIf="project?.plan_name === 'enterprise'" class="material-icons" style="vertical-align: middle; color:#f44336; cursor:pointer;
93
- font-size: 16px;" matTooltipClass="custom-mat-tooltip" matTooltip="{{ THE_PLAN_HAS_EXPIRED_msg }}"
109
+ font-size: 16px;" matTooltipClass="custom-mat-tooltip" matTooltip="{{ translationsMap.get('ThePlanHasExpired') }}"
94
110
  #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100">
95
111
  error_outline
96
112
  </i>
@@ -114,7 +130,7 @@
114
130
  logout
115
131
  </i>
116
132
  <div class="user-details-logout-text">
117
- {{LOGOUT_msg}}
133
+ {{translationsMap.get('LABEL_LOGOUT')}}
118
134
  </div>
119
135
  </div>
120
136
  </section>
@@ -205,7 +205,7 @@ button.user-details-btn-close {
205
205
  top: 320px;
206
206
  text-align: center;
207
207
  background-color: #2d323e;
208
- padding: 9px;
208
+ padding: 4px 0px;
209
209
  width: 192px;
210
210
  border-radius: 4px;
211
211
  -webkit-transform: translateX(-50%);
@@ -32,17 +32,6 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
32
32
  IS_AVAILABLE: boolean;
33
33
  USER_ROLE: boolean;
34
34
  USER_ROLE_LABEL: string;
35
- EditProfileLabel: string;
36
- IS_BUSY_msg: string;
37
- IS_AVAILABLE_msg: string;
38
- IS_UNAVAILABLE_msg: string;
39
- SUBSCRIPTION_PAYMENT_PROBLEM_msg: string;
40
- THE_PLAN_HAS_EXPIRED_msg: string;
41
- PAYD_PLAN_NAME_PRO_msg: string;
42
- PAYD_PLAN_NAME_ENTERPRISE_msg: string;
43
- PRO_PLAN_TRIAL_msg: string;
44
- FREE_PLAN_msg: string;
45
- LOGOUT_msg: string;
46
35
  profile_name_translated: string;
47
36
  SubscriptionPaymentProblem: string;
48
37
  user: any
@@ -56,6 +45,16 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
56
45
  version: string
57
46
  company_name: string = 'Tiledesk'
58
47
  DASHBOARD_URL: string;
48
+
49
+ selectedStatus: any;
50
+ teammateStatus = [
51
+ { id: 1, name: 'Available', avatar: 'assets/images/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
52
+ { id: 2, name: 'Unavailable', avatar: 'assets/images/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
53
+ { id: 3, name: 'Inactive', avatar: 'assets/images/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
54
+ ];
55
+
56
+ translationsMap: Map<string, string> = new Map();
57
+
59
58
  constructor(
60
59
  private translate: TranslateService,
61
60
  public tiledeskAuthService: TiledeskAuthService,
@@ -199,22 +198,29 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
199
198
  translateLabels() {
200
199
  let keys= [
201
200
  'EditProfile',
202
- 'Available',
203
- 'Unavailable',
204
- 'Busy',
201
+ 'LABEL_BUSY',
205
202
  'LABEL_LOGOUT',
206
203
  'SubscriptionPaymentProblem',
207
- 'ThePlanHasExpired'
204
+ 'ThePlanHasExpired',
205
+ "LABEL_AVAILABLE",
206
+ "LABEL_NOT_AVAILABLE",
207
+ "LABEL_INACTIVE"
208
208
  ]
209
209
 
210
210
  this.translate.get(keys).subscribe((text: string) => {
211
- this.EditProfileLabel = text['EditProfile'];
212
- this.IS_AVAILABLE_msg = text['Available']
213
- this.IS_UNAVAILABLE_msg = text['Unavailable']
214
- this.IS_BUSY_msg = text['Busy']
215
- this.LOGOUT_msg = text['LABEL_LOGOUT']
216
- this.SUBSCRIPTION_PAYMENT_PROBLEM_msg = text['SubscriptionPaymentProblem']
217
- this.THE_PLAN_HAS_EXPIRED_msg = text['ThePlanHasExpired']
211
+
212
+ this.translationsMap.set('LABEL_AVAILABLE',text['LABEL_AVAILABLE'])
213
+ .set('LABEL_NOT_AVAILABLE', text['LABEL_NOT_AVAILABLE'] )
214
+ .set('LABEL_INACTIVE', text['LABEL_INACTIVE'])
215
+ .set('EditProfile', text['EditProfile'])
216
+ .set('LABEL_BUSY', text['LABEL_BUSY'])
217
+ .set('LABEL_LOGOUT', text['LABEL_LOGOUT'])
218
+ .set('SubscriptionPaymentProblem', text['SubscriptionPaymentProblem'])
219
+ .set('ThePlanHasExpired', text['ThePlanHasExpired'])
220
+
221
+ this.teammateStatus.forEach(element => {
222
+ element.label = this.translationsMap.get(element.label)
223
+ });
218
224
 
219
225
  });
220
226
  }
@@ -249,48 +255,6 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
249
255
  }
250
256
  }
251
257
 
252
- getEditProfileTranslation() {
253
- this.translate.get('EditProfile').subscribe((text: string) => {
254
- this.EditProfileLabel = text
255
- });
256
- }
257
-
258
- getAvailableTranslation() {
259
- this.translate.get('Available').subscribe((text: string) => {
260
- this.IS_AVAILABLE_msg = text
261
- });
262
- }
263
- getUnavailableTranslation() {
264
- this.translate.get('Unavailable').subscribe((text: string) => {
265
- this.IS_UNAVAILABLE_msg = text
266
- });
267
- }
268
-
269
- getIsBusyTranslation() {
270
- this.translate.get('Busy').subscribe((text: string) => {
271
- this.IS_BUSY_msg = text
272
- });
273
- }
274
-
275
- getLogoutTranslation() {
276
- this.translate.get('LABEL_LOGOUT').subscribe((text: string) => {
277
- this.LOGOUT_msg = text
278
- });
279
- }
280
-
281
- getSubscriptionPaymentProblemTranslation() {
282
- this.translate.get('SubscriptionPaymentProblem').subscribe((text: string) => {
283
- this.SUBSCRIPTION_PAYMENT_PROBLEM_msg = text
284
- });
285
- }
286
-
287
- getThePlanHasExpiredTranslation() {
288
- this.translate.get('ThePlanHasExpired').subscribe((text: string) => {
289
- this.THE_PLAN_HAS_EXPIRED_msg = text
290
- });
291
- }
292
-
293
-
294
258
  listenToCurrentStoredProject() {
295
259
  this.events.subscribe('storage:last_project', projectObjct => {
296
260
  if (projectObjct && projectObjct !== 'undefined') {
@@ -360,7 +324,20 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
360
324
  this.logger.log('[SIDEBAR-USER-DETAILS] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS RES ', projectUser);
361
325
 
362
326
  if (projectUser) {
363
- this.IS_AVAILABLE = projectUser['user_available']
327
+ if (projectUser['user_available'] === false && projectUser['profileStatus'] === 'inactive') {
328
+ // console.log('teammateStatus ', this.teammateStatus)
329
+ this.selectedStatus = this.teammateStatus[2].id;
330
+ console.log('[SIDEBAR-USER-DETAILS] - PROFILE_STATUS selected option', this.teammateStatus[2].name);
331
+ this.teammateStatus = this.teammateStatus.slice(0)
332
+ } else if (projectUser['user_available'] === false && (projectUser['profileStatus'] === '' || !projectUser['profileStatus'])) {
333
+ this.selectedStatus = this.teammateStatus[1].id;
334
+ console.log('[SIDEBAR-USER-DETAILS] - PROFILE_STATUS selected option', this.teammateStatus[1].name);
335
+ this.teammateStatus = this.teammateStatus.slice(0)
336
+ } else if (projectUser['user_available'] === true && (projectUser['profileStatus'] === '' || !projectUser['profileStatus'])) {
337
+ this.selectedStatus = this.teammateStatus[0].id
338
+ this.teammateStatus = this.teammateStatus.slice(0)
339
+ console.log('[SIDEBAR-USER-DETAILS] - PROFILE_STATUS selected option', this.teammateStatus[0].name);
340
+ }
364
341
  this.IS_BUSY = projectUser['isBusy']
365
342
  this.USER_ROLE = projectUser['role']
366
343
  this.translateUserRole(this.USER_ROLE)
@@ -376,7 +353,7 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
376
353
  translateUserRole(role) {
377
354
  this.translate.get(role).subscribe((text: string) => {
378
355
  this.USER_ROLE_LABEL = text
379
- });
356
+ });
380
357
  }
381
358
 
382
359
 
@@ -386,10 +363,21 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
386
363
 
387
364
 
388
365
 
389
- changeAvailabilityStateInUserDetailsSidebar(available) {
390
- this.logger.log('[SIDEBAR-USER-DETAILS] - changeAvailabilityState projectid', this.project._id, ' available 1: ', available);
366
+ changeAvailabilityStateInUserDetailsSidebar(selectedStatusID) {
367
+ this.logger.log('[SIDEBAR-USER-DETAILS] - changeAvailabilityState projectid', this.project._id, ' available 1: ', selectedStatusID);
368
+
369
+ let IS_AVAILABLE = null
370
+ let profilestatus = ''
371
+ if (selectedStatusID === 1) {
372
+ IS_AVAILABLE = true
373
+ } else if (selectedStatusID === 2) {
374
+ IS_AVAILABLE = false
375
+ } else if (selectedStatusID === 3) {
376
+ IS_AVAILABLE = false
377
+ profilestatus = 'inactive'
378
+ }
391
379
 
392
- this.wsService.updateCurrentUserAvailability(this.tiledeskToken, this.project._id, available)
380
+ this.wsService.updateCurrentUserAvailability(this.tiledeskToken, this.project._id, IS_AVAILABLE, profilestatus)
393
381
  .subscribe((projectUser: any) => {
394
382
 
395
383
  this.logger.log('[SIDEBAR-USER-DETAILS] - PROJECT-USER UPDATED ', projectUser)
@@ -122,7 +122,7 @@ export class UserPresenceComponent implements OnInit, OnDestroy {
122
122
  this.logger.log('[USER-PRESENCE-COMP] userIsOnLine - userId: ', userId, ' - isOnline: ', isOnline);
123
123
  this.online = isOnline;
124
124
  if (isOnline) {
125
- this.status = this.translationMap.get('LABEL_ACTIVE_NOW');
125
+ this.status = this.translationMap.get('LABEL_AVAILABLE');
126
126
  } else {
127
127
  this.status = this.translationMap.get('LABEL_NOT_AVAILABLE');
128
128
  if (this.lastConnectionDate && this.lastConnectionDate.trim() !== '') {
@@ -591,12 +591,12 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
591
591
  const keys = [
592
592
  'LABEL_AVAILABLE',
593
593
  'LABEL_NOT_AVAILABLE',
594
+ 'LABEL_INACTIVE',
594
595
  'LABEL_TODAY',
595
596
  'LABEL_TOMORROW',
596
597
  'LABEL_TO',
597
598
  'LABEL_LAST_ACCESS',
598
599
  'ARRAY_DAYS',
599
- 'LABEL_ACTIVE_NOW',
600
600
  'LABEL_IS_WRITING',
601
601
  'LABEL_INFO_ADVANCED',
602
602
  'ID_CONVERSATION',
@@ -106,12 +106,12 @@ export class ProfileInfoPage implements OnInit {
106
106
  const keys = [
107
107
  'LABEL_AVAILABLE',
108
108
  'LABEL_NOT_AVAILABLE',
109
+ 'LABEL_INACTIVE',
109
110
  'LABEL_TODAY',
110
111
  'LABEL_TOMORROW',
111
112
  'LABEL_TO',
112
113
  'LABEL_LAST_ACCESS',
113
114
  'ARRAY_DAYS',
114
- 'LABEL_ACTIVE_NOW',
115
115
  'LABEL_IS_WRITING',
116
116
  'LABEL_LOGOUT'
117
117
  ];
@@ -61,7 +61,7 @@ export class WebsocketService {
61
61
  })
62
62
  }
63
63
 
64
- public updateCurrentUserAvailability(token: string, projectId: string, user_is_available: boolean) {
64
+ public updateCurrentUserAvailability(token: string, projectId: string, user_is_available: boolean, profile_status: string) {
65
65
  const httpOptions = {
66
66
  headers: new HttpHeaders({
67
67
  'Accept': 'application/json',
@@ -70,7 +70,10 @@ export class WebsocketService {
70
70
  })
71
71
  };
72
72
 
73
- const body = { 'user_available': user_is_available };
73
+ const body = {
74
+ 'user_available': user_is_available,
75
+ 'profileStatus': profile_status
76
+ };
74
77
 
75
78
  const url = this.apiUrl + projectId + '/project_users/';
76
79
 
@@ -1,3 +1,5 @@
1
+ import { FormsModule } from '@angular/forms';
2
+ import { NgSelectModule } from '@ng-select/ng-select';
1
3
  import { NetworkOfflineComponent } from './../components/network-offline/network-offline.component';
2
4
  import { ContactsDirectoryComponent } from './../components/contacts-directory/contacts-directory.component';
3
5
  import { HtmlComponent } from './../chatlib/conversation-detail/message/html/html.component';
@@ -140,6 +142,8 @@ import { SafeHtmlPipe } from '../directives/safe-html.pipe';
140
142
  CommonModule,
141
143
  IonicModule,
142
144
  MomentModule,
145
+ NgSelectModule,
146
+ FormsModule,
143
147
  TooltipModule.forRoot(DefaultTooltipOptions as TooltipOptions)
144
148
 
145
149
  ],
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "أنت: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "لا محادثة حتى الآن",
4
4
  "LABEL_MSG_START_CHAT": "ابدأ الدردشة",
5
- "LABEL_ACTIVE_NOW": "متوفرة",
6
5
  "LABEL_AVAILABLE": "متوفرة",
7
6
  "LABEL_NOT_AVAILABLE": "غير متاح",
7
+ "LABEL_INACTIVE":"غير نشط",
8
8
  "LABEL_NO_MSG_HERE": "لا توجد رسالة هنا حتى الآن ...",
9
9
  "LABEL_TODAY": "اليوم",
10
10
  "LABEL_TOMORROW": "في الامس",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "معرف المستخدم",
186
186
  "CLOSE_TOAST": "قريب",
187
187
  "WAITING_FOR_NETWORK": "في انتظار الشبكة",
188
- "Available": "متوفرة",
189
- "Unavailable": "غير متوفره",
190
- "Busy": "مشغول",
191
188
  "YouAreAboutToJoinThisChat": "إذا انضممت إلى هذه المحادثة ، فستظهر في قائمة المحادثة. سيتعين عليك بعد ذلك تحديده ، بعد إغلاق الشريط الجانبي للمحادثات غير المعينة ، لبدء الدردشة مع المستخدم",
192
189
  "Cancel": "يلغي",
193
190
  "AreYouSure": "هل أنت متأكد؟",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "Sən: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Hələ söhbət yoxdur",
4
4
  "LABEL_MSG_START_CHAT": "Söhbətə başlayın",
5
- "LABEL_ACTIVE_NOW": "mövcuddur",
6
5
  "LABEL_AVAILABLE": "mövcuddur",
7
6
  "LABEL_NOT_AVAILABLE": "Mövcud deyil",
7
+ "LABEL_INACTIVE":"qeyri-aktiv",
8
8
  "LABEL_NO_MSG_HERE": "Burada hələ mesaj yoxdur...",
9
9
  "LABEL_TODAY": "bu gün",
10
10
  "LABEL_TOMORROW": "dünən",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "İstifadəçi adı",
186
186
  "CLOSE_TOAST": "Yaxın",
187
187
  "WAITING_FOR_NETWORK": "Şəbəkə gözlənilir",
188
- "Available": "Mövcuddur",
189
- "Unavailable": "Əlçatan deyil",
190
- "Busy": "Məşğul",
191
188
  "YouAreAboutToJoinThisChat": "Bu söhbətə qoşulsanız, söhbət siyahısında görünəcək. Daha sonra istifadəçi ilə söhbətə başlamaq üçün təyin edilməmiş söhbətlərin yan panelini bağladıqdan sonra onu seçməli olacaqsınız",
192
189
  "Cancel": "Ləğv et",
193
190
  "AreYouSure": "Sən əminsən?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "sie: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Noch kein Gespräch",
4
4
  "LABEL_MSG_START_CHAT": "Fangen Sie an zu chatten",
5
- "LABEL_ACTIVE_NOW": "erhältlich",
6
5
  "LABEL_AVAILABLE": "erhältlich",
7
6
  "LABEL_NOT_AVAILABLE": "Nicht verfügbar",
7
+ "LABEL_INACTIVE":"inaktiv",
8
8
  "LABEL_NO_MSG_HERE": "Hier noch keine Nachricht...",
9
9
  "LABEL_TODAY": "heute",
10
10
  "LABEL_TOMORROW": "gestern",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "Benutzeridentifikation",
186
186
  "CLOSE_TOAST": "Nah dran",
187
187
  "WAITING_FOR_NETWORK": "Warte auf Netzwerk",
188
- "Available": "Erhältlich",
189
- "Unavailable": "Nicht verfügbar",
190
- "Busy": "Beschäftigt",
191
188
  "YouAreAboutToJoinThisChat": "Wenn Sie an dieser Konversation teilnehmen, wird sie in der Konversationsliste angezeigt. Sie müssen es dann auswählen, nachdem Sie die Seitenleiste für nicht zugewiesene Konversationen geschlossen haben, um mit dem Benutzer zu chatten",
192
189
  "Cancel": "Abbrechen",
193
190
  "AreYouSure": "Bist du sicher?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "you: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "No conversation yet",
4
4
  "LABEL_MSG_START_CHAT": "Start chatting",
5
- "LABEL_ACTIVE_NOW": "available",
6
5
  "LABEL_AVAILABLE": "available",
7
6
  "LABEL_NOT_AVAILABLE": "not available",
7
+ "LABEL_INACTIVE":"inactive",
8
8
  "LABEL_NO_MSG_HERE": "Still no message here...",
9
9
  "LABEL_TODAY": "today",
10
10
  "LABEL_TOMORROW": "yesterday",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "User ID",
186
186
  "CLOSE_TOAST": "Close",
187
187
  "WAITING_FOR_NETWORK": "Waiting for network",
188
- "Available": "Available",
189
- "Unavailable": "Unavailable",
190
- "Busy": "Busy",
191
188
  "YouAreAboutToJoinThisChat": "If you join this conversation, it will appear in the conversation list. You will then have to select it, after closing the unassigned conversations sidebar, to start chatting with the user",
192
189
  "Cancel": "Cancel",
193
190
  "AreYouSure": "Are you sure?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "tú: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Aún no hay conversación",
4
4
  "LABEL_MSG_START_CHAT": "Empezar a chatear",
5
- "LABEL_ACTIVE_NOW": "disponible",
6
5
  "LABEL_AVAILABLE": "disponible",
7
6
  "LABEL_NOT_AVAILABLE": "no disponible",
7
+ "LABEL_INACTIVE":"inactiva",
8
8
  "LABEL_NO_MSG_HERE": "Todavía no hay mensajes...",
9
9
  "LABEL_TODAY": "hoy",
10
10
  "LABEL_TOMORROW": "ayer",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "ID Usuario",
186
186
  "CLOSE_TOAST": "Cerrar",
187
187
  "WAITING_FOR_NETWORK": "Esperando a la red",
188
- "Available": "Disponible",
189
- "Unavailable": "Indisponible",
190
- "Busy": "Ocupado",
191
188
  "YouAreAboutToJoinThisChat": "Si te unes a esta conversación, aparecerá en la lista de conversaciones. Luego deberá seleccionarlo, después de cerrar la barra lateral de conversaciones no asignadas, para comenzar a chatear con el usuario.",
192
189
  "Cancel": "Cancelar",
193
190
  "AreYouSure": "¿Estás seguro?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "vous: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Pas encore de conversation",
4
4
  "LABEL_MSG_START_CHAT": "Commencez à discuter",
5
- "LABEL_ACTIVE_NOW": "disponible",
6
5
  "LABEL_AVAILABLE": "disponible",
7
6
  "LABEL_NOT_AVAILABLE": "indisponible",
7
+ "LABEL_INACTIVE":"inactif",
8
8
  "LABEL_NO_MSG_HERE": "Toujours pas de message ici...",
9
9
  "LABEL_TODAY": "aujourd'hui",
10
10
  "LABEL_TOMORROW": "hier",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "Identifiant d'utilisateur",
186
186
  "CLOSE_TOAST": "Fermer",
187
187
  "WAITING_FOR_NETWORK": "En attente de réseau",
188
- "Available": "Disponible",
189
- "Unavailable": "Indisponible",
190
- "Busy": "Occupé",
191
188
  "YouAreAboutToJoinThisChat": "Si vous rejoignez cette conversation, elle apparaîtra dans la liste des conversations. Vous devrez ensuite le sélectionner, après avoir fermé la barre latérale des conversations non attribuées, pour commencer à discuter avec l'utilisateur",
192
189
  "Cancel": "Annuler",
193
190
  "AreYouSure": "Es-tu sûr?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "tu: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Ancora nessuna conversazione",
4
4
  "LABEL_MSG_START_CHAT": "inizia a chattare",
5
- "LABEL_ACTIVE_NOW": "disponibile",
6
5
  "LABEL_AVAILABLE": "disponibile",
7
6
  "LABEL_NOT_AVAILABLE": "non disponibile",
7
+ "LABEL_INACTIVE":"inattivo",
8
8
  "LABEL_NO_MSG_HERE": "Ancora nessun messaggio qui...",
9
9
  "LABEL_TODAY": "oggi",
10
10
  "LABEL_TOMORROW": "ieri",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "ID utente",
186
186
  "CLOSE_TOAST": "Chiudi",
187
187
  "WAITING_FOR_NETWORK": "In attesa di rete",
188
- "Available": "Disponibile",
189
- "Unavailable": "Non disponibile",
190
- "Busy": "Occupato",
191
188
  "YouAreAboutToJoinThisChat": "Se ti unisci a questa conversazione, apparirà nell'elenco delle conversazioni. Dovrai quindi selezionarla, dopo aver chiuso la barra laterale delle conversazioni non assegnate, per iniziare a chattare con l'utente",
192
189
  "Cancel": "Annulla",
193
190
  "AreYouSure": "Sei sicuro?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "сен: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Әзірге әңгіме жоқ",
4
4
  "LABEL_MSG_START_CHAT": "Сөйлесуді бастаңыз",
5
- "LABEL_ACTIVE_NOW": "қолжетімді",
6
5
  "LABEL_AVAILABLE": "қолжетімді",
7
6
  "LABEL_NOT_AVAILABLE": "жоқ",
7
+ "LABEL_INACTIVE":"белсенді емес",
8
8
  "LABEL_NO_MSG_HERE": "Бұл жерде әлі хабар жоқ...",
9
9
  "LABEL_TODAY": "бүгін",
10
10
  "LABEL_TOMORROW": "кеше",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "Қолданушының ID",
186
186
  "CLOSE_TOAST": "Жабық",
187
187
  "WAITING_FOR_NETWORK": "Желі күтілуде",
188
- "Available": "Қол жетімді",
189
- "Unavailable": "Қолжетімсіз",
190
- "Busy": "Бос емес",
191
188
  "YouAreAboutToJoinThisChat": "Егер сіз осы әңгімеге қосылсаңыз, ол сөйлесулер тізімінде пайда болады. Пайдаланушымен сөйлесуді бастау үшін тағайындалмаған сөйлесулердің бүйірлік тақтасын жапқаннан кейін оны таңдау керек",
192
189
  "Cancel": "Болдырмау",
193
190
  "AreYouSure": "Сіз сенімдісіз бе?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "vocês: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Nenhuma conversa ainda",
4
4
  "LABEL_MSG_START_CHAT": "Começar a conversar",
5
- "LABEL_ACTIVE_NOW": "disponível",
6
5
  "LABEL_AVAILABLE": "disponível",
7
6
  "LABEL_NOT_AVAILABLE": "não disponível",
7
+ "LABEL_INACTIVE":"inativo",
8
8
  "LABEL_NO_MSG_HERE": "Ainda sem mensagem aqui...",
9
9
  "LABEL_TODAY": "hoje",
10
10
  "LABEL_TOMORROW": "ontem",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "ID do usuário",
186
186
  "CLOSE_TOAST": "Fechar",
187
187
  "WAITING_FOR_NETWORK": "Aguardando rede",
188
- "Available": "Disponível",
189
- "Unavailable": "Indisponível",
190
- "Busy": "Ocupado",
191
188
  "YouAreAboutToJoinThisChat": "Se você participar desta conversa, ela aparecerá na lista de conversas. Você terá que selecioná-lo, depois de fechar a barra lateral de conversas não atribuídas, para começar a conversar com o usuário",
192
189
  "Cancel": "Cancelar",
193
190
  "AreYouSure": "Tem certeza?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "ты: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Разговора пока нет",
4
4
  "LABEL_MSG_START_CHAT": "Начать чат",
5
- "LABEL_ACTIVE_NOW": "имеется в наличии",
6
5
  "LABEL_AVAILABLE": "имеется в наличии",
7
6
  "LABEL_NOT_AVAILABLE": "недоступно",
7
+ "LABEL_INACTIVE":"неактивный",
8
8
  "LABEL_NO_MSG_HERE": "До сих пор нет сообщения здесь...",
9
9
  "LABEL_TODAY": "сегодня",
10
10
  "LABEL_TOMORROW": "вчерашний день",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "Идентификатор пользователя",
186
186
  "CLOSE_TOAST": "Закрывать",
187
187
  "WAITING_FOR_NETWORK": "Ожидание сети",
188
- "Available": "Доступный",
189
- "Unavailable": "Недоступен",
190
- "Busy": "Занятый",
191
188
  "YouAreAboutToJoinThisChat": "Если вы присоединитесь к этой беседе, она появится в списке бесед. Затем вам нужно будет выбрать его после закрытия боковой панели неназначенных разговоров, чтобы начать общение с пользователем.",
192
189
  "Cancel": "Отмена",
193
190
  "AreYouSure": "Уверены ли вы?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "ти: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Још нема разговора",
4
4
  "LABEL_MSG_START_CHAT": "Почнете разговор",
5
- "LABEL_ACTIVE_NOW": "на располагању",
6
5
  "LABEL_AVAILABLE": "на располагању",
7
6
  "LABEL_NOT_AVAILABLE": "није доступно",
7
+ "LABEL_INACTIVE":"неактиван",
8
8
  "LABEL_NO_MSG_HERE": "Још увек нема поруке овде...",
9
9
  "LABEL_TODAY": "данас",
10
10
  "LABEL_TOMORROW": "јуче",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "ИД корисник",
186
186
  "CLOSE_TOAST": "Затвори",
187
187
  "WAITING_FOR_NETWORK": "Чека се мрежа",
188
- "Available": "На располагању",
189
- "Unavailable": "Недоступно",
190
- "Busy": "Заузет",
191
188
  "YouAreAboutToJoinThisChat": "Ако се придружите овој конверзацији, она ће се појавити на листи разговора. Затим ћете морати да га изаберете, након што затворите бочну траку недодељених разговора, да бисте започели ћаскање са корисником",
192
189
  "Cancel": "Поништити, отказати",
193
190
  "AreYouSure": "Да ли сте сигурни?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "du: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Ingen konversation ännu",
4
4
  "LABEL_MSG_START_CHAT": "Börja chatta",
5
- "LABEL_ACTIVE_NOW": "tillgängligt",
6
5
  "LABEL_AVAILABLE": "tillgängligt",
7
6
  "LABEL_NOT_AVAILABLE": "inte tillgänglig",
7
+ "LABEL_INACTIVE":"inaktiv",
8
8
  "LABEL_NO_MSG_HERE": "Fortfarande inget meddelande här...",
9
9
  "LABEL_TODAY": "i dag",
10
10
  "LABEL_TOMORROW": "i går",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "användar ID",
186
186
  "CLOSE_TOAST": "Stänga",
187
187
  "WAITING_FOR_NETWORK": "Väntar på nätverk",
188
- "Available": "Tillgängligt",
189
- "Unavailable": "Inte tillgänglig",
190
- "Busy": "Upptagen",
191
188
  "YouAreAboutToJoinThisChat": "Om du går med i den här konversationen kommer den att visas i konversationslistan. Du måste sedan välja den, efter att ha stängt sidofältet för otilldelade konversationer, för att börja chatta med användaren",
192
189
  "Cancel": "Annullera",
193
190
  "AreYouSure": "Är du säker?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "sen: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Henüz görüşme yok",
4
4
  "LABEL_MSG_START_CHAT": "Sohbeti başlat",
5
- "LABEL_ACTIVE_NOW": "mevcut",
6
5
  "LABEL_AVAILABLE": "mevcut",
7
6
  "LABEL_NOT_AVAILABLE": "müsait değil",
7
+ "LABEL_INACTIVE":"etkin değil",
8
8
  "LABEL_NO_MSG_HERE": "Hala mesaj yok...",
9
9
  "LABEL_TODAY": "bugün",
10
10
  "LABEL_TOMORROW": "dün",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "Kullanıcı kimliği",
186
186
  "CLOSE_TOAST": "Kapat",
187
187
  "WAITING_FOR_NETWORK": "Ağ bekleniyor",
188
- "Available": "Mevcut",
189
- "Unavailable": "Kullanım dışı",
190
- "Busy": "Meşgul",
191
188
  "YouAreAboutToJoinThisChat": "Bu sohbete katılırsanız, konuşma listesinde görünecektir. Daha sonra, kullanıcıyla sohbet etmeye başlamak için, atanmamış konuşmaların kenar çubuğunu kapattıktan sonra onu seçmeniz gerekecektir.",
192
189
  "Cancel": "İptal etmek",
193
190
  "AreYouSure": "Emin misin?",
@@ -2,9 +2,9 @@
2
2
  "LABEL_TU": "ти: ",
3
3
  "LABEL_MSG_PUSH_START_CHAT": "Розмови ще немає",
4
4
  "LABEL_MSG_START_CHAT": "Почніть спілкуватися",
5
- "LABEL_ACTIVE_NOW": "доступний",
6
5
  "LABEL_AVAILABLE": "доступний",
7
6
  "LABEL_NOT_AVAILABLE": "недоступний",
7
+ "LABEL_INACTIVE":"неактивний",
8
8
  "LABEL_NO_MSG_HERE": "Тут досі немає повідомлення...",
9
9
  "LABEL_TODAY": "сьогодні",
10
10
  "LABEL_TOMORROW": "вчора",
@@ -185,9 +185,6 @@
185
185
  "USER_ID": "ідентифікатор користувача",
186
186
  "CLOSE_TOAST": "Закрити",
187
187
  "WAITING_FOR_NETWORK": "Очікування мережі",
188
- "Available": "Доступний",
189
- "Unavailable": "Недоступно",
190
- "Busy": "Зайняте",
191
188
  "YouAreAboutToJoinThisChat": "Якщо ви приєднаєтесь до цієї розмови, вона з’явиться в списку розмов. Потім вам потрібно буде вибрати його, закривши бічну панель непризначених розмов, щоб почати спілкуватися з користувачем",
192
189
  "Cancel": "Скасувати",
193
190
  "AreYouSure": "Ти впевнений?",
@@ -3,9 +3,9 @@
3
3
  "LABEL_TU": "siz: ",
4
4
  "LABEL_MSG_PUSH_START_CHAT": "Hali suhbat yo'q",
5
5
  "LABEL_MSG_START_CHAT": "Suhbatni boshlang",
6
- "LABEL_ACTIVE_NOW": "mavjud",
7
6
  "LABEL_AVAILABLE": "mavjud",
8
7
  "LABEL_NOT_AVAILABLE": "mavjud emas",
8
+ "LABEL_INACTIVE":"harakatsiz",
9
9
  "LABEL_NO_MSG_HERE": "Bu yerda hali xabar yo'q...",
10
10
  "LABEL_TODAY": "Bugun",
11
11
  "LABEL_TOMORROW": "kecha",
@@ -186,9 +186,6 @@
186
186
  "USER_ID": "foydalanuvchi IDsi",
187
187
  "CLOSE_TOAST": "Yopish",
188
188
  "WAITING_FOR_NETWORK": "Tarmoq kutilmoqda",
189
- "Available": "Mavjud",
190
- "Unavailable": "Mavjud emas",
191
- "Busy": "Band",
192
189
  "YouAreAboutToJoinThisChat": "Agar siz ushbu suhbatga qo'shilsangiz, u suhbatlar ro'yxatida paydo bo'ladi. Keyin, tayinlanmagan suhbatlar yon panelini yopganingizdan so'ng, foydalanuvchi bilan suhbatni boshlash uchun uni tanlashingiz kerak bo'ladi",
193
190
  "Cancel": "Bekor qilish",
194
191
  "AreYouSure": "Ishonchingiz komilmi?",
@@ -0,0 +1,9 @@
1
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
3
+ <style type="text/css">
4
+ .st0{fill:none;}
5
+ .st1{fill:#4CAF50;}
6
+ </style>
7
+ <path class="st0" d="M0,0h24v24H0V0z"/>
8
+ <path class="st1" d="M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10s10-4.5,10-10S17.5,2,12,2z"/>
9
+ </svg>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
5
+ <style type="text/css">
6
+ .st0{fill:none;}
7
+ .st1{fill:#697482;}
8
+ </style>
9
+ <path class="st0" d="M0,0h24v24H0V0z"/>
10
+ <path class="st1" d="M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10s10-4.5,10-10S17.5,2,12,2z"/>
11
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
2
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
3
+ <style type="text/css">
4
+ .st0{fill:none;}
5
+ .st1{fill:#F44336;}
6
+ </style>
7
+ <path class="st0" d="M0,0h24v24H0V0z"/>
8
+ <path class="st1" d="M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10s10-4.5,10-10S17.5,2,12,2z"/>
9
+ </svg>
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "apiUrl": "https://tiledesk-server-pre.herokuapp.com/",
25
25
  "baseImageUrl": "https://firebasestorage.googleapis.com/v0/b/",
26
- "dashboardUrl": "/dashboard/",
26
+ "dashboardUrl": "https://support-pre.tiledesk.com/dashboard/",
27
27
  "logLevel": "DEBUG",
28
28
  "authPersistence": "LOCAL",
29
29
  "supportMode": true,
package/src/global.scss CHANGED
@@ -603,12 +603,6 @@ select:-webkit-autofill:focus {
603
603
  max-width: 35px;
604
604
  }
605
605
 
606
- .small-sidebar-status-icon {
607
- left: 26px !important;
608
- bottom: -1px !important;
609
- width: 12px !important;
610
- height: 12px !important;
611
- }
612
606
 
613
607
  .status-icon {
614
608
  position: absolute;
@@ -619,6 +613,11 @@ select:-webkit-autofill:focus {
619
613
  border: 2px solid #2d323e;
620
614
  border-radius: 50%;
621
615
  // background-color: #4caf50;
616
+
617
+ left: 26px;
618
+ bottom: -1px;
619
+ width: 12px;
620
+ height: 12px;
622
621
  }
623
622
 
624
623
  .small-sidebar-camera-icon {
@@ -696,9 +695,6 @@ select:-webkit-autofill:focus {
696
695
  color: #fff !important;
697
696
  pointer-events: none;
698
697
  }
699
- .is-user-online {
700
- background-color: #4caf50;
701
- }
702
698
 
703
699
  .is-desktop-menu {
704
700
  margin-top: 40px;
@@ -786,6 +782,9 @@ select:-webkit-autofill:focus {
786
782
  .is-user-offline {
787
783
  background-color: #f44336;
788
784
  }
785
+ .is-user-inactive {
786
+ background-color: #697482;
787
+ }
789
788
 
790
789
  .is-desktop-menu {
791
790
  margin-top: 40px;
@@ -794,6 +793,65 @@ select:-webkit-autofill:focus {
794
793
  margin-top: 0px;
795
794
  }
796
795
 
796
+ // select teammate status in user detail drawer
797
+ .ng-select.teammate-status-in-drawer {
798
+
799
+ .ng-select-container {
800
+ background-color: #2d323e;
801
+ color: #fff;
802
+ border: 1px solid #2d323e;
803
+ }
804
+ &.ng-select-opened{
805
+ .ng-select-container {
806
+ background-color: #2d323e;
807
+ border: 1px solid #2d323e;
808
+ }
809
+ }
810
+
811
+ &.ng-select-focused:not(.ng-select-opened){
812
+ >.ng-select-container{
813
+ border: 1px solid #2d323e;
814
+ box-shadow: unset;
815
+ }
816
+ }
817
+
818
+
819
+ }
820
+
821
+ .ng-dropdown-panel {
822
+ background-color: #2d323e;
823
+ border: 1px solid #2d323e;
824
+
825
+ &.ng-select-bottom {
826
+ border: 1px solid #2d323e;
827
+ margin-top: 8px;
828
+ border-top-right-radius: 4px;
829
+ border-top-left-radius: 4px;
830
+ }
831
+
832
+ .ng-dropdown-panel-items {
833
+ .ng-option {
834
+ background-color: #2d323e;
835
+ color: #fff;
836
+
837
+ &.ng-option-marked {
838
+ background-color: rgba(30, 33, 41, 0.3);
839
+ color: #fff;
840
+ }
841
+
842
+ &.ng-option-selected {
843
+ background-color: #2d323e;
844
+ color: #fff;
845
+ }
846
+
847
+ &.ng-option-marked.ng-option-selected{
848
+ background-color: rgba(30, 33, 41, 0.3);
849
+ color: #fff;
850
+ }
851
+ }
852
+
853
+ }
854
+ }
797
855
 
798
856
 
799
857
  /* *** SMALL SIDEBAR STYLE *** */