@chat21/chat21-ionic 3.0.65 → 3.0.68-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.
- package/CHANGELOG.md +17 -0
- package/deploy_amazon_prod.sh +6 -2
- package/package.json +1 -1
- package/src/app/app.component.ts +90 -56
- package/src/app/app.module.ts +4 -4
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +8 -0
- package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.ts +0 -2
- package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.html +49 -4
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +1 -3
- package/src/app/components/conversation-info/info-content/info-content.component.ts +22 -25
- package/src/app/components/ddp-header/ddp-header.component.html +20 -5
- package/src/app/components/ddp-header/ddp-header.component.ts +8 -0
- package/src/app/components/project-item/project-item.component.ts +26 -49
- package/src/app/components/sidebar/sidebar.component.ts +33 -56
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +54 -106
- package/src/app/pages/conversations-list/conversations-list.page.html +3 -1
- package/src/app/pages/conversations-list/conversations-list.page.ts +48 -30
- package/src/app/pages/create-canned-response/create-canned-response.page.ts +22 -29
- package/src/app/pages/loader-preview/loader-preview.page.ts +12 -43
- package/src/app/services/websocket/websocket.service.ts +1 -1
- package/src/assets/i18n/ar.json +1 -1
- package/src/assets/i18n/az.json +266 -0
- package/src/assets/i18n/de.json +1 -1
- package/src/assets/i18n/en.json +1 -1
- package/src/assets/i18n/es.json +1 -1
- package/src/assets/i18n/fr.json +1 -1
- package/src/assets/i18n/it.json +1 -1
- package/src/assets/i18n/kk.json +266 -0
- package/src/assets/i18n/pt.json +1 -1
- package/src/assets/i18n/ru.json +1 -1
- package/src/assets/i18n/sr.json +1 -1
- package/src/assets/i18n/sv.json +266 -0
- package/src/assets/i18n/tr.json +1 -1
- package/src/assets/i18n/uk.json +266 -0
- package/src/assets/i18n/uz.json +267 -0
- package/src/assets/images/language_flag/az.png +0 -0
- package/src/assets/images/language_flag/kk.png +0 -0
- package/src/assets/images/language_flag/{sv-SE.png → sv.png} +0 -0
- package/src/assets/images/language_flag/uz.png +0 -0
- package/src/chat-config-mqtt-localhost.json +10 -3
- package/src/chat-config-pre.json +3 -1
- package/src/chat21-core/providers/abstract/archivedconversations-handler.service.ts +1 -2
- package/src/chat21-core/providers/abstract/conversations-handler.service.ts +4 -4
- package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +3 -6
- package/src/chat21-core/providers/firebase/firebase-auth-service.ts +2 -8
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +4 -4
- package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +49 -10
- package/src/chat21-core/providers/firebase/firebase-groups-handler.ts +5 -5
- package/src/chat21-core/providers/firebase/firebase-image-repo.ts +2 -1
- package/src/chat21-core/providers/firebase/firebase-presence.service.ts +2 -3
- package/src/chat21-core/providers/firebase/firebase-typing.service.ts +2 -2
- package/src/chat21-core/providers/firebase/firebase-upload.service.ts +1 -1
- package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +74 -274
- package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +26 -29
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +7 -28
- package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +24 -52
- package/src/chat21-core/providers/mqtt/mqtt-groups-handler.ts +11 -15
- package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +88 -93
- package/src/chat21-core/providers/mqtt/mqtt-presence.service.ts +3 -2
- package/src/chat21-core/providers/mqtt/mqtt-typing.service.ts +5 -0
- package/src/chat21-core/providers/native/native-image-repo.ts +9 -2
- package/src/chat21-core/providers/native/native-upload-service.ts +3 -11
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -2
- package/src/chat21-core/utils/constants.ts +1 -1
- package/src/chat21-core/utils/utils-message.ts +1 -1
- package/deploy_pre.sh +0 -44
|
@@ -15,16 +15,15 @@ export abstract class ConversationsHandlerService {
|
|
|
15
15
|
|
|
16
16
|
// BehaviorSubject
|
|
17
17
|
abstract BSConversationDetail: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
18
|
-
// abstract readAllMessages: BehaviorSubject<string> = new BehaviorSubject<string>(null);
|
|
19
18
|
abstract conversationAdded: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
20
19
|
abstract conversationChanged: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
20
|
+
abstract conversationChangedDetailed: BehaviorSubject<{value: ConversationModel, previousValue: ConversationModel}> = new BehaviorSubject<{value: ConversationModel, previousValue: ConversationModel}>(null);
|
|
21
21
|
abstract conversationRemoved: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
22
|
-
abstract
|
|
23
|
-
|
|
22
|
+
// abstract readAllMessages: BehaviorSubject<string> = new BehaviorSubject<string>(null);
|
|
23
|
+
|
|
24
24
|
// params
|
|
25
25
|
abstract conversations: Array<ConversationModel> = [];
|
|
26
26
|
abstract uidConvSelected: string;
|
|
27
|
-
// abstract imageRepo: ImageRepoService;
|
|
28
27
|
|
|
29
28
|
// functions
|
|
30
29
|
abstract initialize(tenant: string, userId: string, translationMap: Map<string, string>): void;
|
|
@@ -34,6 +33,7 @@ export abstract class ConversationsHandlerService {
|
|
|
34
33
|
abstract setConversationRead(conversationId: string): void;
|
|
35
34
|
abstract dispose(): void;
|
|
36
35
|
abstract archiveConversation(conversationId: string): void;
|
|
36
|
+
abstract getLastConversation(callback:(conv: ConversationModel, error: string)=>void): void
|
|
37
37
|
abstract getConversationDetail(conversationId: string, callback:(conv: ConversationModel)=>void): void;
|
|
38
38
|
abstract getClosingConversation(conversationId: string): boolean;
|
|
39
39
|
abstract setClosingConversation(conversationId: string, status: boolean): void;
|
|
@@ -28,11 +28,10 @@ export class FirebaseArchivedConversationsHandler extends ArchivedConversationsH
|
|
|
28
28
|
|
|
29
29
|
// BehaviorSubject
|
|
30
30
|
BSConversationDetail: BehaviorSubject<ConversationModel>;
|
|
31
|
+
archivedConversationAdded: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
32
|
+
archivedConversationChanged: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
33
|
+
archivedConversationRemoved: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
31
34
|
// readAllMessages: BehaviorSubject<string>;
|
|
32
|
-
archivedConversationAdded: BehaviorSubject<ConversationModel>;
|
|
33
|
-
archivedConversationChanged: BehaviorSubject<ConversationModel>;
|
|
34
|
-
archivedConversationRemoved: BehaviorSubject<ConversationModel>;
|
|
35
|
-
loadedConversationsStorage: BehaviorSubject<ConversationModel[]>;
|
|
36
35
|
|
|
37
36
|
// public params
|
|
38
37
|
archivedConversations: Array<ConversationModel> = [];
|
|
@@ -325,7 +324,6 @@ export class FirebaseArchivedConversationsHandler extends ArchivedConversationsH
|
|
|
325
324
|
* 7 - attivo sound se è un msg nuovo
|
|
326
325
|
*/
|
|
327
326
|
|
|
328
|
-
//TODO-GAB: fare emit singola conversation e non dell'intero array di conversations
|
|
329
327
|
private changed(childSnapshot: any) {
|
|
330
328
|
if (this.conversationGenerate(childSnapshot)) {
|
|
331
329
|
const index = searchIndexInArrayForUid(this.archivedConversations, childSnapshot.key);
|
|
@@ -395,7 +393,6 @@ export class FirebaseArchivedConversationsHandler extends ArchivedConversationsH
|
|
|
395
393
|
conversation_with_fullname = conv.recipient_fullname;
|
|
396
394
|
}
|
|
397
395
|
// Fixes the bug: if a snippet of code is pasted and sent it is not displayed correctly in the archived convesations list
|
|
398
|
-
// conv.last_message_text = htmlEntities(conv.last_message_text)
|
|
399
396
|
conv.conversation_with = conversation_with;
|
|
400
397
|
conv.conversation_with_fullname = conversation_with_fullname;
|
|
401
398
|
conv.status = this.setStatusConversation(conv.sender, conv.uid);
|
|
@@ -40,21 +40,15 @@ export class FirebaseAuthService extends MessagingAuthService {
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
// BehaviorSubject
|
|
43
|
-
BSAuthStateChanged: BehaviorSubject<any
|
|
44
|
-
BSSignOut: BehaviorSubject<any
|
|
45
|
-
// firebaseSignInWithCustomToken: BehaviorSubject<any>;
|
|
43
|
+
BSAuthStateChanged: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
|
44
|
+
BSSignOut: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
|
46
45
|
|
|
47
46
|
// public params
|
|
48
47
|
// private persistence: string;
|
|
49
48
|
public SERVER_BASE_URL: string;
|
|
50
49
|
|
|
51
50
|
// private
|
|
52
|
-
private URL_TILEDESK_SIGNIN: string;
|
|
53
|
-
private URL_TILEDESK_SIGNIN_ANONYMOUSLY: string;
|
|
54
51
|
private URL_TILEDESK_CREATE_CUSTOM_TOKEN: string;
|
|
55
|
-
private URL_TILEDESK_SIGNIN_WITH_CUSTOM_TOKEN: string;
|
|
56
|
-
//TODO-GAB
|
|
57
|
-
// private imageRepo: ImageRepoService = new FirebaseImageRepoService();
|
|
58
52
|
|
|
59
53
|
private firebaseToken: string;
|
|
60
54
|
private logger: LoggerService = LoggerInstance.getInstance()
|
|
@@ -32,10 +32,10 @@ import { messageType, isEmojii } from 'src/chat21-core/utils/utils-message';
|
|
|
32
32
|
export class FirebaseConversationHandler extends ConversationHandlerService {
|
|
33
33
|
|
|
34
34
|
// BehaviorSubject
|
|
35
|
-
messageAdded: BehaviorSubject<MessageModel
|
|
36
|
-
messageChanged: BehaviorSubject<MessageModel
|
|
37
|
-
messageRemoved: BehaviorSubject<string
|
|
38
|
-
|
|
35
|
+
messageAdded: BehaviorSubject<MessageModel> = new BehaviorSubject<MessageModel>(null);;
|
|
36
|
+
messageChanged: BehaviorSubject<MessageModel> = new BehaviorSubject<MessageModel>(null);;
|
|
37
|
+
messageRemoved: BehaviorSubject<string> = new BehaviorSubject<string>(null);
|
|
38
|
+
messageWait: BehaviorSubject<any> = new BehaviorSubject<string>(null);
|
|
39
39
|
|
|
40
40
|
// public variables
|
|
41
41
|
public attributes: any;
|
|
@@ -31,12 +31,12 @@ import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
|
31
31
|
export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
32
32
|
|
|
33
33
|
// BehaviorSubject
|
|
34
|
-
BSConversationDetail: BehaviorSubject<ConversationModel
|
|
34
|
+
BSConversationDetail: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
35
|
+
conversationAdded: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
36
|
+
conversationChanged: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
37
|
+
conversationChangedDetailed: BehaviorSubject<{value: ConversationModel, previousValue: ConversationModel}> = new BehaviorSubject<{value: ConversationModel, previousValue: ConversationModel}>(null);
|
|
38
|
+
conversationRemoved: BehaviorSubject<ConversationModel> = new BehaviorSubject<ConversationModel>(null);
|
|
35
39
|
// readAllMessages: BehaviorSubject<string>;
|
|
36
|
-
conversationAdded: BehaviorSubject<ConversationModel>;
|
|
37
|
-
conversationChanged: BehaviorSubject<ConversationModel>;
|
|
38
|
-
conversationRemoved: BehaviorSubject<ConversationModel>;
|
|
39
|
-
loadedConversationsStorage: BehaviorSubject<ConversationModel[]>;
|
|
40
40
|
|
|
41
41
|
// public params
|
|
42
42
|
conversations: Array<ConversationModel> = [];
|
|
@@ -51,6 +51,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
51
51
|
private logger: LoggerService = LoggerInstance.getInstance()
|
|
52
52
|
private ref: firebase.database.Query;
|
|
53
53
|
private BASE_URL: string;
|
|
54
|
+
private BASE_URL_DATABASE: string;
|
|
54
55
|
// private audio: any;
|
|
55
56
|
// private setTimeoutSound: any;
|
|
56
57
|
private subscribe: any
|
|
@@ -79,6 +80,7 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
79
80
|
//this.databaseProvider.initialize(userId, this.tenant);
|
|
80
81
|
//this.getConversationsFromStorage();
|
|
81
82
|
this.BASE_URL = this.appConfig.getConfig().firebaseConfig.chat21ApiUrl;
|
|
83
|
+
this.BASE_URL_DATABASE = this.appConfig.getConfig().firebaseConfig.databaseURL;
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
/**
|
|
@@ -165,6 +167,45 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
165
167
|
}, 2000);
|
|
166
168
|
}
|
|
167
169
|
|
|
170
|
+
public getLastConversation(callback: (conversation: ConversationModel, error: string)=>void){
|
|
171
|
+
|
|
172
|
+
this.getFirebaseToken((error, idToken) => {
|
|
173
|
+
this.logger.debug('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi idToken', idToken)
|
|
174
|
+
this.logger.debug('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi error', error)
|
|
175
|
+
if (idToken) {
|
|
176
|
+
const httpOptions = {
|
|
177
|
+
headers: new HttpHeaders({
|
|
178
|
+
'Accept': 'application/json',
|
|
179
|
+
'Content-Type': 'application/json',
|
|
180
|
+
// 'Authorization': 'Bearer ' + idToken,
|
|
181
|
+
})
|
|
182
|
+
|
|
183
|
+
}
|
|
184
|
+
const urlNodeFirebase = conversationsPathForUserId(this.tenant, this.loggedUserId);
|
|
185
|
+
const queryString = '?auth=' + idToken +'&orderBy="timestamp"&limitToLast=1'
|
|
186
|
+
const url = this.BASE_URL_DATABASE + urlNodeFirebase + '.json' + queryString// + queryString;
|
|
187
|
+
this.http.get(url, httpOptions).subscribe((childSnapshot: any) => {
|
|
188
|
+
this.logger.debug('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi - RES', childSnapshot);
|
|
189
|
+
if(childSnapshot){
|
|
190
|
+
const childData: ConversationModel = childSnapshot[Object.keys(childSnapshot)[0]];
|
|
191
|
+
childData.uid = Object.keys(childSnapshot)[0]
|
|
192
|
+
const conversation = this.completeConversation(childData);
|
|
193
|
+
callback(conversation, null)
|
|
194
|
+
}else if(!childSnapshot){
|
|
195
|
+
callback(null, null)
|
|
196
|
+
}
|
|
197
|
+
}, (error) => {
|
|
198
|
+
this.logger.error('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi ERROR ', error);
|
|
199
|
+
callback(null, 'error')
|
|
200
|
+
}, () => {
|
|
201
|
+
this.logger.debug('[FIREBASEConversationsHandlerSERVICE] getConversationsRESTApi * COMPLETE *');
|
|
202
|
+
});
|
|
203
|
+
} else {
|
|
204
|
+
callback(null, 'error')
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
|
|
168
209
|
/**
|
|
169
210
|
* restituisce il numero di conversazioni nuove
|
|
170
211
|
*/
|
|
@@ -439,7 +480,6 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
439
480
|
* 6 - ordino l'array per timestamp
|
|
440
481
|
* 7 - pubblico conversations:update
|
|
441
482
|
*/
|
|
442
|
-
//TODO-GAB: ora emit singola conversation e non dell'intero array di conversations
|
|
443
483
|
private added(childSnapshot: any) {
|
|
444
484
|
if (this.conversationGenerate(childSnapshot)) {
|
|
445
485
|
const index = searchIndexInArrayForUid(this.conversations, childSnapshot.key);
|
|
@@ -462,13 +502,14 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
462
502
|
* 7 - attivo sound se è un msg nuovo
|
|
463
503
|
*/
|
|
464
504
|
|
|
465
|
-
//TODO-GAB: ora emit singola conversation e non dell'intero array di conversations
|
|
466
505
|
private changed(childSnapshot: any) {
|
|
506
|
+
const oldConversation = this.conversations[searchIndexInArrayForUid(this.conversations, childSnapshot.key)]
|
|
467
507
|
if (this.conversationGenerate(childSnapshot)) {
|
|
468
508
|
const index = searchIndexInArrayForUid(this.conversations, childSnapshot.key);
|
|
469
509
|
if (index > -1) {
|
|
470
510
|
const conversationChanged = this.conversations[index]
|
|
471
|
-
this.conversationChanged.next(conversationChanged)
|
|
511
|
+
this.conversationChanged.next(conversationChanged)
|
|
512
|
+
this.conversationChangedDetailed.next({value: conversationChanged, previousValue: oldConversation});
|
|
472
513
|
}
|
|
473
514
|
} else {
|
|
474
515
|
this.logger.error('[FIREBASEConversationsHandlerSERVICE]CHANGED::conversations with conversationId: ', childSnapshot.key, 'is not valid')
|
|
@@ -482,7 +523,6 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
482
523
|
* 4 - pubblico conversations:update
|
|
483
524
|
* 5 - elimino conversazione dall'array delle conversazioni chiuse
|
|
484
525
|
*/
|
|
485
|
-
//TODO-GAB: ora emit singola conversation e non dell'intero array di conversations
|
|
486
526
|
private removed(childSnapshot: any) {
|
|
487
527
|
const index = searchIndexInArrayForUid(this.conversations, childSnapshot.key);
|
|
488
528
|
if (index > -1) {
|
|
@@ -548,7 +588,6 @@ export class FirebaseConversationsHandler extends ConversationsHandlerService {
|
|
|
548
588
|
/** END: UPDATE CONVERSATIONS is_new IF conv is selected or sender is me */
|
|
549
589
|
|
|
550
590
|
// Fixes the bug: if a snippet of code is pasted and sent it is not displayed correctly in the convesations list
|
|
551
|
-
// conv.time_last_message = this.getTimeLastMessage(conv.timestamp);
|
|
552
591
|
conv.conversation_with = conversation_with;
|
|
553
592
|
conv.conversation_with_fullname = conversation_with_fullname;
|
|
554
593
|
conv.status = this.setStatusConversation(conv.sender, conv.uid);
|
|
@@ -31,11 +31,11 @@ import { LoggerInstance } from '../logger/loggerInstance';
|
|
|
31
31
|
export class FirebaseGroupsHandler extends GroupsHandlerService {
|
|
32
32
|
|
|
33
33
|
// BehaviorSubject
|
|
34
|
-
BSgroupDetail: BehaviorSubject<GroupModel
|
|
35
|
-
SgroupDetail: Subject<GroupModel
|
|
36
|
-
groupAdded: BehaviorSubject<GroupModel
|
|
37
|
-
groupChanged: BehaviorSubject<GroupModel
|
|
38
|
-
groupRemoved: BehaviorSubject<GroupModel
|
|
34
|
+
BSgroupDetail: BehaviorSubject<GroupModel> = new BehaviorSubject<GroupModel>(null);
|
|
35
|
+
SgroupDetail: Subject<GroupModel> = new BehaviorSubject<GroupModel>(null);
|
|
36
|
+
groupAdded: BehaviorSubject<GroupModel> = new BehaviorSubject<GroupModel>(null);
|
|
37
|
+
groupChanged: BehaviorSubject<GroupModel> = new BehaviorSubject<GroupModel>(null);
|
|
38
|
+
groupRemoved: BehaviorSubject<GroupModel> = new BehaviorSubject<GroupModel>(null);
|
|
39
39
|
|
|
40
40
|
// public params
|
|
41
41
|
conversations: Array<ConversationModel> = [];
|
|
@@ -8,6 +8,7 @@ import { ImageRepoService } from '../abstract/image-repo.service';
|
|
|
8
8
|
// import * as firebase from 'firebase/app';
|
|
9
9
|
import firebase from "firebase/app";
|
|
10
10
|
import 'firebase/storage';
|
|
11
|
+
import { HttpClient } from '@angular/common/http';
|
|
11
12
|
|
|
12
13
|
@Injectable({ providedIn: 'root' })
|
|
13
14
|
|
|
@@ -17,7 +18,7 @@ export class FirebaseImageRepoService extends ImageRepoService {
|
|
|
17
18
|
private urlStorageBucket = environment.firebaseConfig.storageBucket + '/o/profiles%2F';
|
|
18
19
|
private baseImageURL: string;
|
|
19
20
|
|
|
20
|
-
constructor() {
|
|
21
|
+
constructor(public http: HttpClient) {
|
|
21
22
|
super();
|
|
22
23
|
}
|
|
23
24
|
|
|
@@ -23,9 +23,8 @@ import { LoggerInstance } from '../logger/loggerInstance';
|
|
|
23
23
|
export class FirebasePresenceService extends PresenceService {
|
|
24
24
|
|
|
25
25
|
// BehaviorSubject
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
BSLastOnline: BehaviorSubject<any>;
|
|
26
|
+
BSIsOnline: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
|
27
|
+
BSLastOnline: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
|
29
28
|
|
|
30
29
|
// public tenant: string;
|
|
31
30
|
|
|
@@ -32,8 +32,8 @@ export class TypingModel {
|
|
|
32
32
|
export class FirebaseTypingService extends TypingService {
|
|
33
33
|
|
|
34
34
|
// BehaviorSubject
|
|
35
|
-
BSIsTyping: BehaviorSubject<any
|
|
36
|
-
BSSetTyping: BehaviorSubject<any
|
|
35
|
+
BSIsTyping: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
|
36
|
+
BSSetTyping: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
|
37
37
|
|
|
38
38
|
// public params
|
|
39
39
|
// public tenant: string;
|
|
@@ -24,7 +24,7 @@ import { UploadModel } from '../../models/upload';
|
|
|
24
24
|
export class FirebaseUploadService extends UploadService {
|
|
25
25
|
|
|
26
26
|
// BehaviorSubject
|
|
27
|
-
BSStateUpload: BehaviorSubject<any
|
|
27
|
+
BSStateUpload: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
|
28
28
|
|
|
29
29
|
//private
|
|
30
30
|
private url: string;
|