From 616566bf77deb8eddd992c40c50c2f201e1d1ed0 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Mon, 14 Mar 2022 14:16:23 +0100 Subject: [PATCH] fix chat message not showing --- src/app/models/beast-orm.ts | 2 +- src/app/models/message.model.ts | 9 ++- src/app/services/chat/message.service.ts | 93 ++++++++---------------- src/app/services/chat/room.service.ts | 44 +++++++++-- src/environments/environment.ts | 2 +- 5 files changed, 76 insertions(+), 74 deletions(-) diff --git a/src/app/models/beast-orm.ts b/src/app/models/beast-orm.ts index d7829877d..be871b1bd 100644 --- a/src/app/models/beast-orm.ts +++ b/src/app/models/beast-orm.ts @@ -39,7 +39,7 @@ export class DeleteMessageModel extends models.Model { models.register({ databaseName: 'chat-storage', - type: 'indexeddb', + type: 'indexeddb', version: 1, models: [MessageModel, DeleteMessageModel] }) \ No newline at end of file diff --git a/src/app/models/message.model.ts b/src/app/models/message.model.ts index a9e6d2b43..6ab5931c8 100644 --- a/src/app/models/message.model.ts +++ b/src/app/models/message.model.ts @@ -43,4 +43,11 @@ export interface ChatMessageInterface { _updatedAt: number; mentions: any[]; channels: any[]; -}; \ No newline at end of file +}; + + + + +export interface falseTypingMethod{ + method: 'viewMessage' | 'deleteMessage' +} \ No newline at end of file diff --git a/src/app/services/chat/message.service.ts b/src/app/services/chat/message.service.ts index 5abe8d015..c2f5a6da6 100644 --- a/src/app/services/chat/message.service.ts +++ b/src/app/services/chat/message.service.ts @@ -136,33 +136,7 @@ export class MessageService { const params = {roomId:this.rid, msg:this.msg, localReference: this.localReference} - this.ChatMethodsService.send(params).subscribe( - (response: any) => { - const ChatMessage = response.message - this.messageSend = true - this.redefinedMessage(ChatMessage) - - }, - (error) => { - this.WsChatService.registerCallback({ - type: 'reConnect', - funx: async ()=> { - - this.WsChatService.send(params).then(({message, requestId}) => { - let ChatMessage = message.result - this.messageSend = true - this.redefinedMessage(ChatMessage) - - }) - - return true - } - }) - - - } - ) - + await this.sendRequest(params) } else { @@ -182,31 +156,7 @@ export class MessageService { const params = {roomId:this.rid, msg: this.msg, attachments: this.attachments, file: this.file, localReference: this.localReference} - this.ChatMethodsService.send(params).subscribe( - (response: any) => { - const ChatMessage = response.message - this.messageSend = true - this.redefinedMessage(ChatMessage) - - }, - (error) => { - - this.WsChatService.registerCallback({ - type: 'reConnect', - funx: async ()=> { - this.WsChatService.send(params).then(({message, requestId}) => { - let ChatMessage = message.result - this.messageSend = true - this.redefinedMessage(ChatMessage) - - }) - - return true - } - }) - - } - ) + await this.sendRequest(params) } else if(this.WsChatService.isLogin == false) { @@ -232,6 +182,32 @@ export class MessageService { } + async sendRequest(params) { + this.ChatMethodsService.send(params).subscribe( + (response: any) => { + const ChatMessage = response.message + this.messageSend = true + this.redefinedMessage(ChatMessage) + + }, + (error) => { + this.WsChatService.registerCallback({ + type: 'reConnect', + funx: async ()=> { + + this.WsChatService.send(params).then(({message, requestId}) => { + let ChatMessage = message.result + this.messageSend = true + this.redefinedMessage(ChatMessage) + + }) + return true + } + }) + } + ) + } + async redefinedMessage(ChatMessage , update = true) { ChatMessage = this.NfService.fix_updatedAt(ChatMessage) @@ -259,17 +235,7 @@ export class MessageService { return this.u.username != SessionStore.user.RochetChatUser } - async delete(allMemberThatIsNotOffline) { - - - - DeleteMessageModel.create({ - messageId: this._id, - rid: this.rid, - ts: this.ts, - u: this.u, - receivedBy: allMemberThatIsNotOffline - }) + async delete() { const message = await MessageModel.get({_id: this._id}) await message.delete() @@ -312,6 +278,7 @@ export class MessageService { delete message.id const createdMessage = await MessageModel.create(message) + console.log('done add to db') this.id = createdMessage.id } diff --git a/src/app/services/chat/room.service.ts b/src/app/services/chat/room.service.ts index 2bec2a6dd..9a0aac448 100644 --- a/src/app/services/chat/room.service.ts +++ b/src/app/services/chat/room.service.ts @@ -18,9 +18,9 @@ import { NfService } from 'src/app/services/chat/nf.service'; import { v4 as uuidv4 } from 'uuid' import { ChatStorageService } from './chat-storage.service' import { ChatMethodsService } from './chat-methods.service' -import { MessageModel } from '../../models/beast-orm' +import { DeleteMessageModel, MessageModel } from '../../models/beast-orm' import { AESEncrypt } from '../aesencrypt.service' -import { IncomingChatMessage, ChatMessageInterface } from 'src/app/models/message.model'; +import { IncomingChatMessage, ChatMessageInterface, falseTypingMethod } from 'src/app/models/message.model'; @Injectable({ providedIn: 'root' @@ -213,9 +213,11 @@ export class RoomService { this.isTyping = args[1] this.otherUserType = args[1] this.readAllMessage() - } else { + } else if(args[0]?.method == 'viewMessage') { this.readAllMessage() + } else if(args[0]?.method == 'deleteMessage') { + // } @@ -275,7 +277,15 @@ export class RoomService { this.messages.splice(index, 1) const allMemberThatIsNotOffline = this.getAllMemberThatIsNotOffline() - message.delete(allMemberThatIsNotOffline) + message.delete() + + DeleteMessageModel.create({ + messageId: message._id, + rid: message.rid, + ts: message.ts, + u: message.u, + receivedBy: allMemberThatIsNotOffline + }) //Get previous last message from room const previousLastMessage = this.messages.slice(-1)[0]; @@ -289,6 +299,16 @@ export class RoomService { } + async delateMessageToSend(userId) { + + const deleteMessage = await DeleteMessageModel.all() + + const toSend = deleteMessage.filter((DeleteMessage:string[])=> ! DeleteMessage.includes(userId)) + + + } + + /** * @description sen text message @@ -308,7 +328,9 @@ export class RoomService { this.message= '' - const message: MessageService = await this.prepareMessage({message:offlineChatMessage, save: environment.chatOffline}) + const message: MessageService = await this.prepareCreate({message:offlineChatMessage, save: environment.chatOffline}) + + console.log(message, 'message') this.messagesLocalReference.push(localReference) await message.addMessageDB() @@ -353,7 +375,7 @@ export class RoomService { } sendFalseTypingReadMessage() { - this.WsChatService.sendStreamNotifyRoom(this.id, SessionStore.user.RochetChatUser, 'typing', {}) + this.WsChatService.sendStreamNotifyRoom(this.id, SessionStore.user.RochetChatUser, 'typing', {method:'viewMessage'} as falseTypingMethod) this.setTypingOff() } @@ -569,19 +591,25 @@ export class RoomService { * @param save * @returns */ - async prepareCreate({message}): Promise { + async prepareCreate({message, save = true}): Promise { message = this.fix_updatedAt(message) const wewMessage = new MessageService(this.storage, this.NfService, this.WsChatService, this.ChatStorageService, this.ChatMethodsService, this.AESEncrypt) wewMessage.setData(message) wewMessage.loadHistory = this.hasLoadHistory - if(!message?._id && environment.chatOffline) { + console.log(message?._id, environment.chatOffline, save) + + if(!message?._id && environment.chatOffline && save) { this.messages.push(wewMessage) + console.log('add to view') return wewMessage } + + + } diff --git a/src/environments/environment.ts b/src/environments/environment.ts index d333a7fd8..2c9100ef6 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -13,7 +13,7 @@ export const environment = { domain: 'gabinetedigital.local', //gabinetedigital.local defaultuser: 'paulo.pinto@gabinetedigital.local',//paulo.pinto paulo.pinto@gabinetedigital.local defaultuserpwd: 'tabteste@006', //tabteste@006, - chatOffline: false + chatOffline: true }; /*