@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.
- package/CHANGELOG.md +31 -0
- package/package.json +1 -1
- package/src/app/app.component.ts +137 -88
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +13 -6
- package/src/app/chatlib/conversation-detail/message/image/image.component.html +10 -8
- package/src/app/chatlib/conversation-detail/message/image/image.component.ts +34 -2
- package/src/app/chatlib/conversation-detail/message/text/text.component.html +2 -2
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +36 -15
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +142 -1
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +41 -17
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +2 -0
- package/src/app/components/conversation-info/advanced-info-accordion/advanced-info-accordion.component.html +2 -2
- package/src/app/components/conversation-info/info-group/info-group.component.ts +2 -2
- package/src/app/components/utils/user-presence/user-presence.component.ts +8 -6
- package/src/app/pages/conversation-detail/conversation-detail.page.html +4 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +42 -6
- package/src/app/pages/conversations-list/conversations-list.page.ts +43 -20
- package/src/app/pages/loader-preview/loader-preview.page.html +1 -1
- package/src/app/pages/loader-preview/loader-preview.page.ts +18 -5
- package/src/app/services/network-service/network.service.spec.ts +12 -0
- package/src/app/services/network-service/network.service.ts +46 -0
- package/src/chat-config-pre-test.json +1 -1
- package/src/chat21-core/providers/firebase/firebase-auth-service.ts +2 -2
- package/src/chat21-core/providers/firebase/firebase-notifications.ts +19 -14
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +30 -10
- 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
|
+
}
|
|
@@ -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
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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 +
|
|
180
|
+
connectionsRefURL = connectionsRefinstancesId + self.FCMcurrentToken;
|
|
178
181
|
const connectionsRef = firebase.database().ref().child(connectionsRefURL);
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
187
|
+
self.logger.log("[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance > Remove succeeded.")
|
|
185
188
|
callback('success')
|
|
186
189
|
}).catch((error) => {
|
|
187
|
-
|
|
190
|
+
self.logger.error("[FIREBASE-NOTIFICATIONS] >>>> removeNotificationsInstance Remove failed: " + error.message)
|
|
188
191
|
callback('error')
|
|
189
192
|
}).finally(() => {
|
|
190
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ) {
|