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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/.github/workflows/build.yml +1 -0
  2. package/CHANGELOG.md +13 -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/chatbot-panel.html +4 -0
  101. package/src/assets/twp/index.html +2 -57
  102. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +15 -23
  103. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +21 -20
  104. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +15 -13
  105. package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +16 -23
  106. package/src/chat21-core/providers/firebase/firebase-groups-handler.ts +15 -11
  107. package/src/chat21-core/providers/firebase/firebase-image-repo.ts +13 -4
  108. package/src/chat21-core/providers/firebase/firebase-init-service.ts +3 -3
  109. package/src/chat21-core/providers/firebase/firebase-notifications.ts +11 -9
  110. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +14 -11
  111. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +17 -11
  112. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +12 -9
  113. package/src/chat21-core/providers/localSessionStorage.ts +2 -15
  114. package/src/chat21-core/providers/mqtt/chat-service.ts +12 -2
  115. package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -34
  116. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +4 -6
  117. package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +1 -11
  118. package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +13 -7
  119. package/src/chat21-core/providers/mqtt/mqtt-presence.service.ts +3 -3
  120. package/src/chat21-core/providers/mqtt/mqtt-typing.service.ts +3 -3
  121. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -1
  122. package/src/chat21-core/utils/user-typing/user-typing.component.scss +3 -3
  123. package/src/chat21-core/utils/utils.ts +46 -118
  124. package/src/launch.js +42 -12
  125. package/src/models/message.ts +0 -23
  126. package/src/test-new.html +0 -6
  127. package/src/app/providers/settings-saver.service.spec.ts +0 -17
  128. package/src/app/providers/settings-saver.service.ts +0 -56
  129. package/src/app/providers/storage.service.spec.ts +0 -16
  130. package/src/app/providers/storage.service.ts +0 -220
  131. package/src/app/utils/translations.ts +0 -122
@@ -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;
@@ -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?");