diff --git a/src/app/pages/chat/chat.page.html b/src/app/pages/chat/chat.page.html index aae5650aa..288f94d9c 100644 --- a/src/app/pages/chat/chat.page.html +++ b/src/app/pages/chat/chat.page.html @@ -68,17 +68,20 @@
{{room.value.lastMessage.msg}} - - + +
+ {{room.value.lastMessage.file.name || room.value.lastMessage.file.subject }} - +
+
Fotografia
+
diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index 870541ab5..b5963e605 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -143,6 +143,7 @@ export class ChatPage implements OnInit { ngOnInit() { + console.log(this.wsChatMethodsService.dm); console.log(this.wsChatMethodsService.group); 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 c927ed141..b0c78926d 100644 --- a/src/app/pages/chat/group-messages/group-messages.page.ts +++ b/src/app/pages/chat/group-messages/group-messages.page.ts @@ -138,7 +138,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy { "asUser": false, } if(msgId){ - this.alertService.confirmDeleteMessage(body); + //this.alertService.confirmDeleteMessage(body); } else{ this.toastService.badRequest('Não foi possível apagar'); diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts index b5742811f..a00497bac 100644 --- a/src/app/pages/chat/messages/messages.page.ts +++ b/src/app/pages/chat/messages/messages.page.ts @@ -114,7 +114,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { this.wsChatMethodsService.getDmRoom(this.roomId).loadHistory() this.wsChatMethodsService.getDmRoom(this.roomId).scrollDown = this.scrollToBottomClicked - + setTimeout(()=>{ this.scrollToBottomClicked() }, 50) @@ -245,7 +245,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { "asUser": false, } if (msgId) { - this.alertService.confirmDeleteMessage(body); + //this.alertService.confirmDeleteMessage(body); } else { this.toastService.badRequest('Não foi possível apagar'); @@ -576,11 +576,11 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }); } - /* + /* this.fileService.downloadFile(element.file.guid).subscribe(async (event) => { var name = element.file.guid; if (event.type === HttpEventType.DownloadProgress) { - + } else if (event.type === HttpEventType.Response) { var base64 = btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '') ); @@ -600,14 +600,14 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { console.log('error LAKE FS FILE', error) }); - + const readFile = await Filesystem.readFile({ path: `${IMAGE_DIR}/${name}`, directory: Directory.Data, - }); - - + }); + + });*/ getRoomMessageDB(roomId) { diff --git a/src/app/services/alert.service.ts b/src/app/services/alert.service.ts index 239c5d89c..447b18fe4 100644 --- a/src/app/services/alert.service.ts +++ b/src/app/services/alert.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { AlertController, AnimationController } from '@ionic/angular'; import { ChatService } from './chat.service'; +import { WsChatMethodsService } from './chat/ws-chat-methods.service'; import { ToastService } from './toast.service'; @Injectable({ @@ -13,6 +14,7 @@ export class AlertService { private animationController: AnimationController, private chatService: ChatService, private toastService: ToastService, + public wsChatMethodsService: WsChatMethodsService, ) { } async presentAlert(message:string) { @@ -40,7 +42,9 @@ export class AlertService { }, 2500); } - async confirmDeleteMessage(body:any) { + async confirmDeleteMessage(msgId:any, room:any) { + console.log(room); + const alert = await this.alertController.create({ cssClass: 'my-custom-class', header: 'Apagar a mensagem?', @@ -55,10 +59,10 @@ export class AlertService { }, { text: 'Apagar', handler: () => { - const loader = this.toastService.loading(); - this.chatService.deleteMessage(body).subscribe(res=>{ - loader.remove(); - }); + //const loader = this.toastService.loading(); + this.wsChatMethodsService.deleteMessage(msgId); + //this.wsChatMethodsService.subscribeToRoomUpdate(room._id, room); + //loader.remove(); } } ] diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts index 8d9c3a482..3e8e940d4 100644 --- a/src/app/services/chat/room.service.ts +++ b/src/app/services/chat/room.service.ts @@ -52,8 +52,9 @@ export class RoomService { receiveMessage() { - this.WsChatService.receiveLiveMessageFromRoom( + this.WsChatService.upateRoomEvents( this.id, + "stream-room-messages", (ChatMessage) => { ChatMessage = ChatMessage.fields.args[0] ChatMessage = this.fix_updatedAt(ChatMessage) @@ -63,7 +64,7 @@ export class RoomService { const message = new MessageService() message.setData(ChatMessage) - this.lastMessage.msg = message.msg + this.lastMessage = message if (message.t == 'r') { this.name = message.msg } this.calDateDuration(ChatMessage._updatedAt) this.massages.push(message) @@ -84,6 +85,37 @@ export class RoomService { } ) + + this.WsChatService.registerCallback + } + + async receiveMessageDelete() { + + this.WsChatService.upateRoomEvents( + this.id, + "stream-notify-room", + async (ChatMessage) => { + console.log(ChatMessage.fields.args[0]._id); + const messageId = ChatMessage.fields.args[0]._id; + this.massages.forEach((message, index)=>{ + if(message._id == messageId){ + this.massages.splice(index, 1) + this.storage.set('chatmsg' + this.id, this.massages).then((value) => { + //console.log('MSG DELETE ON STORAGE', value) + }); + + //Get previous last message from room + const previousLastMessage = this.massages.slice(-1)[0]; + + this.lastMessage = previousLastMessage; + this.calDateDuration(previousLastMessage._updatedAt) + + } + }) + + } + ) + this.WsChatService.registerCallback } send(msg) { @@ -148,7 +180,7 @@ export class RoomService { if (message.file) { if (message.file.guid) { this.storage.get(message.file.guid).then((image) => { - console.log('IMAGE FROM STORAGE', image) + //console.log('IMAGE FROM STORAGE', image) message.file.image_url = image }); } @@ -188,6 +220,8 @@ export class RoomService { this.WsChatService.loadHistory(this.id, limit).then(async (chatHistory: chatHistory) => { const mgsArray = chatHistory.result.messages.reverse(); + console.log(mgsArray); + if (this.platform.is('desktop') || this.platform.is('mobileweb')) { await this.storage.remove('chatmsg' + this.id).then(() => { console.log('MSG REMOVE ON STORAGE') diff --git a/src/app/services/chat/ws-chat-methods.service.ts b/src/app/services/chat/ws-chat-methods.service.ts index 1db0198c6..d760efe42 100644 --- a/src/app/services/chat/ws-chat-methods.service.ts +++ b/src/app/services/chat/ws-chat-methods.service.ts @@ -58,14 +58,19 @@ export class WsChatMethodsService { this.WsChatService.streamRoomMessages(id).then((subscription)=>{ console.log('streamRoomMessages', subscription) }) + this.WsChatService.streamNotifyRoomDeleteMessage(id).then((subscription)=>{ + console.log('streamNotifyRoomDeleteMessage', subscription); + }) } for (const id in this.group) { this.WsChatService.streamRoomMessages(id).then((subscription)=>{ console.log('streamRoomMessages', subscription) }) + this.WsChatService.streamNotifyRoomDeleteMessage(id).then((subscription)=>{ + console.log('streamNotifyRoomDeleteMessage', subscription); + }) } - this.WsChatService.streamNotifyLogged().then((subscription=>{ console.log('streamRoomMessages', subscription) })) @@ -82,6 +87,9 @@ export class WsChatMethodsService { this.WsChatService.streamNotifyLogged().then((subscription=>{ console.log('streamRoomMessages', subscription) })) + this.WsChatService.streamNotifyRoomDeleteMessage(id).then((subscription)=>{ + console.log('streamNotifyRoomDeleteMessage', subscription); + }) this.prepareRoom(roomData); @@ -103,10 +111,13 @@ export class WsChatMethodsService { }) room.receiveMessage() + room.receiveMessageDelete(); let roomId = this.getRoomId(roomData) if(this.isIndividual(roomData)) { + console.log(room); + this.dm[roomId] = room this.dmCount++ } else { @@ -115,7 +126,9 @@ export class WsChatMethodsService { } } - + deleteMessage(id?) { + return this.WsChatService.deleteMessage(id); + } leaveRoom(id?) { return this.WsChatService.leaveRoom(id); diff --git a/src/app/services/chat/ws-chat.service.ts b/src/app/services/chat/ws-chat.service.ts index e4415d5fc..d0b29a972 100644 --- a/src/app/services/chat/ws-chat.service.ts +++ b/src/app/services/chat/ws-chat.service.ts @@ -228,7 +228,29 @@ export class WsChatService { } joinRoom(){} - deleteMessage() {} + + deleteMessage(msgId) { + const requestId = uuidv4(); + + var message = { + msg: "method", + method: "deleteMessage", + id: requestId, + params:[{"_id":msgId}] + } + + this.ws.send({message, requestId}); + + return new Promise ((resolve, reject) => { + this.ws.registerCallback({type:'Onmessage', funx:(message) =>{ + if(message.id == requestId || deepFind(message, 'result') == requestId){ + resolve(message) + return true + } + }}) + }); + } + createPrivateRoom(groupName, username, customFields) { const requestId = uuidv4() @@ -337,15 +359,20 @@ export class WsChatService { } - receiveLiveMessageFromRoom(roomId, funx: Function) { +upateRoomEvents(roomId, collection:string, funx: Function, ) { this.ws.registerCallback({ type:'Onmessage', funx:(message)=>{ - if(message.msg =='changed' && message.collection == 'stream-room-messages') { + //console.log(message); + + if(message.msg =='changed' && message.collection == collection) { if(message.fields.args[0].rid == roomId) { funx(message) } + else if(message.fields.eventName ==`${roomId}/deleteMessage`){ + funx(message) + } } } }) @@ -432,6 +459,33 @@ export class WsChatService { } + streamNotifyRoomDeleteMessage(roomId:string) { + + const requestId = uuidv4() + + let message = { + "msg": "sub", + "id": requestId, + "name": "stream-notify-room", + "params": [ + `${roomId}/deleteMessage`, + true + ] + }; + + this.ws.send({message, requestId}) + + return new Promise((resolve, reject) => { + this.ws.registerCallback({type:'Onmessage', funx:(message)=>{ + if(message.id == requestId || deepFind(message,'result.id') == requestId) { // same request send + resolve(message) + return true + } + }}) + }); + + } + registerCallback(data:wsCallbacksParams) { return this.ws.registerCallback(data) } diff --git a/src/app/shared/chat/group-messages/group-messages.page.html b/src/app/shared/chat/group-messages/group-messages.page.html index 1cde6d2f8..1f04ea84d 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.html +++ b/src/app/shared/chat/group-messages/group-messages.page.html @@ -49,7 +49,7 @@
- +
@@ -68,7 +68,7 @@
- +
diff --git a/src/app/shared/chat/group-messages/group-messages.page.ts b/src/app/shared/chat/group-messages/group-messages.page.ts index df6e4fc46..b64694d09 100644 --- a/src/app/shared/chat/group-messages/group-messages.page.ts +++ b/src/app/shared/chat/group-messages/group-messages.page.ts @@ -306,13 +306,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe this.message = ""; } - deleteMessage(msgId: string) { - let body = { - "roomId": this.roomId, - "msgId": msgId, - "asUser": false, - } - this.alertService.confirmDeleteMessage(body); + deleteMessage(msgId: string, room:any) { + this.alertService.confirmDeleteMessage(msgId, room); } async openGroupMessagesOptions() { diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html index 81790e731..b72777b27 100644 --- a/src/app/shared/chat/messages/messages.page.html +++ b/src/app/shared/chat/messages/messages.page.html @@ -44,7 +44,7 @@ - +
@@ -63,7 +63,7 @@ - +
diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 8759a86ac..b6e737c76 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -107,8 +107,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy this.wsChatMethodsService.getDmRoom(this.roomId).massages.forEach((element) => { console.log('DATATATA 11', element) }) */ - - + + //this.transformData(this.wsChatMethodsService.getDmRoom(this.roomId).massages) //this.getMessageDB() @@ -254,16 +254,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy this.message = ""; } - deleteMessage(msgId: string) { - let body = { - "roomId": this.roomId, - "msgId": msgId, - "asUser": false, - } - this.alertService.confirmDeleteMessage(body); - /* this.chatService.deleteMessage(body).subscribe(res=>{ - console.log(res); - }); */ + deleteMessage(msgId: string, room:any) { + this.alertService.confirmDeleteMessage(msgId, room); } async viewDocument(msg: any, url?: string) { @@ -637,7 +629,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy console.log('FILE TYPE 33', msg.file.type) } else if (event.type === HttpEventType.Response) { this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '')); - + msg.file = { guid: msg.file.guid, image_url: this.downloadFile,