diff --git a/src/app/modals/profile/profile.page.html b/src/app/modals/profile/profile.page.html
index 0b4d029e5..7b4c9a65b 100644
--- a/src/app/modals/profile/profile.page.html
+++ b/src/app/modals/profile/profile.page.html
@@ -45,7 +45,8 @@
diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts
index 636c72896..7af4f7fa5 100644
--- a/src/app/pages/chat/chat.page.ts
+++ b/src/app/pages/chat/chat.page.ts
@@ -125,6 +125,8 @@ export class ChatPage implements OnInit {
this.showLoader = true;
+ this.segment = 'Contactos'
+
}
ngOnInit() {
@@ -320,7 +322,6 @@ export class ChatPage implements OnInit {
async setIntervenient(data) {
this.taskParticipants = removeDuplicate(data)
-
}
async setIntervenientCC(data) {
@@ -339,12 +340,11 @@ export class ChatPage implements OnInit {
}
onSegmentChange() {
- //this.load();
+ this.wsChatMethodsService.getAllRooms();
}
doRefresh(event) {
setTimeout(() => {
- //this.load();
event.target.complete();
}, 1000);
}
@@ -357,7 +357,6 @@ export class ChatPage implements OnInit {
});
}
-
getDirectMessagesDB() {
if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
this.storageservice.get("rooms").then((rooms) =>{
diff --git a/src/app/pages/chat/group-messages/group-messages.page.ts b/src/app/pages/chat/group-messages/group-messages.page.ts
index 092058387..980185f06 100644
--- a/src/app/pages/chat/group-messages/group-messages.page.ts
+++ b/src/app/pages/chat/group-messages/group-messages.page.ts
@@ -150,7 +150,6 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
})
- //this.loadFiles();
}
setStatus(status: string) {
diff --git a/src/app/pages/chat/messages/contacts/contacts.page.ts b/src/app/pages/chat/messages/contacts/contacts.page.ts
index 1c4bc1b2b..2e0777fdf 100644
--- a/src/app/pages/chat/messages/contacts/contacts.page.ts
+++ b/src/app/pages/chat/messages/contacts/contacts.page.ts
@@ -104,7 +104,6 @@ export class ContactsPage implements OnInit {
this.room = res['room'];
-
await this.WsChatMethodsService.getAllRooms();
this.getDirectMessage(this.room._id);
});
@@ -148,7 +147,6 @@ export class ContactsPage implements OnInit {
/* this.getDirectMessage(this.room._id); */
-
/* const modal = await this.modalController.create({
component: MessagesPage,
cssClass: 'group-messages',
diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts
index 2d78790c8..0a55bfca5 100644
--- a/src/app/pages/chat/messages/messages.page.ts
+++ b/src/app/pages/chat/messages/messages.page.ts
@@ -126,7 +126,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
private sqlservice: SqliteService,
public wsChatMethodsService: WsChatMethodsService,
private AttachmentsService: AttachmentsService,
-
private CameraService: CameraService,
private processesService: ProcessesService,
private storage: Storage,
@@ -150,7 +149,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
-
this.wsChatMethodsService.getDmRoom(this.roomId).loadHistory({})
this.wsChatMethodsService.getDmRoom(this.roomId).scrollDown = this.scrollToBottomClicked
this.wsChatMethodsService.openRoom(this.roomId)
diff --git a/src/app/pages/login/login.page.ts b/src/app/pages/login/login.page.ts
index 74519ab76..6a576a779 100644
--- a/src/app/pages/login/login.page.ts
+++ b/src/app/pages/login/login.page.ts
@@ -13,7 +13,11 @@ import { ThemeService } from 'src/app/services/theme.service';
import { StorageService } from 'src/app/services/storage.service';
import { PermissionService } from 'src/app/services/permission.service';
import { PermissionList } from 'src/app/models/permission/permissionList';
-import { MessageModel, DeleteMessageModel } from '../../models/beast-orm'
+import { MessageModel, DeleteMessageModel } from '../../models/beast-orm';
+import { WsChatService } from 'src/app/services/chat/ws-chat.service';
+import { Storage } from '@ionic/storage';
+import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service';
+import { ChatService } from 'src/app/services/chat.service';
@Component({
selector: 'app-login',
templateUrl: './login.page.html',
@@ -46,6 +50,10 @@ export class LoginPage implements OnInit {
public ThemeService: ThemeService,
private storageservice: StorageService,
public p: PermissionService,
+ private WsChatService: WsChatService,
+ private storage: Storage,
+ public WsChatMethodsService: WsChatMethodsService,
+ private ChatService: ChatService
) {}
ngOnInit() {
@@ -124,6 +132,7 @@ export class LoginPage implements OnInit {
await this.authService.loginChat(attempt.ChatData.data);
await this.authService.loginToChatWs();
+ this.ChatService.setheader()
}
@@ -134,7 +143,9 @@ export class LoginPage implements OnInit {
} else {
+ this.WsChatService.logout();
this.clearStoreService.clear();
+ this.WsChatMethodsService.clearChat();
SessionStore.delete();
window.localStorage.clear();
await MessageModel.deleteAll()
@@ -148,6 +159,7 @@ export class LoginPage implements OnInit {
if(attempt.ChatData) {
await this.authService.loginChat(attempt.ChatData.data);
await this.authService.loginToChatWs();
+ this.ChatService.setheader()
}
this.getToken();
diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts
index c55f09766..908324f5c 100644
--- a/src/app/services/auth.service.ts
+++ b/src/app/services/auth.service.ts
@@ -20,7 +20,7 @@ import { RoomService } from './chat/room.service';
import { Storage } from '@ionic/storage';
import { InitialsService } from './functions/initials.service';
import { PermissionService } from './permission.service';
-
+import { WsChatMethodsService } from 'src/app/services/chat/ws-chat-methods.service';
@Injectable({
providedIn: 'root'
})
@@ -48,7 +48,8 @@ export class AuthService {
private AttachmentsService: AttachmentsService,
private storage: Storage,
private initialsService: InitialsService,
- public p: PermissionService, ) {
+ public p: PermissionService,
+ public WsChatMethodsService: WsChatMethodsService, ) {
this.headers = new HttpHeaders();
@@ -201,6 +202,11 @@ export class AuthService {
this.WsChatService.setStatus('online')
+
+ setTimeout(() => {
+ this.WsChatMethodsService.getAllRooms();
+ }, 200);
+
// alert('wsLogin')
}).catch((message) => {
diff --git a/src/app/services/chat.service.ts b/src/app/services/chat.service.ts
index e21c11ab5..70978415c 100644
--- a/src/app/services/chat.service.ts
+++ b/src/app/services/chat.service.ts
@@ -1,14 +1,13 @@
import { HttpHeaders, HttpParams } from '@angular/common/http';
import { Injectable } from '@angular/core';
-import { AuthService } from './auth.service';
import { HttpService } from './http.service';
import { StorageService } from './storage.service';
-import { HttpClient, HttpHeaderResponse } from '@angular/common/http';
+import { HttpClient } from '@angular/common/http';
import { environment } from 'src/environments/environment';
import { Storage } from '@ionic/storage';
import { PermissionService } from './permission.service';
import { SessionStore } from '../store/session.service';
-
+import { ChangeProfileService } from 'src/app/services/change-profile.service';
@Injectable({
providedIn: 'root'
})
@@ -24,19 +23,21 @@ export class ChatService {
constructor(
private http: HttpClient,
private httpService: HttpService,
- private authService: AuthService,
private storage: Storage,
private storageService: StorageService,
- public p: PermissionService) {
+ public p: PermissionService,
+ private changeProfileService: ChangeProfileService,) {
- this.setheader()
+ this.changeProfileService.registerCallback(() => {
+ this.setheader();
+ })
}
getDocumentDetails(url: string) {
let headersc = new HttpHeaders();
- headersc = headersc.set('X-User-Id', this.loggedUserChat['data'].userId);
- headersc = headersc.set('X-Auth-Token', this.loggedUserChat['data'].authToken);
+ headersc = headersc.set('X-User-Id', SessionStore.user.ChatData.data.userId);
+ headersc = headersc.set('X-Auth-Token', SessionStore.user.ChatData.data.authToken);
headersc = headersc.set('Sec-Fetch-Dest', 'attachment');
headersc = headersc.set('Sec-Fetch-Mode', 'navigate');
headersc = headersc.set('Cookie', 'rc_uid=fsMwcNdufWvdnChj7');
@@ -342,7 +343,6 @@ export class ChatService {
setheader() {
try {
if (this.p.userPermission(this.p.permissionList.Chat.access)) {
- this.loggedUserChat = this.authService.ValidatedUserChat;
this.headers = new HttpHeaders();
if (this.p.userPermission(this.p.permissionList.Chat.access)) {
@@ -360,24 +360,30 @@ export class ChatService {
}
refreshtoken() {
- this.headers = this.headers.set('Authorization', SessionStore.user.BasicAuthKey);
- let options = {
- headers: this.headers
- };
- return this.http.get(environment.apiURL + 'UserAuthentication/RegenereChatToken', options).subscribe(async res => {
- let data = {
- status: res['status'],
- data: {
- userId: res['data'].userId,
- authToken: res['data'].authToken
+
+ if(this.headers) {
+ this.headers = this.headers.set('Authorization', SessionStore.user.BasicAuthKey);
+ let options = {
+ headers: this.headers
+ };
+ return this.http.get(environment.apiURL + 'UserAuthentication/RegenereChatToken', options).subscribe(async res => {
+ let data = {
+ status: res['status'],
+ data: {
+ userId: res['data'].userId,
+ authToken: res['data'].authToken
+ }
}
- }
- SessionStore.user.ChatData = data
- SessionStore.save()
+ SessionStore.user.ChatData = data
+ SessionStore.save()
+ this.setheader()
+ // console.log(res)
+ // console.log(SessionStore.user.ChatData)
+ });
+ } else {
this.setheader()
- // console.log(res)
- // console.log(SessionStore.user.ChatData)
- });
+ }
+
}
}
diff --git a/src/app/services/chat/message.service.ts b/src/app/services/chat/message.service.ts
index a2603d28c..c0ee74133 100644
--- a/src/app/services/chat/message.service.ts
+++ b/src/app/services/chat/message.service.ts
@@ -77,7 +77,7 @@ export class MessageService {
this.ts = ts
this.u = u || { name: this.usernameToDisplayName(SessionStore.user.UserName), username: SessionStore.user.UserName, _id: ""}
this.t = t
- this._id = _id
+ this._id = _id || ""
this._updatedAt = _updatedAt || new Date().getTime()
this.file = file
this.temporaryData = temporaryData
@@ -310,7 +310,7 @@ export class MessageService {
async addMessageDB() {
if(!this.addToDb) {
- this.addToDb= true
+ this.addToDb = true
const message = this.getChatObj()
delete message.id
diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts
index 314f640d5..1969b7d7f 100644
--- a/src/app/services/chat/room.service.ts
+++ b/src/app/services/chat/room.service.ts
@@ -39,6 +39,7 @@ export class RoomService {
name = ''
_updatedAt = {}
hasLoadHistory = false
+ hasLoadHistoryMessageRF = []
restoreFromOffline = false
duration = ''
isTyping = false
@@ -179,7 +180,7 @@ export class RoomService {
if(difference < 0) {
- this.deleteRoom()
+ this.deleteRoom();
} else {
setTimeout(() => {
@@ -236,18 +237,20 @@ export class RoomService {
let IncomingChatMessageArgs = IncomingChatMessage.fields.args[0]
let ChatMessage : ChatMessageInterface = this.fix_updatedAt(IncomingChatMessageArgs)
- if(!this.messagesLocalReference.includes(ChatMessage.localReference)) {
+ const allMessageIds = this.messages.map((e)=> e._id);
+
+ if(!this.messagesLocalReference.includes(ChatMessage.localReference) && !allMessageIds.includes(ChatMessage?._id)) {
this.messagesLocalReference.push(ChatMessage.localReference);
- const message = await this.prepareCreate({message: ChatMessage, save: true})
+ const message = await this.prepareCreate({message: ChatMessage, save: true});
message.messageSend = true
- this.lastMessage = message
- this.calDateDuration(ChatMessage._updatedAt)
+ this.lastMessage = message;
+ this.calDateDuration(ChatMessage._updatedAt);
if (message.t == 'r') {
- this.name = message.msg
+ this.name = message.msg;
}
if(this.isSenderIsNotMe(ChatMessage)) {
@@ -312,19 +315,17 @@ export class RoomService {
this.otherUserType = args[1]
this.readAllMessage()
- //
- // alert(JSON.stringify(args))
+
} else if(args[0]?.method == 'viewMessage' || args[1]?.method == 'viewMessage') {
this.readAllMessage()
} else if(args[0]?.method == 'deleteMessage' || args[1]?.method == 'deleteMessage') {
- // alert('delete')
- //
+
this.deleteMessage(args[1]?.method?._id)
} else {
- // alert('miss')
+
}
@@ -468,7 +469,7 @@ export class RoomService {
deleteAll() {
- this.messages.forEach((message)=>{
+ this.messages.forEach((message) => {
if(message?._id) {
this.sendDeleteRequest(message._id)
}
@@ -477,7 +478,7 @@ export class RoomService {
async delateMessageToSendToOthers(userId) {
- const deleteMessage = await DeleteMessageModel.all()
+ const deleteMessage = await DeleteMessageModel.all();
const toSend = deleteMessage.filter((DeleteMessage:string[])=> ! DeleteMessage.includes(userId))
@@ -493,8 +494,8 @@ export class RoomService {
this.WsChatService.deleteMessage(msgId).then(async() => {
message.delateRequest = true
- await message.save()
- this.deleteMessage(msgId)
+ await message.save();
+ this.deleteMessage(msgId);
})
} else {
@@ -516,7 +517,7 @@ export class RoomService {
*/
async send({file = null, attachments = null, temporaryData = {}}) {
- const localReference = uuidv4()
+ const localReference = uuidv4();
let offlineChatMessage = {
rid: this.id,
@@ -529,9 +530,9 @@ export class RoomService {
this.message= ''
+ this.messagesLocalReference.push(localReference)
const message: MessageService = await this.prepareCreate({message:offlineChatMessage, save: environment.chatOffline})
- this.messagesLocalReference.push(localReference)
await message.addMessageDB()
message.send()
@@ -547,7 +548,9 @@ export class RoomService {
this.sortRoomList()
}
-
+ if(this.hasLoadHistory == false) {
+ this.hasLoadHistoryMessageRF.push(localReference)
+ }
}
@@ -679,17 +682,17 @@ export class RoomService {
}
await this.WsChatService.loadHistory(this.id, limit).then( async (chatHistory:chatHistory) => {
-
+ // console.log('load history', chatHistory)
//
const messagesId = this.messages.map((message)=> message._id)
- chatHistory.result.messages.reverse().forEach(async(message: any) => {
+ await chatHistory.result.messages.reverse().forEach(async(message: any) => {
if (!messagesId.includes(message._id)) {
const messagesToSave = await this.prepareMessageCreateIfNotExist_iD({message: message});
if(messagesToSave) {
- await messagesToSave.addMessageDB()
+ messagesToSave.addMessageDB()
}
}
@@ -703,6 +706,28 @@ export class RoomService {
}, 50)
this.hasLoadHistory = true
+ this.messageReorder();
+ }
+
+ async messageReorder() {
+ const reorderMessage: MessageService[] = this.messages.filter((message) =>
+ this.hasLoadHistoryMessageRF.includes(message?.localReference)
+ );
+
+ await this.messages.forEach( async (message, i) => {
+
+ if(this.hasLoadHistoryMessageRF.includes(message?.localReference)) {
+ this.messages.splice(i, 1)
+ }
+
+ })
+
+ this.hasLoadHistoryMessageRF = [];
+
+ reorderMessage.forEach((message) => {
+ this.messages.push(message)
+ });
+
}
@@ -714,10 +739,10 @@ export class RoomService {
await this.messages.forEach( async (message, index) => {
- if(message._id) {
+ if(message._id) {
if(message.viewed.length == 0) {
- this.messages[index].viewed = membersIds
- this.messages[index].received = membersIds
+ this.messages[index].viewed = membersIds;
+ this.messages[index].received = membersIds;
await this.messages[index].save()
}
@@ -797,7 +822,33 @@ export class RoomService {
wewMessage.setData(message)
wewMessage.loadHistory = this.hasLoadHistory
- this.messages.push(wewMessage)
+
+ let found;
+
+ if(wewMessage.localReference != null) {
+ found = this.messages.find((MessageService, index) => {
+ if ( MessageService.localReference == wewMessage.localReference ) {
+ return true
+ } else {
+ return false
+ }
+ })
+ } else {
+ found = this.messages.find((MessageService, index) => {
+ if ( MessageService._id == wewMessage._id) {
+ return true
+ } else {
+ return false
+ }
+ })
+ }
+
+
+ if (!found) {
+ this.messages.push(wewMessage)
+ return wewMessage
+ }
+
return wewMessage
}
@@ -840,7 +891,7 @@ export class RoomService {
message = this.fix_updatedAt(message)
const found = this.messages.find((MessageService, index) => {
- if (MessageService._id == message._id ) {
+ if (MessageService._id == message._id) {
return true
} else {
return false
diff --git a/src/app/services/chat/ws-chat-methods.service.ts b/src/app/services/chat/ws-chat-methods.service.ts
index 87976f395..d12c22731 100644
--- a/src/app/services/chat/ws-chat-methods.service.ts
+++ b/src/app/services/chat/ws-chat-methods.service.ts
@@ -14,7 +14,6 @@ import { SortService } from '../functions/sort.service';
import { chatUser } from 'src/app/models/chatMethod';
import { NfService } from 'src/app/services/chat/nf.service'
import { ChangeProfileService } from '../change-profile.service';
-import { AuthService } from '../auth.service';
import { ChatStorageService } from './chat-storage.service';
import { ChatMethodsService } from './chat-methods.service';
import { AESEncrypt } from '../aesencrypt.service'
@@ -41,7 +40,7 @@ export class WsChatMethodsService {
users: chatUser[] = []
sessionStore = SessionStore
- loggedUser: any;
+
delete = []
@@ -56,7 +55,6 @@ export class WsChatMethodsService {
private NfService: NfService,
private changeProfileService: ChangeProfileService,
private chatService: ChatService,
- private authService: AuthService,
private ChatStorageService: ChatStorageService,
private ChatMethodsService:ChatMethodsService,
private AESEncrypt: AESEncrypt,
@@ -64,7 +62,7 @@ export class WsChatMethodsService {
private NetworkServiceService: NetworkServiceService,
) {
- this.loggedUser = authService.ValidatedUserChat['data'];
+
this.loadChat()
@@ -93,13 +91,6 @@ export class WsChatMethodsService {
})
- // on change profile remove a rooms
- this.changeProfileService.registerCallback(() => {
- this.clearChat()
- this.ReLoadChat()
- this.storage.remove('Rooms');
- })
-
}
private loadChat() {
@@ -173,8 +164,10 @@ export class WsChatMethodsService {
async getAllRooms () {
this.loadingWholeList = true
const rooms = await this.WsChatService.getRooms();
+ try {
+ await this.storage.remove('Rooms');
+ } catch(e) {}
- await this.storage.remove('Rooms');
await rooms.result.update.forEach( async (roomData: room, index) => {
const roomId = this.getRoomId(roomData);
diff --git a/src/app/services/chat/ws-chat.service.ts b/src/app/services/chat/ws-chat.service.ts
index 173a9f167..2bc758e80 100644
--- a/src/app/services/chat/ws-chat.service.ts
+++ b/src/app/services/chat/ws-chat.service.ts
@@ -78,7 +78,6 @@ export class WsChatService {
//
if(message.result) {
if(message.result.token) {
-
this.isLogin = true
this.loginResponse = message
@@ -106,6 +105,7 @@ export class WsChatService {
getRooms(roomOlder = 1480377601) {
+
//const requestId = uuidv4()
const requestId = uuidv4()
const message = {
@@ -121,7 +121,6 @@ export class WsChatService {
this.ws.registerCallback({type:'Onmessage', funx:(message)=>{
if(message.id == requestId) { // same request send
resolve(message)
- //
return true
}
}})
@@ -186,6 +185,7 @@ export class WsChatService {
logout() {
this.isLogin = false
this.ws.connected = false
+ this.ws.disconnect()
}
// send message to room
@@ -749,6 +749,7 @@ export class WsChatService {
const data = JSON.parse(event.data)
//
+ // console.log(data)
for (const [key, value] of Object.entries(this.wsCallbacks)) {
if(value.type== 'Onmessage') {
@@ -777,6 +778,15 @@ export class WsChatService {
onerror: (event: any) => {
+ },
+ disconnect:() => {
+ if(this.socket) {
+ this.socket.onopen = (event: any) => {}
+ this.socket.onmessage = (event: any) => {}
+ this.socket.onclose = (event: any) => {}
+ this.socket.onerror = (event: any) => {}
+ this.socket.close()
+ }
}
}}
diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts
index 2a91751fb..705e3445f 100644
--- a/src/app/shared/chat/messages/messages.page.ts
+++ b/src/app/shared/chat/messages/messages.page.ts
@@ -49,8 +49,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
@ViewChild('scrollMe') private myScrollContainer: ElementRef;
@ViewChild('message-item') messageContainer: ElementRef;
- loggedUser: any;
-
messages: any;
dm: any;
userPresence = '';
@@ -126,7 +124,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
private platform: Platform,
private fileOpener: FileOpener,
) {
- this.loggedUser = authService.ValidatedUserChat['data'];
this.checkAudioPermission()
}
@@ -448,15 +445,15 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}
else {
- var str = msg.attachments[0].image_url;
- str = str.substring(1, ((str.length) - 1));
+ // var str = msg.attachments[0].image_url;
+ // str = str.substring(1, ((str.length) - 1));
- const encodedData = btoa(str);
+ // const encodedData = btoa(str);
- let file = this.base64toBlob(encodedData, 'application/pdf')
- let fileURL = URL.createObjectURL(file)
+ // let file = this.base64toBlob(encodedData, 'application/pdf')
+ // let fileURL = URL.createObjectURL(file)
- window.open(fileURL);
+ // window.open(fileURL);
}
}