@chat21/chat21-web-widget 5.0.55 → 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 +16 -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 +7 -66
  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 +3 -4
  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 +10 -15
  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 +2 -2
  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 +6 -60
  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 +47 -163
  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
@@ -1,14 +1,10 @@
1
1
  import { LIVE_PAGE, MEMBER_LEFT_GROUP, TOUCHING_OPERATOR } from './../../utils/constants';
2
- import { CustomLogger } from './../logger/customLogger';
3
2
 
4
- import { Inject, Injectable, Optional } from '@angular/core';
3
+ import { Inject, Injectable } from '@angular/core';
5
4
  import { BehaviorSubject } from 'rxjs';
6
5
 
7
6
  // firebase
8
- import firebase from 'firebase/app';
9
- import 'firebase/messaging';
10
- import 'firebase/database';
11
- import 'firebase/firestore';
7
+ // import firebase from 'firebase/app';
12
8
 
13
9
 
14
10
  // models
@@ -60,7 +56,10 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
60
56
  private CLIENT_BROWSER: string;
61
57
  private startTime: Date = new Date();
62
58
  private logger:LoggerService = LoggerInstance.getInstance()
63
- private ref: firebase.database.Query;
59
+ // private ref: firebase.database.Query;
60
+
61
+ private firebase: any;
62
+ private ref: any;
64
63
 
65
64
  constructor(@Inject('skipMessage') private skipInfoMessage: boolean) {
66
65
  super();
@@ -69,7 +68,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
69
68
  /**
70
69
  * inizializzo conversation handler
71
70
  */
72
- initialize(recipientId: string,recipientFullName: string,loggedUser: UserModel,
71
+ async initialize(recipientId: string,recipientFullName: string,loggedUser: UserModel,
73
72
  tenant: string, translationMap: Map<string, string>, showInfoMessage: string[]) {
74
73
  this.logger.debug('[FIREBASEConversationHandlerSERVICE] initWithRecipient',recipientId, recipientFullName, loggedUser, tenant, translationMap)
75
74
  this.recipientId = recipientId;
@@ -87,6 +86,9 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
87
86
  this.messages = [];
88
87
  this.showInfoMessage = showInfoMessage
89
88
  // this.attributes = this.setAttributes();
89
+ const { default: firebase} = await import("firebase/app");
90
+ this.firebase = firebase
91
+ this.ref = this.firebase.database['Query'];
90
92
  }
91
93
 
92
94
  /**
@@ -100,7 +102,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
100
102
  this.urlNodeFirebase = conversationMessagesRef(this.tenant, this.loggedUser.uid);
101
103
  this.urlNodeFirebase = this.urlNodeFirebase + this.conversationWith;
102
104
  this.logger.debug('[FIREBASEConversationHandlerSERVICE] urlNodeFirebase *****', this.urlNodeFirebase);
103
- const firebaseMessages = firebase.database().ref(this.urlNodeFirebase);
105
+ const firebaseMessages = this.firebase.database().ref(this.urlNodeFirebase);
104
106
  this.ref = firebaseMessages.orderByChild('timestamp').limitToLast(100);
105
107
  this.ref.on('child_added', (childSnapshot) => {
106
108
  that.logger.debug('[FIREBASEConversationHandlerSERVICE] >>>>>>>>>>>>>> child_added: ', childSnapshot.val())
@@ -151,12 +153,12 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
151
153
  if (!channelType || channelType === 'undefined') {
152
154
  channelType = TYPE_DIRECT;
153
155
  }
154
- const firebaseMessagesCustomUid = firebase.database().ref(this.urlNodeFirebase);
156
+ const firebaseMessagesCustomUid = this.firebase.database().ref(this.urlNodeFirebase);
155
157
 
156
158
  // const key = messageRef.key;
157
159
  const lang = document.documentElement.lang;
158
160
  const recipientFullname = conversationWithFullname;
159
- const timestamp = firebase.database.ServerValue.TIMESTAMP
161
+ const timestamp = this.firebase.database.ServerValue.TIMESTAMP
160
162
  const message = new MessageModel(
161
163
  '',
162
164
  lang,
@@ -183,7 +185,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
183
185
  status: 0,
184
186
  metadata: metadataMsg,
185
187
  text: msg,
186
- timestamp: firebase.database.ServerValue.TIMESTAMP,
188
+ timestamp: this.firebase.database.ServerValue.TIMESTAMP,
187
189
  type: typeMsg,
188
190
  attributes: attributes,
189
191
  channel_type: channelType
@@ -447,7 +449,7 @@ export class FirebaseConversationHandler extends ConversationHandlerService {
447
449
  if (msg.sender !== this.loggedUser.uid && msg.status < MSG_STATUS_RECEIVED) {
448
450
  const urlNodeMessagesUpdate = this.urlNodeFirebase + '/' + uid;
449
451
  this.logger.debug('[FIREBASEConversationHandlerSERVICE] update message status', urlNodeMessagesUpdate);
450
- firebase.database().ref(urlNodeMessagesUpdate).update({ status: MSG_STATUS_RECEIVED });
452
+ this.firebase.database().ref(urlNodeMessagesUpdate).update({ status: MSG_STATUS_RECEIVED });
451
453
  }
452
454
  }
453
455
  }
@@ -2,11 +2,7 @@ import { Injectable } from '@angular/core';
2
2
  import { BehaviorSubject } from 'rxjs';
3
3
 
4
4
  // firebase
5
- import firebase from 'firebase/app';
6
- import 'firebase/messaging';
7
- import 'firebase/database';
8
- import 'firebase/auth';
9
- import 'firebase/storage';
5
+ // import firebase from 'firebase/app';
10
6
 
11
7
  // models
12
8
  import { ConversationModel } from '../../models/conversation';
@@ -20,8 +16,7 @@ import { LoggerInstance } from '../logger/loggerInstance';
20
16
 
21
17
  // utils
22
18
  import { avatarPlaceholder, getColorBck } from '../../utils/utils-user';
23
- import { compareValues, getFromNow, conversationsPathForUserId, searchIndexInArrayForUid, isGroup } from '../../utils/utils';
24
-
19
+ import { compareValues, conversationsPathForUserId, searchIndexInArrayForUid, isGroup } from '../../utils/utils';
25
20
 
26
21
 
27
22
 
@@ -48,13 +43,16 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
48
43
  private translationMap: Map<string, string>;
49
44
  private isConversationClosingMap: Map<string, boolean>;
50
45
  private logger:LoggerService = LoggerInstance.getInstance()
51
- private ref: firebase.database.Query;
46
+ // private ref: firebase.database.Query;
52
47
  private BASE_URL: string;
53
48
  private BASE_URL_DATABASE: string;
54
49
  // private audio: any;
55
50
  // private setTimeoutSound: any;
56
51
  private subscribe: any
57
52
 
53
+ private firebase: any;
54
+ private ref: any;
55
+
58
56
  constructor(
59
57
  public http: HttpClient,
60
58
  public appConfig: AppConfigService
@@ -65,7 +63,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
65
63
  /**
66
64
  * inizializzo conversations handler
67
65
  */
68
- initialize(tenant: string,userId: string,translationMap: Map<string, string>) {
66
+ async initialize(tenant: string,userId: string,translationMap: Map<string, string>) {
69
67
  this.tenant = tenant;
70
68
  this.loggedUserId = userId;
71
69
  this.translationMap = translationMap;
@@ -75,6 +73,11 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
75
73
  //this.getConversationsFromStorage();
76
74
  this.BASE_URL = this.appConfig.getConfig().firebaseConfig.chat21ApiUrl;
77
75
  this.BASE_URL_DATABASE = this.appConfig.getConfig().firebaseConfig.databaseURL;
76
+
77
+ const { default: firebase} = await import("firebase/app");
78
+ await Promise.all([import("firebase/database"), import("firebase/auth")]);
79
+ this.firebase = firebase
80
+ this.ref = this.firebase.database['Query'];
78
81
  }
79
82
 
80
83
  /**
@@ -115,7 +118,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
115
118
  const that = this;
116
119
  const urlNodeFirebase = conversationsPathForUserId(this.tenant, this.loggedUserId);
117
120
  this.logger.debug('[FIREBASEConversationsHandlerSERVICE] SubscribeToConversations conversations::ACTIVE urlNodeFirebase', urlNodeFirebase)
118
- this.ref = firebase.database().ref(urlNodeFirebase).orderByChild('timestamp').limitToLast(200);
121
+ this.ref = this.firebase.database().ref(urlNodeFirebase).orderByChild('timestamp').limitToLast(200);
119
122
  this.ref.on('child_changed', (childSnapshot) => {
120
123
  that.changed(childSnapshot);
121
124
  });
@@ -192,7 +195,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
192
195
  const urlUpdate = conversationsPathForUserId(this.tenant, this.loggedUserId) + '/' + conversationrecipient;
193
196
  const update = {};
194
197
  update['/is_new'] = false;
195
- firebase.database().ref(urlUpdate).update(update);
198
+ this.firebase.database().ref(urlUpdate).update(update);
196
199
  }
197
200
 
198
201
  /**
@@ -281,7 +284,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
281
284
 
282
285
 
283
286
  getFirebaseToken(callback:(error: any, idToken: string)=>void) {
284
- const firebase_currentUser = firebase.auth().currentUser;
287
+ const firebase_currentUser = this.firebase.auth().currentUser;
285
288
  this.logger.debug(' // firebase current user ', firebase_currentUser);
286
289
  if (firebase_currentUser) {
287
290
  firebase_currentUser.getIdToken(/* forceRefresh */ true)
@@ -310,7 +313,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
310
313
  // const urlNodeFirebase = '/apps/' + this.tenant + '/users/' + this.loggedUserId + '/conversations/' + conversationId;
311
314
  const urlNodeFirebase = conversationsPathForUserId(this.tenant, this.loggedUserId) // + '/' + conversationId;
312
315
  this.logger.debug('[FIREBASEConversationsHandlerSERVICE] conversationDetail urlNodeFirebase *****', urlNodeFirebase)
313
- const firebaseMessages = firebase.database().ref(urlNodeFirebase);
316
+ const firebaseMessages = this.firebase.database().ref(urlNodeFirebase);
314
317
  // if(this.subscribe){
315
318
  // this.logger.log('[FIREBASEConversationsHandlerSERVICE] getConversationDetail ALREADY SUBSCRIBED')
316
319
  // return;
@@ -565,16 +568,6 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
565
568
  return status;
566
569
  }
567
570
 
568
- /**
569
- * calcolo il tempo trascorso da ora al timestamp passato
570
- * @param timestamp
571
- */
572
- private getTimeLastMessage(timestamp: string) {
573
- const timestampNumber = parseInt(timestamp, 10) / 1000;
574
- const time = getFromNow(timestampNumber);
575
- return time;
576
- }
577
-
578
571
  /**
579
572
  * check if the conversations is valid or not
580
573
  */
@@ -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;