@chat21/chat21-web-widget 5.0.56-rc.1 → 5.0.56-rc.2

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 (130) hide show
  1. package/.github/workflows/build.yml +1 -0
  2. package/CHANGELOG.md +10 -0
  3. package/angular.json +6 -7
  4. package/package.json +5 -4
  5. package/src/app/app.component.html +1 -11
  6. package/src/app/app.component.scss +12 -13
  7. package/src/app/app.component.spec.ts +0 -2
  8. package/src/app/app.component.ts +29 -35
  9. package/src/app/app.module.ts +4 -5
  10. package/src/app/component/conversation-detail/conversation/conversation.component.html +1 -10
  11. package/src/app/component/conversation-detail/conversation/conversation.component.scss +5 -428
  12. package/src/app/component/conversation-detail/conversation/conversation.component.ts +23 -25
  13. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.html +4 -63
  14. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.scss +11 -81
  15. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.spec.ts +0 -3
  16. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.ts +6 -6
  17. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +7 -32
  18. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +11 -11
  19. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +8 -8
  20. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.html +4 -25
  21. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.scss +5 -5
  22. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts +4 -88
  23. package/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.html +7 -16
  24. package/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.ts +2 -26
  25. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.html +1 -11
  26. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.scss +5 -5
  27. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.ts +2 -19
  28. package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.html +10 -42
  29. package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.scss +1 -2
  30. package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.ts +2 -3
  31. package/src/app/component/form/form-builder/form-builder.component.html +0 -1
  32. package/src/app/component/form/form-builder/form-builder.component.scss +1 -1
  33. package/src/app/component/form/form-builder/form-builder.component.ts +4 -5
  34. package/src/app/component/form/inputs/form-checkbox/form-checkbox.component.scss +1 -2
  35. package/src/app/component/form/inputs/form-checkbox/form-checkbox.component.ts +2 -3
  36. package/src/app/component/form/inputs/form-label/form-label.component.ts +0 -1
  37. package/src/app/component/form/inputs/form-text/form-text.component.scss +3 -13
  38. package/src/app/component/form/inputs/form-text/form-text.component.ts +1 -2
  39. package/src/app/component/form/inputs/form-textarea/form-textarea.component.html +0 -13
  40. package/src/app/component/form/inputs/form-textarea/form-textarea.component.scss +4 -4
  41. package/src/app/component/form/inputs/form-textarea/form-textarea.component.ts +0 -10
  42. package/src/app/component/form/prechat-form/prechat-form.component.html +0 -2
  43. package/src/app/component/form/prechat-form/prechat-form.component.scss +2 -2
  44. package/src/app/component/form/prechat-form/prechat-form.component.ts +2 -2
  45. package/src/app/component/home/home.component.scss +7 -7
  46. package/src/app/component/home/home.component.ts +1 -4
  47. package/src/app/component/home-conversations/home-conversations.component.scss +7 -7
  48. package/src/app/component/home-conversations/home-conversations.component.ts +9 -12
  49. package/src/app/component/last-message/last-message.component.scss +4 -4
  50. package/src/app/component/last-message/last-message.component.ts +4 -7
  51. package/src/app/component/launcher-button/launcher-button.component.ts +3 -3
  52. package/src/app/component/list-all-conversations/list-all-conversations.component.scss +2 -2
  53. package/src/app/component/list-all-conversations/list-all-conversations.component.ts +3 -3
  54. package/src/app/component/list-conversations/list-conversations.component.html +1 -1
  55. package/src/app/component/list-conversations/list-conversations.component.scss +3 -3
  56. package/src/app/component/list-conversations/list-conversations.component.ts +3 -6
  57. package/src/app/component/menu-options/menu-options.component.html +1 -8
  58. package/src/app/component/menu-options/menu-options.component.scss +4 -4
  59. package/src/app/component/menu-options/menu-options.component.ts +1 -1
  60. package/src/app/component/message/bubble-message/bubble-message.component.html +1 -2
  61. package/src/app/component/message/bubble-message/bubble-message.component.scss +3 -3
  62. package/src/app/component/message/bubble-message/bubble-message.component.spec.ts +0 -2
  63. package/src/app/component/message/bubble-message/bubble-message.component.ts +1 -14
  64. package/src/app/component/message/buttons/action-button/action-button.component.scss +6 -6
  65. package/src/app/component/message/buttons/link-button/link-button.component.scss +7 -7
  66. package/src/app/component/message/buttons/text-button/text-button.component.scss +8 -8
  67. package/src/app/component/message/frame/frame.component.scss +1 -1
  68. package/src/app/component/message/frame/frame.component.ts +1 -1
  69. package/src/app/component/message/html/html.component.scss +4 -4
  70. package/src/app/component/message/html/html.component.ts +1 -2
  71. package/src/app/component/message/image/image.component.scss +1 -1
  72. package/src/app/component/message/image/image.component.ts +2 -3
  73. package/src/app/component/message/info-message/info-message.component.html +2 -1
  74. package/src/app/component/message/info-message/info-message.component.scss +6 -6
  75. package/src/app/component/message/like-unlike/like-unlike.component.scss +1 -1
  76. package/src/app/component/message/like-unlike/like-unlike.component.ts +2 -2
  77. package/src/app/component/message/text/text.component.scss +1 -1
  78. package/src/app/component/message/text/text.component.ts +1 -1
  79. package/src/app/component/message-attachment/message-attachment.component.ts +1 -1
  80. package/src/app/component/selection-department/selection-department.component.scss +6 -6
  81. package/src/app/component/selection-department/selection-department.component.ts +2 -2
  82. package/src/app/component/send-button/send-button.component.ts +1 -2
  83. package/src/app/component/star-rating-widget/star-rating-widget.component.scss +6 -6
  84. package/src/app/component/star-rating-widget/star-rating-widget.component.ts +2 -2
  85. package/src/app/pipe/date-ago.pipe.spec.ts +8 -0
  86. package/src/app/pipe/date-ago.pipe.ts +42 -0
  87. package/src/app/providers/app-config.service.ts +0 -1
  88. package/src/app/providers/global-settings.service.ts +3 -31
  89. package/src/app/providers/star-rating-widget.service.ts +4 -4
  90. package/src/app/providers/translator.service.ts +3 -11
  91. package/src/app/providers/waiting.service.ts +2 -2
  92. package/src/app/sass/_variables.scss +29 -26
  93. package/src/app/utils/globals.ts +4 -34
  94. package/src/app/utils/rules.ts +5 -7
  95. package/src/app/utils/utils.ts +47 -37
  96. package/src/assets/i18n/en.json +0 -2
  97. package/src/assets/i18n/es.json +0 -2
  98. package/src/assets/i18n/fr.json +0 -2
  99. package/src/assets/i18n/it.json +0 -2
  100. package/src/assets/twp/index.html +2 -57
  101. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +15 -23
  102. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +21 -20
  103. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +15 -13
  104. package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +16 -23
  105. package/src/chat21-core/providers/firebase/firebase-groups-handler.ts +15 -11
  106. package/src/chat21-core/providers/firebase/firebase-image-repo.ts +13 -4
  107. package/src/chat21-core/providers/firebase/firebase-init-service.ts +3 -3
  108. package/src/chat21-core/providers/firebase/firebase-notifications.ts +11 -9
  109. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +14 -11
  110. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +17 -11
  111. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +12 -9
  112. package/src/chat21-core/providers/localSessionStorage.ts +2 -15
  113. package/src/chat21-core/providers/mqtt/chat-service.ts +12 -2
  114. package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -34
  115. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +4 -6
  116. package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +1 -11
  117. package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +13 -7
  118. package/src/chat21-core/providers/mqtt/mqtt-presence.service.ts +3 -3
  119. package/src/chat21-core/providers/mqtt/mqtt-typing.service.ts +3 -3
  120. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -1
  121. package/src/chat21-core/utils/user-typing/user-typing.component.scss +3 -3
  122. package/src/chat21-core/utils/utils.ts +46 -118
  123. package/src/launch.js +42 -12
  124. package/src/models/message.ts +0 -23
  125. package/src/test-new.html +0 -6
  126. package/src/app/providers/settings-saver.service.spec.ts +0 -17
  127. package/src/app/providers/settings-saver.service.ts +0 -56
  128. package/src/app/providers/storage.service.spec.ts +0 -16
  129. package/src/app/providers/storage.service.ts +0 -220
  130. package/src/app/utils/translations.ts +0 -122
@@ -3,11 +3,7 @@ import { Injectable } from '@angular/core';
3
3
  import { BehaviorSubject, Observable, Subject } from 'rxjs';
4
4
 
5
5
  // firebase
6
- import firebase from 'firebase/app';
7
- import 'firebase/messaging';
8
- import 'firebase/database';
9
- import 'firebase/auth';
10
- import 'firebase/storage';
6
+ // import firebase from 'firebase/app';
11
7
 
12
8
  // models
13
9
  import { ConversationModel } from '../../models/conversation';
@@ -40,13 +36,16 @@ export class FirebaseGroupsHandler extends GroupsHandlerService {
40
36
  // private params
41
37
  private tenant: string;
42
38
  private loggedUserId: string;
43
- private ref: firebase.database.Query;
39
+ // private ref: firebase.database.Query;
44
40
  private BASE_URL: string;
45
41
  private logger:LoggerService = LoggerInstance.getInstance()
46
42
 
47
43
  // private audio: any;
48
44
  // private setTimeoutSound: any;
49
45
 
46
+ private firebase: any;
47
+ private ref: any;
48
+
50
49
  constructor(
51
50
  public http: HttpClient,
52
51
  public appConfig: AppConfigService
@@ -57,11 +56,16 @@ export class FirebaseGroupsHandler extends GroupsHandlerService {
57
56
  /**
58
57
  * inizializzo groups handler
59
58
  */
60
- initialize(tenant: string, loggedUserId: string) {
59
+ async initialize(tenant: string, loggedUserId: string) {
61
60
  this.tenant = tenant;
62
61
  this.loggedUserId = loggedUserId;
63
62
  this.BASE_URL = this.appConfig.getConfig().firebaseConfig.chat21ApiUrl;
64
63
  this.logger.debug('[FIREBASEGroupHandlerSERVICE] initialize', this.tenant, this.loggedUserId);
64
+
65
+ const { default: firebase} = await import("firebase/app");
66
+ await Promise.all([import("firebase/database")]);
67
+ this.firebase = firebase
68
+ this.ref = this.firebase.database['Query'];
65
69
  }
66
70
 
67
71
  /**
@@ -74,7 +78,7 @@ export class FirebaseGroupsHandler extends GroupsHandlerService {
74
78
  const that = this;
75
79
  const urlNodeGroups = '/apps/' + this.tenant + '/users/' + this.loggedUserId + '/groups';
76
80
  this.logger.debug('[FIREBASEGroupHandlerSERVICE] connect -------> groups::', urlNodeGroups)
77
- this.ref = firebase.database().ref(urlNodeGroups)
81
+ this.ref = this.firebase.database().ref(urlNodeGroups)
78
82
  this.ref.on('child_added', (childSnapshot) => {
79
83
  that.logger.debug('[FIREBASEGroupHandlerSERVICE] child_added ------->', childSnapshot.val())
80
84
  // that.added(childSnapshot);
@@ -97,7 +101,7 @@ export class FirebaseGroupsHandler extends GroupsHandlerService {
97
101
  getDetail(groupId: string, callback?: (group: GroupModel)=>void): Promise<GroupModel>{
98
102
  const urlNodeGroupById = '/apps/' + this.tenant + '/users/' + this.loggedUserId + '/groups/' + groupId;
99
103
  this.logger.debug('[FIREBASEGroupHandlerSERVICE] getDetail -------> urlNodeGroupById::', urlNodeGroupById)
100
- const ref = firebase.database().ref(urlNodeGroupById)
104
+ const ref = this.firebase.database().ref(urlNodeGroupById)
101
105
  return new Promise((resolve) => {
102
106
  ref.off()
103
107
  ref.on('value', (childSnapshot) => {
@@ -118,7 +122,7 @@ export class FirebaseGroupsHandler extends GroupsHandlerService {
118
122
  let SgroupDetail = new Subject<GroupModel>();
119
123
  const urlNodeGroupById = '/apps/' + this.tenant + '/users/' + this.loggedUserId + '/groups/' + groupId;
120
124
  this.logger.log('[FIREBASEGroupHandlerSERVICE] onGroupChange -------> urlNodeGroupById::', urlNodeGroupById)
121
- const ref = firebase.database().ref(urlNodeGroupById)
125
+ const ref = this.firebase.database().ref(urlNodeGroupById)
122
126
  ref.off()
123
127
  ref.on('value', (childSnapshot) => {
124
128
  // this.groupValue(childSnapshot)
@@ -270,7 +274,7 @@ export class FirebaseGroupsHandler extends GroupsHandlerService {
270
274
 
271
275
  // // -------->>>> PRIVATE METHOD SECTION START <<<<---------------//
272
276
  private getFirebaseToken(callback) {
273
- const firebase_currentUser = firebase.auth().currentUser;
277
+ const firebase_currentUser = this.firebase.auth().currentUser;
274
278
  this.logger.debug('[FIREBASEGroupHandlerSERVICE] // firebase current user ', firebase_currentUser);
275
279
  if (firebase_currentUser) {
276
280
  const that = this;
@@ -6,8 +6,8 @@ import { environment } from '../../../environments/environment';
6
6
  import { ImageRepoService } from '../abstract/image-repo.service';
7
7
 
8
8
  // firebase
9
- import firebase from 'firebase/app';
10
- import 'firebase/storage';
9
+ // import firebase from 'firebase/app';
10
+ // import 'firebase/storage';
11
11
 
12
12
  // @Injectable({ providedIn: 'root' })
13
13
  @Injectable()
@@ -16,9 +16,12 @@ export class FirebaseImageRepoService extends ImageRepoService {
16
16
  // private params
17
17
  private urlStorageBucket = environment.firebaseConfig.storageBucket + '/o/profiles%2F';
18
18
  private baseImageURL: string;
19
+
20
+ private firebase: any
19
21
 
20
22
  constructor(public http: HttpClient) {
21
23
  super();
24
+ this.initialize()
22
25
  }
23
26
 
24
27
  /**
@@ -34,8 +37,7 @@ export class FirebaseImageRepoService extends ImageRepoService {
34
37
  }
35
38
  const firebase_photo = '/o/profiles%2F'+ sender_id + '%2Fphoto.jpg?alt=media'
36
39
  const firebase_thumbnail = '/o/profiles%2F'+ sender_id + '%2Fthumb_photo.jpg?alt=media'
37
- const imageurl = this.baseImageURL + firebase.storage().ref().bucket + firebase_thumbnail
38
-
40
+ const imageurl = this.baseImageURL + this.firebase.storage().ref().bucket + firebase_thumbnail
39
41
  return imageurl;
40
42
  }
41
43
 
@@ -47,4 +49,11 @@ export class FirebaseImageRepoService extends ImageRepoService {
47
49
  callback(false)
48
50
  })
49
51
  }
52
+
53
+
54
+ private async initialize(){
55
+ const { default: firebase} = await import("firebase/app");
56
+ await Promise.all([import("firebase/storage")]);
57
+ this.firebase = firebase
58
+ }
50
59
  }
@@ -1,8 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
 
3
3
  // firebase
4
- import firebase from 'firebase/app';
5
- import 'firebase/app';
4
+ // import firebase from 'firebase/app';
6
5
  /*
7
6
  Generated class for the AuthService provider.
8
7
  See https://angular.io/docs/ts/latest/guide/dependency-injection.html
@@ -19,7 +18,8 @@ export class FirebaseInitService {
19
18
  constructor() {
20
19
  }
21
20
 
22
- public static initFirebase(firebaseConfig: any) {
21
+ public static async initFirebase(firebaseConfig: any) {
22
+ const { default: firebase} = await import("firebase/app");
23
23
  if(!FirebaseInitService.firebaseInit){
24
24
  if (!firebaseConfig || firebaseConfig.apiKey === 'CHANGEIT') {
25
25
  throw new Error('Firebase config is not defined. Please create your widget-config.json. See the Chat21-Web_widget Installation Page');
@@ -4,9 +4,7 @@ import { Injectable } from '@angular/core';
4
4
  import { NotificationsService } from '../abstract/notifications.service';
5
5
 
6
6
  // firebase
7
- import firebase from 'firebase/app';
8
- import 'firebase/messaging';
9
- import 'firebase/auth';
7
+ // import firebase from 'firebase/app';
10
8
 
11
9
  import { LoggerService } from '../abstract/logger.service';
12
10
 
@@ -19,16 +17,20 @@ export class FirebaseNotifications extends NotificationsService {
19
17
  private userId: string;
20
18
  private tenant: string;
21
19
  private vapidkey: string;
20
+ private firebase: any;
21
+
22
22
  private logger: LoggerService = LoggerInstance.getInstance();
23
23
  constructor() {
24
24
  super();
25
25
  }
26
26
 
27
- initialize(tenant: string, vapId: string): void {
27
+ async initialize(tenant: string, vapId: string) {
28
28
  this.tenant = tenant
29
29
  this.vapidkey = vapId
30
30
  this.logger.debug('[FIREBASE-NOTIFICATIONS] initialize - tenant ', this.tenant)
31
31
 
32
+ const { default: firebase} = await import("firebase/app");
33
+ this.firebase = firebase
32
34
 
33
35
  if (!('serviceWorker' in navigator)) {
34
36
  // , disable or hide UI.
@@ -70,8 +72,8 @@ export class FirebaseNotifications extends NotificationsService {
70
72
 
71
73
 
72
74
 
73
- if (firebase.messaging.isSupported()) {
74
- const messaging = firebase.messaging();
75
+ if (this.firebase.messaging.isSupported()) {
76
+ const messaging = this.firebase.messaging();
75
77
  // messaging.requestPermission()
76
78
  Notification.requestPermission().then((permission) => {
77
79
  if (permission === 'granted') {
@@ -94,7 +96,7 @@ export class FirebaseNotifications extends NotificationsService {
94
96
 
95
97
  removeNotificationsInstance(callback: (string) => void) {
96
98
  var self = this;
97
- firebase.auth().onAuthStateChanged(function (user) {
99
+ this.firebase.auth().onAuthStateChanged(function (user) {
98
100
  if (user) {
99
101
  self.logger.debug('[FIREBASE-NOTIFICATIONS] - User is signed in. ', user)
100
102
 
@@ -112,7 +114,7 @@ export class FirebaseNotifications extends NotificationsService {
112
114
  let connectionsRefURL = '';
113
115
  if (connectionsRefinstancesId) {
114
116
  connectionsRefURL = connectionsRefinstancesId + this.FCMcurrentToken;
115
- const connectionsRef = firebase.database().ref().child(connectionsRefURL);
117
+ const connectionsRef = this.firebase.database().ref().child(connectionsRefURL);
116
118
  this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> connectionsRef ', connectionsRef);
117
119
  this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> connectionsRef url ', connectionsRefURL);
118
120
  connectionsRef.off()
@@ -154,7 +156,7 @@ export class FirebaseNotifications extends NotificationsService {
154
156
  updates[connectionsRefinstancesId + connection] = device_model;
155
157
 
156
158
  this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> getPermission > updateToken in DB', updates);
157
- firebase.database().ref().update(updates)
159
+ this.firebase.database().ref().update(updates)
158
160
  }
159
161
  // ********** PRIVATE METHOD - END ****************//
160
162
 
@@ -3,12 +3,9 @@ import { Injectable } from '@angular/core';
3
3
  import { BehaviorSubject, Observable } from 'rxjs';
4
4
 
5
5
  // firebase
6
- import firebase from 'firebase/app';
7
- import 'firebase/messaging';
8
- import 'firebase/database';
6
+ // import firebase from 'firebase/app';
9
7
 
10
8
  // services
11
- // import { EventsService } from '../events-service';
12
9
  import { PresenceService } from '../abstract/presence.service';
13
10
  import { LoggerService } from '../abstract/logger.service';
14
11
  import { LoggerInstance } from '../logger/loggerInstance';
@@ -33,6 +30,9 @@ export class FirebasePresenceService extends PresenceService {
33
30
  private keyConnectionRef: any;
34
31
  private logger: LoggerService = LoggerInstance.getInstance();
35
32
  online_member = []
33
+
34
+ private firebase: any;
35
+
36
36
  constructor() {
37
37
  super();
38
38
  }
@@ -40,11 +40,14 @@ export class FirebasePresenceService extends PresenceService {
40
40
  /**
41
41
  *
42
42
  */
43
- public initialize(tenant: string) {
43
+ public async initialize(tenant: string) {
44
44
  // this.tenant = this.getTenant();
45
45
  this.tenant = tenant;
46
46
  this.logger.debug('[FIREBASEPresenceSERVICE] initialize this.tenant', this.tenant);
47
47
  this.urlNodePresence = '/apps/' + this.tenant + '/presence/';
48
+
49
+ const { default: firebase} = await import("firebase/app");
50
+ this.firebase = firebase
48
51
  }
49
52
 
50
53
  /**
@@ -76,7 +79,7 @@ export class FirebasePresenceService extends PresenceService {
76
79
  let local_BSIsOnline = new BehaviorSubject<any>(null);
77
80
  const urlNodeConnections = this.urlNodePresence + userid + '/connections';
78
81
  this.logger.debug('[FIREBASEPresenceSERVICE] userIsOnline: ', urlNodeConnections);
79
- const connectionsRef = firebase.database().ref().child(urlNodeConnections);
82
+ const connectionsRef = this.firebase.database().ref().child(urlNodeConnections);
80
83
  connectionsRef.off()
81
84
  connectionsRef.on('value', (child) => {
82
85
  that.logger.debug('[FIREBASEPresenceSERVICE] CONVERSATION-DETAIL group detail userIsOnline id user', userid, '- child.val: ', child.val());
@@ -126,7 +129,7 @@ export class FirebasePresenceService extends PresenceService {
126
129
  this.onlineConnectionsRef = this.referenceOnlineForUser(userid);
127
130
  this.lastOnlineConnectionsRef = this.referenceLastOnlineForUser(userid);
128
131
  const connectedRefURL = '/.info/connected';
129
- const conn = firebase.database().ref(connectedRefURL);
132
+ const conn = this.firebase.database().ref(connectedRefURL);
130
133
  conn.on('value', (dataSnapshot) => {
131
134
  this.logger.debug('[FIREBASEPresenceSERVICE] self.deviceConnectionRef: ', dataSnapshot.val());
132
135
  if (dataSnapshot.val()) {
@@ -163,9 +166,9 @@ export class FirebasePresenceService extends PresenceService {
163
166
  * usata in setupMyPresence
164
167
  * @param userid
165
168
  */
166
- private referenceLastOnlineForUser(userid: string): firebase.database.Reference {
169
+ private referenceLastOnlineForUser(userid: string): any {
167
170
  const urlNodeLastOnLine = this.urlNodePresence + userid + '/lastOnline';
168
- const lastOnlineRef = firebase.database().ref().child(urlNodeLastOnLine);
171
+ const lastOnlineRef = this.firebase.database().ref().child(urlNodeLastOnLine);
169
172
  return lastOnlineRef;
170
173
  }
171
174
 
@@ -174,9 +177,9 @@ export class FirebasePresenceService extends PresenceService {
174
177
  * usata in setupMyPresence
175
178
  * @param userid
176
179
  */
177
- private referenceOnlineForUser(userid: string): firebase.database.Reference {
180
+ private referenceOnlineForUser(userid: string): any {
178
181
  const urlNodeConnections = this.urlNodePresence + userid + '/connections';
179
- const connectionsRef = firebase.database().ref().child(urlNodeConnections);
182
+ const connectionsRef = this.firebase.database().ref().child(urlNodeConnections);
180
183
  return connectionsRef;
181
184
  }
182
185
 
@@ -3,9 +3,7 @@ import { Injectable } from '@angular/core';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
 
5
5
  // firebase
6
- import firebase from 'firebase/app';
7
- import 'firebase/messaging';
8
- import 'firebase/database';
6
+ // import firebase from 'firebase/app';
9
7
 
10
8
  // services
11
9
  import { TypingService } from '../abstract/typing.service';
@@ -37,18 +35,26 @@ export class FirebaseTypingService extends TypingService {
37
35
  private setTimeoutWritingMessages: any;
38
36
  private tenant: string;
39
37
  private logger: LoggerService = LoggerInstance.getInstance();
40
- private ref: firebase.database.Query;
38
+ // private ref: firebase.database.Query;
39
+
40
+ private firebase: any;
41
+ private ref: any;
41
42
 
42
43
  constructor() {
43
44
  super();
44
45
  }
45
46
 
46
47
  /** */
47
- public initialize(tenant: string) {
48
- // this.tenant = this.getTenant();
48
+ public async initialize(tenant: string) {
49
49
  this.tenant = tenant;
50
50
  this.logger.debug('[FIREBASETypingSERVICE] initialize - tenant ', this.tenant)
51
51
  this.urlNodeTypings = '/apps/' + this.tenant + '/typings/';
52
+
53
+ const { default: firebase} = await import("firebase/app");
54
+ await Promise.all([import("firebase/database")]);
55
+ this.firebase = firebase
56
+ this.ref = this.firebase.database['Query'];
57
+
52
58
  }
53
59
 
54
60
  /** */
@@ -59,11 +65,11 @@ export class FirebaseTypingService extends TypingService {
59
65
  urlTyping = this.urlNodeTypings + idCurrentUser + '/' + idConversation;
60
66
  }
61
67
  this.logger.debug('[FIREBASETypingSERVICE] urlTyping: ', urlTyping);
62
- this.ref = firebase.database().ref(urlTyping);
68
+ this.ref = this.firebase.database().ref(urlTyping);
63
69
  this.ref.on('child_changed', (childSnapshot) => {
64
70
  const precence: TypingModel = childSnapshot.val();
65
- this.logger.debug('[FIREBASETypingSERVICE] child_changed: ', precence);
66
- this.BSIsTyping.next({uid: idConversation, uidUserTypingNow: precence.uid, nameUserTypingNow: precence.name, waitTime: TIME_TYPING_MESSAGE});
71
+ that.logger.debug('[FIREBASETypingSERVICE] child_changed: ', precence);
72
+ that.BSIsTyping.next({uid: idConversation, uidUserTypingNow: precence.uid, nameUserTypingNow: precence.name, waitTime: TIME_TYPING_MESSAGE});
67
73
  });
68
74
  }
69
75
 
@@ -74,9 +80,9 @@ export class FirebaseTypingService extends TypingService {
74
80
  this.setTimeoutWritingMessages = setTimeout(() => {
75
81
  const urlTyping = this.urlNodeTypings + idConversation + '/' + recipientId;// + '/user';
76
82
  this.logger.debug('[FIREBASETypingSERVICE] setWritingMessages:', urlTyping, userFullname);
77
- const timestampData = firebase.database.ServerValue.TIMESTAMP;
83
+ const timestampData = that.firebase.database.ServerValue.TIMESTAMP;
78
84
  const precence = new TypingModel(recipientId, timestampData, message, userFullname);
79
- firebase.database().ref(urlTyping).set(precence, ( error ) => {
85
+ that.firebase.database().ref(urlTyping).set(precence, ( error ) => {
80
86
  if (error) {
81
87
  this.logger.error('[FIREBASETypingSERVICE] setTyping error', error);
82
88
  } else {
@@ -3,11 +3,8 @@ import { Injectable } from '@angular/core';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
 
5
5
  // firebase
6
- import firebase from 'firebase/app';
7
- import 'firebase/messaging';
8
- import 'firebase/database';
9
- import 'firebase/firestore';
10
- import 'firebase/storage';
6
+ // import firebase from 'firebase/app';
7
+ // import 'firebase/storage';
11
8
 
12
9
  // services
13
10
  import { UploadService } from '../abstract/upload.service';
@@ -28,13 +25,19 @@ export class FirebaseUploadService extends UploadService {
28
25
 
29
26
  //private
30
27
  private logger:LoggerService = LoggerInstance.getInstance()
28
+ private firebase: any;
31
29
 
32
30
  constructor() {
33
31
  super();
34
32
  }
35
33
 
36
- public initialize() {
34
+ public async initialize() {
37
35
  this.logger.debug('[FIREBASEUploadSERVICE] initialize');
36
+
37
+ const { default: firebase} = await import("firebase/app");
38
+ await Promise.all([import("firebase/storage")]);
39
+ this.firebase = firebase
40
+
38
41
  }
39
42
 
40
43
  public upload(userId: string, upload: UploadModel): Promise<any> {
@@ -44,7 +47,7 @@ export class FirebaseUploadService extends UploadService {
44
47
  this.logger.debug('[FIREBASEUploadSERVICE] pushUpload ', urlImagesNodeFirebase, upload.file);
45
48
 
46
49
  // Create a root reference
47
- const storageRef = firebase.storage().ref();
50
+ const storageRef = this.firebase.storage().ref();
48
51
  this.logger.debug('[FIREBASEUploadSERVICE] storageRef', storageRef);
49
52
 
50
53
  // Create a reference to 'mountains.jpg'
@@ -70,11 +73,11 @@ export class FirebaseUploadService extends UploadService {
70
73
  that.BSStateUpload.next({ upload: progress, type: upload.file.type });
71
74
 
72
75
  switch (snapshot.state) {
73
- case firebase.storage.TaskState.PAUSED: // or 'paused'
76
+ case that.firebase.storage.TaskState.PAUSED: // or 'paused'
74
77
  that.logger.debug('[FIREBASEUploadSERVICE] Upload is paused');
75
78
 
76
79
  break;
77
- case firebase.storage.TaskState.RUNNING: // or 'running'
80
+ case that.firebase.storage.TaskState.RUNNING: // or 'running'
78
81
  that.logger.debug('[FIREBASEUploadSERVICE] Upload is running');
79
82
 
80
83
  break;
@@ -26,8 +26,6 @@ export class LocalSessionStorage extends AppStorageService{
26
26
  getItem(key: string) {
27
27
  let prefix;
28
28
  try {
29
- // const sv = 'sv' + environment.shemaVersion + '_';
30
- // prefix = prefix + sv;
31
29
  prefix = this.storagePrefix + '_';
32
30
  } catch (e) {
33
31
  this.logger.error('[LocalSessionStorage] getItem >Error :', e);
@@ -41,11 +39,8 @@ export class LocalSessionStorage extends AppStorageService{
41
39
  * @param value
42
40
  */
43
41
  setItem(key: string, value: any): void {
44
- // this.removeItem(key);
45
42
  let prefix;
46
43
  try {
47
- // const sv = 'sv' + environment.shemaVersion + '_';
48
- // prefix = prefix + sv;
49
44
  prefix = this.storagePrefix + '_';
50
45
  } catch (e) {
51
46
  this.logger.error('[LocalSessionStorage] setItem > Error :', e);
@@ -61,8 +56,6 @@ export class LocalSessionStorage extends AppStorageService{
61
56
  getItemWithoutProjectID(key: string) {
62
57
  let prefix;
63
58
  try {
64
- // const sv = 'sv' + environment.shemaVersion + '_';
65
- // prefix = prefix + sv;
66
59
  prefix = this.storagePrefix + '_';
67
60
  } catch (e) {
68
61
  this.logger.error('[LocalSessionStorage] getItemWithoutProjectID > Error :', e);
@@ -80,8 +73,6 @@ export class LocalSessionStorage extends AppStorageService{
80
73
  this.removeItem(key);
81
74
  let prefix = STORAGE_PREFIX;
82
75
  try {
83
- // const sv = 'sv' + environment.shemaVersion + '_';
84
- // prefix = prefix + sv;
85
76
  prefix = this.storagePrefix + '_';
86
77
  } catch (e) {
87
78
  this.logger.error('[LocalSessionStorage] setItemWithoutProjectID > Error :', e);
@@ -93,8 +84,6 @@ export class LocalSessionStorage extends AppStorageService{
93
84
  removeItem(key: string): void {
94
85
  let prefix;
95
86
  try {
96
- // const sv = 'sv' + environment.shemaVersion + '_';
97
- // prefix = prefix + sv;
98
87
  prefix = this.storagePrefix + '_';
99
88
  } catch (e) {
100
89
  this.logger.error('[LocalSessionStorage] removeItem > Error :', e);
@@ -106,8 +95,6 @@ export class LocalSessionStorage extends AppStorageService{
106
95
  clear(): void {
107
96
  let prefix;
108
97
  try {
109
- // const sv = 'sv' + environment.shemaVersion + '_';
110
- // prefix = prefix + sv;
111
98
  prefix = this.storagePrefix + '_';
112
99
  } catch (e) {
113
100
  this.logger.error('[LocalSessionStorage] clear > Error :', e);
@@ -121,9 +108,9 @@ export class LocalSessionStorage extends AppStorageService{
121
108
  }
122
109
  }
123
110
 
124
- for (let i = 0; i < arrayKey.length; i++) {
111
+ for (const key of arrayKey) {
125
112
  // localStorage.removeItem(arrayKey[i]);
126
- this.removeItemForKey(arrayKey[i]);
113
+ this.removeItemForKey(key);
127
114
  }
128
115
 
129
116
  }
@@ -14,7 +14,7 @@ import { Chat21Client } from '../../../assets/js/chat21client';
14
14
  */
15
15
  export class Chat21Service {
16
16
 
17
- public chatClient: any;
17
+ public _chatClient: any;
18
18
  private _config: any;
19
19
 
20
20
  constructor() {
@@ -28,11 +28,21 @@ export class Chat21Service {
28
28
  return this._config;
29
29
  }
30
30
 
31
- initChat() {
31
+ public get chatClient(){
32
+ return this._chatClient
33
+ }
34
+
35
+ public set chatClient(chatClient){
36
+ this._chatClient =chatClient
37
+ }
38
+
39
+ public initChat() {
40
+
32
41
  if (!this._config || this._config.appId === 'CHANGEIT') {
33
42
  throw new Error('chat21Config is not defined. Please setup your environment');
34
43
  }
35
44
  if (!this.chatClient) {
45
+ // const { Chat21Client} = await import("../../../assets/js/chat21client");
36
46
  this.chatClient = new Chat21Client(this._config);
37
47
  } else {
38
48
  console.log("Did you try again to create a Chat21Client istance?");
@@ -10,7 +10,7 @@ import { ConversationModel } from '../../models/conversation';
10
10
  // utils
11
11
  import { TYPE_GROUP } from '../../utils/constants';
12
12
  import { avatarPlaceholder, getColorBck } from '../../utils/utils-user';
13
- import { compareValues, getFromNow, searchIndexInArrayForUid } from '../../utils/utils';
13
+ import { compareValues, searchIndexInArrayForUid } from '../../utils/utils';
14
14
  import { ArchivedConversationsHandlerService } from '../abstract/archivedconversations-handler.service';
15
15
  import { LoggerService } from '../abstract/logger.service';
16
16
  import { LoggerInstance } from '../logger/loggerInstance';
@@ -363,39 +363,6 @@ export class MQTTArchivedConversationsHandler extends ArchivedConversationsHandl
363
363
  return status;
364
364
  }
365
365
 
366
- /**
367
- * calcolo il tempo trascorso da ora al timestamp passato
368
- * @param timestamp
369
- */
370
- private getTimeLastMessage(timestamp: string) {
371
- const timestampNumber = parseInt(timestamp) / 1000;
372
- const time = getFromNow(timestampNumber);
373
- return time;
374
- }
375
-
376
- // removeByUid(uid) {
377
- // const index = searchIndexInArrayForUid(this.conversations, uid);
378
- // if (index > -1) {
379
- // this.conversations.splice(index, 1);
380
- // // this.events.publish('conversationsChanged', this.conversations);
381
- // this.conversationsChanged.next(this.conversations);
382
- // }
383
- // }
384
-
385
- // addConversationListener(uidUser, conversationId) {
386
- // var that = this;
387
- // this.tenant = environment.tenant;
388
- // // const tenant = this.chatManager.getTenant();
389
- // const url = '/apps/' + this.tenant + '/users/' + uidUser + '/conversations/' + conversationId;
390
- // const reference = firebase.database().ref(url);
391
- // console.log("ChatConversationsHandler::addConversationListener::reference:",url, reference.toString());
392
- // reference.on('value', function (snapshot) {
393
- // setTimeout(function () {
394
- // // that.events.publish(conversationId + '-listener', snapshot);
395
- // }, 100);
396
- // });
397
- // }
398
-
399
366
  /**
400
367
  * restituisce il numero di conversazioni nuove
401
368
  */
@@ -4,18 +4,16 @@ import { BehaviorSubject } from 'rxjs';
4
4
  import { environment } from '../../../environments/environment';
5
5
 
6
6
  // firebase
7
- import * as firebase from 'firebase/app';
8
- import 'firebase/messaging';
9
- import 'firebase/database';
10
- import 'firebase/auth';
7
+ // import * as firebase from 'firebase/app';
8
+ // import 'firebase/messaging';
9
+ // import 'firebase/database';
10
+ // import 'firebase/auth';
11
11
 
12
12
  // services
13
13
  // import { EventsService } from '../events-service';
14
14
  import { MessagingAuthService } from '../abstract/messagingAuth.service';
15
15
  import { Chat21Service } from './chat-service';
16
16
  // models
17
- import { UserModel } from '../../models/user';
18
- import { avatarPlaceholder, getColorBck } from '../../utils/utils-user';
19
17
  import { AppStorageService } from '../abstract/app-storage.service';
20
18
  import { LoggerService } from '../abstract/logger.service';
21
19
  import { LoggerInstance } from '../logger/loggerInstance';
@@ -12,7 +12,7 @@ import { ConversationsHandlerService } from '../abstract/conversations-handler.s
12
12
 
13
13
  // utils
14
14
  import { avatarPlaceholder, getColorBck } from '../../utils/utils-user';
15
- import { compareValues, getFromNow, searchIndexInArrayForUid } from '../../utils/utils';
15
+ import { compareValues, searchIndexInArrayForUid } from '../../utils/utils';
16
16
  import { LoggerService } from '../abstract/logger.service';
17
17
  import { LoggerInstance } from '../logger/loggerInstance';
18
18
 
@@ -426,16 +426,6 @@ export class MQTTConversationsHandler extends ConversationsHandlerService {
426
426
  return status;
427
427
  }
428
428
 
429
- /**
430
- * calcolo il tempo trascorso da ora al timestamp passato
431
- * @param timestamp
432
- */
433
- private getTimeLastMessage(timestamp: string) {
434
- const timestampNumber = parseInt(timestamp) / 1000;
435
- const time = getFromNow(timestampNumber);
436
- return time;
437
- }
438
-
439
429
  /**
440
430
  * restituisce il numero di conversazioni nuove
441
431
  */