@chat21/chat21-ionic 3.0.55-RC12 → 3.0.55-RC20

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 (26) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/package.json +1 -1
  3. package/src/app/app.component.ts +137 -88
  4. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +13 -6
  5. package/src/app/chatlib/conversation-detail/message/image/image.component.html +10 -8
  6. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +34 -2
  7. package/src/app/chatlib/conversation-detail/message/text/text.component.html +2 -2
  8. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +36 -15
  9. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +142 -1
  10. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +41 -17
  11. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +2 -0
  12. package/src/app/components/conversation-info/advanced-info-accordion/advanced-info-accordion.component.html +2 -2
  13. package/src/app/components/conversation-info/info-group/info-group.component.ts +2 -2
  14. package/src/app/components/utils/user-presence/user-presence.component.ts +8 -6
  15. package/src/app/pages/conversation-detail/conversation-detail.page.html +4 -1
  16. package/src/app/pages/conversation-detail/conversation-detail.page.ts +42 -6
  17. package/src/app/pages/conversations-list/conversations-list.page.ts +43 -20
  18. package/src/app/pages/loader-preview/loader-preview.page.html +1 -1
  19. package/src/app/pages/loader-preview/loader-preview.page.ts +18 -5
  20. package/src/app/services/network-service/network.service.spec.ts +12 -0
  21. package/src/app/services/network-service/network.service.ts +46 -0
  22. package/src/chat-config-pre-test.json +1 -1
  23. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +2 -2
  24. package/src/chat21-core/providers/firebase/firebase-notifications.ts +19 -14
  25. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +30 -10
  26. package/src/index.html +2 -2
@@ -0,0 +1,12 @@
1
+ import { TestBed } from '@angular/core/testing';
2
+
3
+ import { NetworkService } from './network.service';
4
+
5
+ describe('NetworkService', () => {
6
+ beforeEach(() => TestBed.configureTestingModule({}));
7
+
8
+ it('should be created', () => {
9
+ const service: NetworkService = TestBed.get(NetworkService);
10
+ expect(service).toBeTruthy();
11
+ });
12
+ });
@@ -0,0 +1,46 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Observable, Observer, fromEvent, merge, of } from 'rxjs';
3
+ import { mapTo } from 'rxjs/operators';
4
+ import { Platform } from '@ionic/angular';
5
+ import { Network } from '@ionic-native/network/ngx';
6
+
7
+ @Injectable({
8
+ providedIn: 'root'
9
+ })
10
+ export class NetworkService {
11
+
12
+ public appIsOnline$: Observable<boolean> = undefined;
13
+ checkInternet: boolean;
14
+
15
+ constructor(
16
+ private platform: Platform,
17
+ private network: Network
18
+ ) { }
19
+
20
+
21
+
22
+ checkInternetFunc() {
23
+ if (!window || !navigator || !('onLine' in navigator)) return;
24
+
25
+ this.appIsOnline$ = Observable.create(observer => {
26
+ observer.next(true);
27
+ }).pipe(mapTo(true));
28
+
29
+ if (this.platform.is('cordova')) {
30
+ // on Device - when platform is cordova
31
+ this.appIsOnline$ = merge(
32
+ this.network.onConnect().pipe(mapTo(true)),
33
+ this.network.onDisconnect().pipe(mapTo(false))
34
+ );
35
+ } else {
36
+ // on Browser - when platform is Browser
37
+ this.appIsOnline$ = merge(
38
+ of(navigator.onLine),
39
+ fromEvent(window, 'online').pipe(mapTo(true)),
40
+ fromEvent(window, 'offline').pipe(mapTo(false))
41
+ );
42
+ }
43
+ return this.appIsOnline$
44
+ }
45
+
46
+ }
@@ -2,7 +2,7 @@
2
2
  "chatEngine": "firebase",
3
3
  "uploadEngine": "firebase",
4
4
  "pushEngine": "firebase",
5
- "logLevel": "debug",
5
+ "logLevel": "info",
6
6
  "fileUploadAccept":"*/*",
7
7
  "authPersistence": "LOCAL",
8
8
  "firebaseConfig": {
@@ -88,7 +88,7 @@ export class FirebaseAuthService extends MessagingAuthService {
88
88
  // this.onAuthStateChanged();
89
89
  // }
90
90
  // })
91
- this.checkInternetConnection()
91
+ // this.checkInternetConnection()
92
92
 
93
93
  this.onAuthStateChanged();
94
94
  }
@@ -197,7 +197,7 @@ export class FirebaseAuthService extends MessagingAuthService {
197
197
  signInFirebaseWithCustomToken(token: string): Promise<any> {
198
198
  const that = this;
199
199
  let firebasePersistence;
200
- console.log('FB-AUTH firebasePersistence', this.getPersistence())
200
+ // console.log('FB-AUTH firebasePersistence', this.getPersistence())
201
201
  switch (this.getPersistence()) {
202
202
  case 'SESSION': {
203
203
  firebasePersistence = firebase.auth.Auth.Persistence.SESSION;
@@ -158,38 +158,43 @@ export class FirebaseNotifications extends NotificationsService {
158
158
  removeNotificationsInstance(callback: (string) => void) {
159
159
  var self = this;
160
160
  firebase.auth().onAuthStateChanged(function (user) {
161
+
161
162
  if (user) {
162
- self.logger.debug('[FIREBASE-NOTIFICATIONS] - User is signed in. ', user)
163
+ self.logger.debug('[FIREBASE-NOTIFICATIONS] - FB User is signed in. ', user)
164
+
165
+ self.logger.log('[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > this.userId', self.userId);
166
+ self.logger.log('[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > FCMcurrentToken', self.FCMcurrentToken);
167
+ // this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > this.tenant', this.tenant);
168
+
163
169
 
164
170
  } else {
165
- self.logger.debug('[FIREBASE-NOTIFICATIONS] - No user is signed in. ', user)
171
+ self.logger.debug('[FIREBASE-NOTIFICATIONS] - No FB user is signed in. ', user)
166
172
  }
167
173
  });
168
174
 
169
- this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > this.userId', this.userId);
170
- this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > FCMcurrentToken', this.FCMcurrentToken);
171
- // this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > this.tenant', this.tenant);
172
- const urlNodeFirebase = '/apps/' + this.tenant
173
- const connectionsRefinstancesId = urlNodeFirebase + '/users/' + this.userId + '/instances/'
174
- this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> connectionsRefinstancesId ', connectionsRefinstancesId);
175
+ const urlNodeFirebase = '/apps/' + self.tenant
176
+ const connectionsRefinstancesId = urlNodeFirebase + '/users/' + self.userId + '/instances/'
177
+ self.logger.log('[FIREBASE-NOTIFICATIONS] >>>> connectionsRefinstancesId ', connectionsRefinstancesId);
175
178
  let connectionsRefURL = '';
176
179
  if (connectionsRefinstancesId) {
177
- connectionsRefURL = connectionsRefinstancesId + this.FCMcurrentToken;
180
+ connectionsRefURL = connectionsRefinstancesId + self.FCMcurrentToken;
178
181
  const connectionsRef = firebase.database().ref().child(connectionsRefURL);
179
- this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> connectionsRef ', connectionsRef);
180
- this.logger.log('[FIREBASE-NOTIFICATIONS] >>>> connectionsRef url ', connectionsRefURL);
182
+ self.logger.log('[FIREBASE-NOTIFICATIONS] >>>> connectionsRef ', connectionsRef);
183
+ self.logger.log('[FIREBASE-NOTIFICATIONS] >>>> connectionsRef url ', connectionsRefURL);
181
184
  connectionsRef.off()
182
185
  connectionsRef.remove()
183
186
  .then(() => {
184
- this.logger.log("[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > Remove succeeded.")
187
+ self.logger.log("[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > Remove succeeded.")
185
188
  callback('success')
186
189
  }).catch((error) => {
187
- this.logger.error("[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance Remove failed: " + error.message)
190
+ self.logger.error("[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance Remove failed: " + error.message)
188
191
  callback('error')
189
192
  }).finally(() => {
190
- this.logger.log('[FIREBASE-NOTIFICATIONS] COMPLETED');
193
+ self.logger.log('[FIREBASE-NOTIFICATIONS] COMPLETED');
191
194
  })
192
195
  }
196
+
197
+
193
198
  }
194
199
 
195
200
  // removeNotificationsInstance() {
@@ -22,9 +22,9 @@ export class TiledeskAuthService {
22
22
  private tiledeskToken: string;
23
23
  private currentUser: UserModel;
24
24
  private logger: LoggerService = LoggerInstance.getInstance()
25
-
25
+
26
26
  constructor(public http: HttpClient,
27
- public appStorage: AppStorageService) { }
27
+ public appStorage: AppStorageService) { }
28
28
 
29
29
 
30
30
  initialize(serverBaseUrl: string) {
@@ -57,7 +57,8 @@ export class TiledeskAuthService {
57
57
  if (data['success'] && data['token']) {
58
58
  that.tiledeskToken = data['token'];
59
59
  that.createCompleteUser(data['user']);
60
- that.appStorage.setItem('tiledeskToken', that.tiledeskToken);
60
+ // that.appStorage.setItem('tiledeskToken', that.tiledeskToken);
61
+ this.checkAndSetInStorageTiledeskToken(that.tiledeskToken)
61
62
  resolve(that.tiledeskToken)
62
63
  }
63
64
  }, (error) => {
@@ -86,7 +87,8 @@ export class TiledeskAuthService {
86
87
  if (data['success'] && data['token']) {
87
88
  that.tiledeskToken = data['token'];
88
89
  that.createCompleteUser(data['user']);
89
- that.appStorage.setItem('tiledeskToken', that.tiledeskToken);
90
+ // that.appStorage.setItem('tiledeskToken', that.tiledeskToken);
91
+ this.checkAndSetInStorageTiledeskToken(that.tiledeskToken)
90
92
  resolve(that.tiledeskToken)
91
93
  }
92
94
  }, (error) => {
@@ -111,7 +113,9 @@ export class TiledeskAuthService {
111
113
  if (data['success'] && data['token']) {
112
114
  that.tiledeskToken = data['token'];
113
115
  that.createCompleteUser(data['user']);
114
- that.appStorage.setItem('tiledeskToken', that.tiledeskToken); // salvarlo esternamente nell'app.component
116
+
117
+ // that.appStorage.setItem('tiledeskToken', that.tiledeskToken); // salvarlo esternamente nell'app.component
118
+ this.checkAndSetInStorageTiledeskToken(that.tiledeskToken)
115
119
  resolve(this.currentUser)
116
120
  }
117
121
  }, (error) => {
@@ -120,10 +124,11 @@ export class TiledeskAuthService {
120
124
  });
121
125
  }
122
126
 
123
- logOut(){
127
+ logOut() {
124
128
  this.logger.debug('[TILEDESK-AUTH] logOut()')
125
129
  this.appStorage.removeItem('tiledeskToken')
126
130
  this.appStorage.removeItem('currentUser')
131
+ this.setCurrentUser(null);
127
132
  }
128
133
 
129
134
 
@@ -149,13 +154,28 @@ export class TiledeskAuthService {
149
154
  member.fullname = fullname;
150
155
  member.avatar = avatar;
151
156
  member.color = color;
152
- this.currentUser = member;
153
- this.logger.debug('[TILEDESK-AUTH] - createCompleteUser member ', member)
157
+ this.currentUser = member;
158
+ this.logger.debug('[TILEDESK-AUTH] - createCompleteUser member ', member);
154
159
  this.appStorage.setItem('currentUser', JSON.stringify(this.currentUser));
155
160
  } catch (err) {
156
- this.logger.error('[TILEDESK-AUTH]- createCompleteUser ERR ', err)
161
+ this.logger.error('[TILEDESK-AUTH]- createCompleteUser ERR ', err)
162
+ }
163
+ }
164
+
165
+
166
+ private checkAndSetInStorageTiledeskToken(tiledeskToken) {
167
+ this.logger.log('[TILEDESK-AUTH] - checkAndSetInStorageTiledeskToken tiledeskToken from request', tiledeskToken)
168
+ const storedTiledeskToken = this.appStorage.getItem('tiledeskToken');
169
+ this.logger.log('[TILEDESK-AUTH] - checkAndSetInStorageTiledeskToken storedTiledeskToken ', storedTiledeskToken)
170
+ if (!storedTiledeskToken) {
171
+ this.logger.log('[TILEDESK-AUTH] - checkAndSetInStorageTiledeskToken TOKEN DOES NOT EXIST - RUN SET ')
172
+ this.appStorage.setItem('tiledeskToken', tiledeskToken);
173
+ } else if (storedTiledeskToken && storedTiledeskToken !== tiledeskToken) {
174
+ console.log('[TILEDESK-AUTH] - checkAndSetInStorageTiledeskToken STORED-TOKEN EXIST BUT IS != FROM TOKEN - RUN SET ')
175
+ this.appStorage.setItem('tiledeskToken', tiledeskToken);
176
+ } else if (storedTiledeskToken && storedTiledeskToken === tiledeskToken){
177
+ this.logger.log('[TILEDESK-AUTH] - checkAndSetInStorageTiledeskToken STORED-TOKEN EXIST AND IS = TO TOKEN ')
157
178
  }
158
-
159
179
  }
160
180
 
161
181
 
package/src/index.html CHANGED
@@ -27,7 +27,7 @@
27
27
  <!-- <script src="./assets/js/watchToConnectionAtStartUp.js"></script> -->
28
28
 
29
29
  <script>
30
- console.log("index.html Hey script watchToConnectionAtStartUp! ");
30
+ // console.log("index.html Hey script watchToConnectionAtStartUp! ");
31
31
  // // ononline version
32
32
  window.ononline = (event) => {
33
33
  console.log("index.html You are now connected to the network.");
@@ -37,7 +37,7 @@
37
37
  window.onoffline = (event) => {
38
38
  console.log("The network connection has been lost.");
39
39
  };
40
- console.log('index.html window.navigator.onLine is ' + window.navigator.onLine);
40
+ // console.log('index.html window.navigator.onLine is ' + window.navigator.onLine);
41
41
 
42
42
  // || window.navigator.onLine === true
43
43
  if (window.navigator.onLine === false ) {