@chat21/chat21-ionic 3.0.60-rc9 → 3.0.61-rc4

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 (89) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +2 -0
  3. package/angular.json +2 -0
  4. package/env.sample +3 -1
  5. package/package.json +5 -1
  6. package/src/app/app.component.html +12 -3
  7. package/src/app/app.component.scss +17 -1
  8. package/src/app/app.component.ts +27 -4
  9. package/src/app/app.module.ts +2 -1
  10. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +7 -2
  11. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +34 -6
  12. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +31 -35
  13. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +4 -0
  14. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +15 -1
  15. package/src/app/components/ddp-header/ddp-header.component.html +13 -6
  16. package/src/app/components/ddp-header/ddp-header.component.scss +4 -0
  17. package/src/app/components/ddp-header/ddp-header.component.ts +21 -2
  18. package/src/app/components/project-item/project-item.component.html +7 -6
  19. package/src/app/components/project-item/project-item.component.scss +6 -1
  20. package/src/app/components/project-item/project-item.component.ts +15 -2
  21. package/src/app/components/sidebar/sidebar.component.html +210 -0
  22. package/src/app/components/sidebar/sidebar.component.scss +11 -0
  23. package/src/app/components/sidebar/sidebar.component.spec.ts +24 -0
  24. package/src/app/components/sidebar/sidebar.component.ts +400 -0
  25. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +102 -0
  26. package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +310 -0
  27. package/src/app/components/sidebar-user-details/sidebar-user-details.component.spec.ts +24 -0
  28. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +421 -0
  29. package/src/app/pages/conversation-detail/conversation-detail.page.ts +21 -20
  30. package/src/app/pages/conversations-list/conversations-list.page.html +14 -7
  31. package/src/app/pages/conversations-list/conversations-list.page.ts +60 -23
  32. package/src/app/pages/profile-info/profile-info.page.html +2 -2
  33. package/src/app/pages/profile-info/profile-info.page.ts +23 -21
  34. package/src/app/shared/shared.module.ts +13 -0
  35. package/src/assets/i18n/de.json +30 -12
  36. package/src/assets/i18n/en.json +22 -4
  37. package/src/assets/i18n/es.json +22 -4
  38. package/src/assets/i18n/fr.json +22 -4
  39. package/src/assets/i18n/it.json +22 -4
  40. package/src/assets/i18n/pt.json +22 -4
  41. package/src/assets/i18n/ru.json +22 -4
  42. package/src/assets/i18n/tr.json +24 -5
  43. package/src/assets/images/language_flag/ar.png +0 -0
  44. package/src/assets/images/language_flag/bg.png +0 -0
  45. package/src/assets/images/language_flag/ca.png +0 -0
  46. package/src/assets/images/language_flag/cs.png +0 -0
  47. package/src/assets/images/language_flag/da.png +0 -0
  48. package/src/assets/images/language_flag/de.png +0 -0
  49. package/src/assets/images/language_flag/el.png +0 -0
  50. package/src/assets/images/language_flag/en.png +0 -0
  51. package/src/assets/images/language_flag/es.png +0 -0
  52. package/src/assets/images/language_flag/fa.png +0 -0
  53. package/src/assets/images/language_flag/fi.png +0 -0
  54. package/src/assets/images/language_flag/fr.png +0 -0
  55. package/src/assets/images/language_flag/he.png +0 -0
  56. package/src/assets/images/language_flag/hi.png +0 -0
  57. package/src/assets/images/language_flag/hr.png +0 -0
  58. package/src/assets/images/language_flag/hu.png +0 -0
  59. package/src/assets/images/language_flag/id.png +0 -0
  60. package/src/assets/images/language_flag/it.png +0 -0
  61. package/src/assets/images/language_flag/ja.png +0 -0
  62. package/src/assets/images/language_flag/ko.png +0 -0
  63. package/src/assets/images/language_flag/ml-IN.png +0 -0
  64. package/src/assets/images/language_flag/ne-NP.png +0 -0
  65. package/src/assets/images/language_flag/nl.png +0 -0
  66. package/src/assets/images/language_flag/no.png +0 -0
  67. package/src/assets/images/language_flag/pl.png +0 -0
  68. package/src/assets/images/language_flag/pt-BR.png +0 -0
  69. package/src/assets/images/language_flag/pt.png +0 -0
  70. package/src/assets/images/language_flag/ro.png +0 -0
  71. package/src/assets/images/language_flag/ru.png +0 -0
  72. package/src/assets/images/language_flag/sk.png +0 -0
  73. package/src/assets/images/language_flag/sl.png +0 -0
  74. package/src/assets/images/language_flag/sr.png +0 -0
  75. package/src/assets/images/language_flag/sv-SE.png +0 -0
  76. package/src/assets/images/language_flag/ta.png +0 -0
  77. package/src/assets/images/language_flag/th.png +0 -0
  78. package/src/assets/images/language_flag/tr.png +0 -0
  79. package/src/assets/images/language_flag/uk.png +0 -0
  80. package/src/assets/images/language_flag/vi.png +0 -0
  81. package/src/assets/images/language_flag/zh-CN.png +0 -0
  82. package/src/assets/images/language_flag/zh-TW.png +0 -0
  83. package/src/assets/images/no_image_user.png +0 -0
  84. package/src/assets/tiledesk-solo-logo.png +0 -0
  85. package/src/chat-config-pre-test.json +3 -1
  86. package/src/chat-config-template.json +3 -1
  87. package/src/chat-config.json +4 -2
  88. package/src/global.scss +451 -3
  89. package/src/index.html +7 -0
@@ -0,0 +1,421 @@
1
+ import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnInit, Output } from '@angular/core';
2
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
3
+ import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
4
+ import { TranslateService } from '@ngx-translate/core';
5
+ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
6
+ import { ImageRepoService } from 'src/chat21-core/providers/abstract/image-repo.service';
7
+ import { AppStorageService } from 'src/chat21-core/providers/abstract/app-storage.service';
8
+ import { MessagingAuthService } from 'src/chat21-core/providers/abstract/messagingAuth.service';
9
+ import { WebsocketService } from 'src/app/services/websocket/websocket.service';
10
+ import { skip } from 'rxjs/operators';
11
+ import { AppConfigProvider } from 'src/app/services/app-config';
12
+ import { EventsService } from 'src/app/services/events-service';
13
+
14
+
15
+ @Component({
16
+ selector: 'app-sidebar-user-details',
17
+ templateUrl: './sidebar-user-details.component.html',
18
+ styleUrls: ['./sidebar-user-details.component.scss'],
19
+ })
20
+ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
21
+ HAS_CLICKED_OPEN_USER_DETAIL: boolean = false;
22
+ // @Output() onCloseUserDetailsSidebar = new EventEmitter();
23
+
24
+
25
+ public browserLang: string;
26
+ private logger: LoggerService = LoggerInstance.getInstance()
27
+ chat_lang: string
28
+ flag_url: string;
29
+ photo_profile_URL: string;
30
+ IS_BUSY: boolean;
31
+ IS_AVAILABLE: boolean;
32
+ USER_ROLE: boolean;
33
+ USER_ROLE_LABEL: string;
34
+ IS_BUSY_msg: string;
35
+ IS_AVAILABLE_msg: string;
36
+ IS_UNAVAILABLE_msg: string;
37
+ SUBSCRIPTION_PAYMENT_PROBLEM_msg: string;
38
+ THE_PLAN_HAS_EXPIRED_msg: string;
39
+ PAYD_PLAN_NAME_PRO_msg: string;
40
+ PAYD_PLAN_NAME_ENTERPRISE_msg: string;
41
+ PRO_PLAN_TRIAL_msg: string;
42
+ FREE_PLAN_msg: string;
43
+ profile_name_translated: string;
44
+ SubscriptionPaymentProblem: string;
45
+ user: any
46
+ projectID: any
47
+ tiledeskToken: string;
48
+ prjct_name: string;
49
+ plan_type: string;
50
+ _prjct_profile_name: string;
51
+
52
+ isVisiblePAY: boolean;
53
+ public_Key: any
54
+ plan_name: string;
55
+ plan_subscription_is_active: boolean;
56
+ constructor(
57
+ private translate: TranslateService,
58
+ public tiledeskAuthService: TiledeskAuthService,
59
+ public imageRepoService: ImageRepoService,
60
+ public appStorageService: AppStorageService,
61
+ private messagingAuthService: MessagingAuthService,
62
+ public wsService: WebsocketService,
63
+ public appConfigProvider: AppConfigProvider,
64
+ public events: EventsService,
65
+ private eRef: ElementRef,
66
+ ) { }
67
+
68
+ ngOnInit() {
69
+ this.getCurrentChatLangAndTranslateLabels();
70
+ this.subcribeToAuthStateChanged();
71
+ this.listenTocurrentProjectUserUserAvailability$();
72
+ this.getCurrentStoredProject();
73
+ this.getOSCODE();
74
+ this.listenOpenUserSidebarEvent();
75
+ }
76
+
77
+ listenOpenUserSidebarEvent() {
78
+ this.events.subscribe('userdetailsidebar:opened', (openUserDetailsSidebar) => {
79
+ this.logger.log('[SIDEBAR-USER-DETAILS] - listenOpenUserSidebarEvent - openUserDetailsSidebar', openUserDetailsSidebar);
80
+ this.HAS_CLICKED_OPEN_USER_DETAIL = true;
81
+ });
82
+ }
83
+
84
+ @HostListener('document:click', ['$event'])
85
+ clickout(event) {
86
+ this.logger.log('[SIDEBAR-USER-DETAILS] clickout event.target)', event.target)
87
+ this.logger.log('[SIDEBAR-USER-DETAILS] clickout event.target)', event.target.id)
88
+ const clicked_element_id = event.target.id
89
+ if (this.eRef.nativeElement.contains(event.target)) {
90
+ this.logger.log('[SIDEBAR-USER-DETAILS] clicked inside')
91
+ } else {
92
+ this.logger.log('[SIDEBAR-USER-DETAILS] HAS_CLICKED_OPEN_USER_DETAIL ', this.HAS_CLICKED_OPEN_USER_DETAIL)
93
+ if (this.HAS_CLICKED_OPEN_USER_DETAIL === true) {
94
+ if (!clicked_element_id.startsWith("sidebaravatar")) {
95
+ this.closeUserDetailSidePanel();
96
+ }
97
+ // this.logger.log('[SIDEBAR-USER-DETAILS] clicked outside')
98
+ }
99
+ }
100
+ }
101
+
102
+ getCurrentChatLangAndTranslateLabels() {
103
+ this.browserLang = this.translate.getBrowserLang();
104
+ const currentUser = JSON.parse(this.appStorageService.getItem('currentUser'));
105
+ this.logger.log('[SIDEBAR-USER-DETAILS] - ngOnInit - currentUser ', currentUser)
106
+ this.logger.log('[SIDEBAR-USER-DETAILS] - ngOnInit - browserLang ', this.browserLang)
107
+ let currentUserId = ''
108
+ if (currentUser) {
109
+ currentUserId = currentUser.uid
110
+ this.logger.log('[SIDEBAR-USER-DETAILS] - ngOnInit - currentUserId ', currentUserId)
111
+ }
112
+
113
+ const stored_preferred_lang = localStorage.getItem(currentUserId + '_lang');
114
+ this.logger.log('[SIDEBAR-USER-DETAILS] stored_preferred_lang: ', stored_preferred_lang);
115
+
116
+
117
+ this.chat_lang = ''
118
+ if (this.browserLang && !stored_preferred_lang) {
119
+ this.chat_lang = this.browserLang
120
+ this.flag_url = "assets/images/language_flag/" + this.chat_lang + ".png"
121
+
122
+ this.logger.log('[SIDEBAR-USER-DETAILS] flag_url: ', this.flag_url);
123
+ this.logger.log('[SIDEBAR-USER-DETAILS] chat_lang: ', this.chat_lang);
124
+ } else if (this.browserLang && stored_preferred_lang) {
125
+ this.chat_lang = stored_preferred_lang
126
+ this.flag_url = "assets/images/language_flag/" + this.chat_lang + ".png"
127
+ this.logger.log('[SIDEBAR-USER-DETAILS] flag_url: ', this.flag_url);
128
+ this.logger.log('[SIDEBAR-USER-DETAILS] chat_lang: ', this.chat_lang);
129
+ }
130
+
131
+ this.translate.use(this.chat_lang);
132
+ this.translateLabels()
133
+ }
134
+
135
+ translateLabels() {
136
+ this.getAvailableTranslation();
137
+ this.getUnavailableTranslation();
138
+ this.getIsBusyTranslation();
139
+ this.getSubscriptionPaymentProblemTranslation();
140
+ this.getThePlanHasExpiredTranslation();
141
+ }
142
+
143
+
144
+ getOSCODE() {
145
+ this.public_Key = this.appConfigProvider.getConfig().t2y12PruGU9wUtEGzBJfolMIgK;
146
+ this.logger.log('[SIDEBAR-USER-DETAILS] AppConfigService getAppConfig public_Key', this.public_Key);
147
+ this.logger.log('[SIDEBAR-USER-DETAILS] AppConfigService getAppConfig', this.appConfigProvider.getConfig());
148
+ if (this.public_Key) {
149
+ let keys = this.public_Key.split("-");
150
+ this.logger.log('[SIDEBAR-USER-DETAILS] PUBLIC-KEY - public_Key keys', keys)
151
+
152
+ keys.forEach(key => {
153
+ if (key.includes("PAY")) {
154
+
155
+ let pay = key.split(":");
156
+
157
+ if (pay[1] === "F") {
158
+ this.isVisiblePAY = false;
159
+ } else {
160
+ this.isVisiblePAY = true;
161
+ }
162
+ }
163
+ });
164
+
165
+ if (!this.public_Key.includes("PAY")) {
166
+ this.isVisiblePAY = false;
167
+ }
168
+ } else {
169
+ this.isVisiblePAY = false;
170
+ }
171
+ }
172
+
173
+ getAvailableTranslation() {
174
+ this.translate.get('Available')
175
+ .subscribe((text: string) => {
176
+
177
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
178
+ this.IS_AVAILABLE_msg = text
179
+ });
180
+ }
181
+ getUnavailableTranslation() {
182
+ this.translate.get('Unavailable')
183
+ .subscribe((text: string) => {
184
+
185
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
186
+ this.IS_UNAVAILABLE_msg = text
187
+ });
188
+ }
189
+
190
+ getIsBusyTranslation() {
191
+ this.translate.get('Busy')
192
+ .subscribe((text: string) => {
193
+
194
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
195
+ this.IS_BUSY_msg = text
196
+ });
197
+ }
198
+
199
+ getSubscriptionPaymentProblemTranslation() {
200
+ this.translate.get('SubscriptionPaymentProblem')
201
+ .subscribe((text: string) => {
202
+
203
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
204
+ this.SUBSCRIPTION_PAYMENT_PROBLEM_msg = text
205
+ });
206
+ }
207
+
208
+ getThePlanHasExpiredTranslation() {
209
+ this.translate.get('ThePlanHasExpired')
210
+ .subscribe((text: string) => {
211
+
212
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
213
+ this.THE_PLAN_HAS_EXPIRED_msg = text
214
+ });
215
+ }
216
+
217
+
218
+ getCurrentStoredProject() {
219
+ try {
220
+ const project = localStorage.getItem('last_project')
221
+ if (project) {
222
+ const projectObjct = JSON.parse(localStorage.getItem('last_project'))
223
+ // console.log('[SIDEBAR-USER-DETAILS] - GET STORED PROJECT ', projectObjct)
224
+
225
+ this.projectID = projectObjct['id_project']['_id']
226
+ // console.log('[SIDEBAR-USER-DETAILS] - GET STORED PROJECT > PROJECT ID ', this.projectID);
227
+
228
+ this.prjct_name = projectObjct['id_project']['name']
229
+ // console.log('[SIDEBAR-USER-DETAILS] - GET STORED PROJECT > PROJECT NAME ', this.prjct_name);
230
+
231
+ this.plan_type = projectObjct['id_project']['profile']['type'];
232
+ // console.log('[SIDEBAR-USER-DETAILS] - GET STORED PROJECT > PLAN TYPE ', this.plan_type);
233
+
234
+ const trial_expired = projectObjct['id_project']['trialExpired']
235
+ // console.log('[SIDEBAR-USER-DETAILS] - GET STORED PROJECT > TRIAL EXPIRED ', trial_expired);
236
+
237
+ const profile_name = projectObjct['id_project']['profile']['name'];
238
+ // console.log('[SIDEBAR-USER-DETAILS] - GET STORED PROJECT > PROFILE NAME ', profile_name);
239
+
240
+ this.plan_name = projectObjct['id_project']['profile']['name'];
241
+ this.plan_subscription_is_active = projectObjct['id_project']['isActiveSubscription'];
242
+
243
+ if (this.plan_type === 'free') {
244
+
245
+ if (trial_expired === false) {
246
+ this.getProPlanTrialTranslation();
247
+ } else if (trial_expired === true) {
248
+ this.getFreePlanTranslation();
249
+ }
250
+ } else if (this.plan_type === 'payment' && profile_name === 'pro') {
251
+ this.getProPlanTranslation();
252
+ } else if (this.plan_type === 'payment' && profile_name === 'enterprise') {
253
+ this.getEnterprisePlanTranslation();
254
+ }
255
+
256
+ }
257
+
258
+ } catch (err) {
259
+ this.logger.error('[SIDEBAR-USER-DETAILS] - GET STORED PROJECT ERR ', err)
260
+ }
261
+
262
+ try {
263
+ this.tiledeskToken = this.appStorageService.getItem('tiledeskToken');
264
+ // console.log('[SIDEBAR-USER-DETAILS] - GET STORED TOKEN ', this.tiledeskToken)
265
+ } catch (err) {
266
+ this.logger.error('[SIDEBAR-USER-DETAILS] - GET STORED TOKEN ', err)
267
+ }
268
+ }
269
+
270
+
271
+ getProPlanTrialTranslation() {
272
+ // this.profile_name_translated = this.PRO_PLAN_TRIAL_msg;
273
+ this.translate.get('ProPlanTrial')
274
+ .subscribe((text: string) => {
275
+
276
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
277
+ this.profile_name_translated = text
278
+ });
279
+ }
280
+
281
+ getFreePlanTranslation() {
282
+ // this.profile_name_translated = this.FREE_PLAN_msg;
283
+ this.translate.get('FreePlan')
284
+ .subscribe((text: string) => {
285
+
286
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
287
+ this.profile_name_translated = text
288
+ });
289
+ }
290
+
291
+ getProPlanTranslation() {
292
+ // this.profile_name_translated = this.PAYD_PLAN_NAME_PRO_msg;
293
+ this.translate.get('PaydPlanNamePro')
294
+ .subscribe((text: string) => {
295
+ // this.deleteContact_msg = text;
296
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
297
+ this.profile_name_translated = text
298
+ });
299
+ }
300
+
301
+ getEnterprisePlanTranslation() {
302
+ // this.profile_name_translated = this.PAYD_PLAN_NAME_ENTERPRISE_msg;
303
+ this.translate.get('PaydPlanNameEnterprise')
304
+ .subscribe((text: string) => {
305
+ // this.deleteContact_msg = text;
306
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
307
+ this.profile_name_translated = text
308
+ });
309
+ }
310
+
311
+
312
+
313
+ listenTocurrentProjectUserUserAvailability$() {
314
+ this.wsService.currentProjectUserAvailability$
315
+ .pipe(skip(1))
316
+ .subscribe((projectUser) => {
317
+ this.logger.log('[SIDEBAR-USER-DETAILS] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS RES ', projectUser);
318
+
319
+ if (projectUser) {
320
+ this.IS_AVAILABLE = projectUser['user_available']
321
+ this.IS_BUSY = projectUser['isBusy']
322
+ this.USER_ROLE = projectUser['role']
323
+ // console.log('[SIDEBAR-USER-DETAILS] -translateUserRole 1', this.USER_ROLE)
324
+ this.translateUserRole(this.USER_ROLE)
325
+ }
326
+
327
+
328
+
329
+ }, (error) => {
330
+ this.logger.error('[SIDEBAR-USER-DETAILS] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS error ', error);
331
+ }, () => {
332
+ this.logger.log('[SIDEBAR-USER-DETAILS] - $UBSC TO WS USER AVAILABILITY & BUSY STATUS * COMPLETE *');
333
+ })
334
+ }
335
+
336
+ translateUserRole(role) {
337
+ // console.log('[SIDEBAR-USER-DETAILS] -translateUserRole ', role)
338
+ this.translate.get(role)
339
+ .subscribe((text: string) => {
340
+
341
+ // console.log('[SIDEBAR-USER-DETAILS] - GET GTTTTTN ', text)
342
+ this.USER_ROLE_LABEL = text
343
+ });
344
+
345
+
346
+ }
347
+
348
+
349
+ ngOnChanges() {
350
+ // console.log('[SIDEBAR-USER-DETAILS] HAS_CLICKED_OPEN_USER_DETAIL', this.HAS_CLICKED_OPEN_USER_DETAIL)
351
+ var element = document.getElementById('user-details');
352
+ // console.log('[SIDEBAR-USER-DETAILS] element', element)
353
+ if (this.HAS_CLICKED_OPEN_USER_DETAIL === true) {
354
+ element.classList.add("active");
355
+ }
356
+ }
357
+
358
+ subcribeToAuthStateChanged() {
359
+ this.messagingAuthService.BSAuthStateChanged.subscribe((state) => {
360
+ this.logger.log('[SIDEBAR] BSAuthStateChanged ', state)
361
+
362
+ if (state === 'online') {
363
+ const currentUser = JSON.parse(this.appStorageService.getItem('currentUser'));
364
+ this.logger.log('[SIDEBAR-USER-DETAILS] currentUser ', currentUser)
365
+ if (currentUser) {
366
+ this.user = currentUser;
367
+ this.photo_profile_URL = this.imageRepoService.getImagePhotoUrl(currentUser.uid)
368
+ this.logger.log('[SIDEBAR-USER-DETAILS] photo_profile_URL ', this.photo_profile_URL)
369
+ }
370
+
371
+ }
372
+ })
373
+ }
374
+
375
+ closeUserDetailSidePanel() {
376
+ var element = document.getElementById('user-details');
377
+ element.classList.remove("active");
378
+ this.logger.log('[SIDEBAR-USER-DETAILS] element', element);
379
+ this.HAS_CLICKED_OPEN_USER_DETAIL === true
380
+ // this.onCloseUserDetailsSidebar.emit(false);
381
+ }
382
+
383
+
384
+
385
+ changeAvailabilityStateInUserDetailsSidebar(available) {
386
+ this.logger.log('[SIDEBAR-USER-DETAILS] - changeAvailabilityState projectid', this.projectID, ' available 1: ', available);
387
+
388
+ // available = !available
389
+ // console.log('[SIDEBAR-USER-DETAILS] - changeAvailabilityState projectid', this.projectID, ' available 2 : ', available);
390
+
391
+ this.wsService.updateCurrentUserAvailability(this.tiledeskToken, this.projectID, available)
392
+ .subscribe((projectUser: any) => {
393
+
394
+ this.logger.log('[SIDEBAR-USER-DETAILS] - PROJECT-USER UPDATED ', projectUser)
395
+
396
+ // NOTIFY TO THE USER SERVICE WHEN THE AVAILABLE / UNAVAILABLE BUTTON IS CLICKED
397
+ // this.usersService.availability_btn_clicked(true)
398
+
399
+ // if (this.project['id_project']._id === projectUser.id_project) {
400
+ // this.project['ws_projct_user_available'] = projectUser.user_available;
401
+ // // this.project['ws_projct_user_isBusy'] = projectUser['isBusy']
402
+ // }
403
+
404
+ }, (error) => {
405
+ this.logger.error('[SIDEBAR-USER-DETAILS] - PROJECT-USER UPDATED - ERROR ', error);
406
+
407
+ }, () => {
408
+ this.logger.log('[SIDEBAR-USER-DETAILS] - PROJECT-USER UPDATED * COMPLETE *');
409
+
410
+ });
411
+ }
412
+
413
+ public onLogout() {
414
+ // this.authService.logout();
415
+ this.closeUserDetailSidePanel()
416
+ // pubblico evento
417
+ this.events.publish('profileInfoButtonClick:logout', true);
418
+ }
419
+
420
+
421
+ }
@@ -240,7 +240,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
240
240
 
241
241
  setTimeout(() => {
242
242
  this.showSpinner = false
243
- }, 2000);
243
+ }, 3000);
244
244
 
245
245
  }
246
246
 
@@ -249,33 +249,34 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
249
249
  this.public_Key = this.appConfigProvider.getConfig().t2y12PruGU9wUtEGzBJfolMIgK;
250
250
  this.logger.log('[CONVS-DETAIL] AppConfigService getAppConfig public_Key', this.public_Key);
251
251
 
252
- let keys = this.public_Key.split("-");
253
- this.logger.log('[CONVS-DETAIL] PUBLIC-KEY - public_Key keys', keys)
252
+ if (this.public_Key) {
253
+ let keys = this.public_Key.split("-");
254
+ this.logger.log('[CONVS-DETAIL] PUBLIC-KEY - public_Key keys', keys)
254
255
 
255
- keys.forEach(key => {
256
-
257
-
258
- if (key.includes("CAR")) {
259
- let car = key.split(":");
260
- if (car[1] === "F") {
261
- this.areVisibleCAR = false;
262
- this.logger.log('[CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
263
- } else {
264
- this.areVisibleCAR = true;
265
- this.logger.log('[CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
256
+ keys.forEach(key => {
257
+ if (key.includes("CAR")) {
258
+ let car = key.split(":");
259
+ if (car[1] === "F") {
260
+ this.areVisibleCAR = false;
261
+ this.logger.log('[CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
262
+ } else {
263
+ this.areVisibleCAR = true;
264
+ this.logger.log('[CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
265
+ }
266
266
  }
267
- }
268
267
 
269
- });
268
+ });
270
269
 
271
- if (!this.public_Key.includes("CAR")) {
270
+ if (!this.public_Key.includes("CAR")) {
271
+ this.areVisibleCAR = false;
272
+ this.logger.log('[CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
273
+ }
274
+ } else {
272
275
  this.areVisibleCAR = false;
273
- this.logger.log('[CONVS-DETAIL] PUBLIC-KEY - areVisibleCAR', this.areVisibleCAR)
274
276
  }
275
277
  }
276
278
 
277
279
  watchToConnectionStatus() {
278
-
279
280
  this.networkService.checkInternetFunc().subscribe(isOnline => {
280
281
  this.checkInternet = isOnline
281
282
  // console.log('[CONVS-LIST-PAGE] - watchToConnectionStatus - isOnline', this.checkInternet)
@@ -488,7 +489,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
488
489
  "NO_CANNED_RESPONSES",
489
490
  "YES_CANNED_RESPONSES",
490
491
  "THERE_ARE_NO_CANNED_RESPONSES_AVAILABLE",
491
- "TO_CREATE_THEM_GO_TO_THE_PROJECT"
492
+ "TO_CREATE_THEM_GO_TO_THE_PROJECT",
492
493
  ];
493
494
 
494
495
  this.translationMap = this.customTranslateService.translateLanguage(keys);
@@ -1,14 +1,20 @@
1
1
  <ion-header no-border class="ion-no-border">
2
- <app-ddp-header *ngIf="conversationType ==='active'" [numberOpenConv]="numberOpenConv" [supportMode]="supportMode"
3
- (openContactsDirectory)=openContactsDirectory($event) (openProfileInfo)=openProfileInfo($event)>
2
+ <app-ddp-header *ngIf="conversationType ==='active'"
3
+ [numberOpenConv]="numberOpenConv"
4
+ [supportMode]="supportMode"
5
+ [archived_btn]="archived_btn"
6
+ [writeto_btn]="writeto_btn"
7
+ (openContactsDirectory)=openContactsDirectory($event)
8
+ (openProfileInfo)=openProfileInfo($event)>
4
9
  </app-ddp-header>
5
10
 
6
- <app-option-header *ngIf="conversationType !=='active'" [headerTitle]=headerTitle
11
+ <app-option-header *ngIf="conversationType !=='active'"
12
+ [headerTitle]=headerTitle
7
13
  (onBackButton)=onBackButtonFN($event)>
8
14
  </app-option-header>
9
15
  </ion-header>
10
16
 
11
- <ion-content #ioncontentconvlist class="list-avatar-page" appScrollbarTheme>
17
+ <ion-content id="convs-list" #ioncontentconvlist class="list-avatar-page" appScrollbarTheme>
12
18
 
13
19
  <div id="scrollbar2">
14
20
  <ion-list>
@@ -36,8 +42,8 @@
36
42
  </ion-avatar>
37
43
  <ion-label part="message-text" class="waiting-for-network-msg"> Waiting for network</ion-label>
38
44
  </ion-item>
39
- <!-- button="true" (click)="openUnsevedConversationIframe()" -->
40
- <ion-item *ngIf="supportMode && displayNewConvsItem" class="ion-no-padding open-iframe-item">
45
+ <!-- supportMode && -->
46
+ <ion-item *ngIf="displayNewConvsItem && conversationType !=='archived'" class="ion-no-padding open-iframe-item">
41
47
  <div tabindex="0"></div>
42
48
  <!-- <ion-note class="pinned-project">
43
49
  {{ 'PINNED_PROJECT' | translate }}
@@ -45,7 +51,8 @@
45
51
 
46
52
  <app-project-item style="width: 100%;"
47
53
  (openUnsevedConvsEvent)="openUnsevedConversationIframe($event)"
48
- (projectIdEvent)="getLastProjectId($event)"></app-project-item>
54
+ (projectIdEvent)="getLastProjectId($event)">
55
+ </app-project-item>
49
56
  </ion-item>
50
57
 
51
58
  <span