This commit is contained in:
Peter Maquiran
2022-03-18 12:32:21 +01:00
parent 2302a32df6
commit f31dd55811
6 changed files with 790 additions and 32307 deletions
+96 -51
View File
@@ -84,13 +84,18 @@ export class RoomService {
this.WsChatService.getUserStatus((d) => {
const userId = d.fields.args[0][0]
const statusNum = d.fields.args[0][2]
const statusText = this.statusNumberToText(statusNum)
//
if(this.members?.map) {
const membersIds = this.members.map((user)=> user._id)
if(membersIds.includes(userId)) {
this.deleteMessageToReceive(userId)
if(statusText != 'offline') {
this.deleteMessageToReceive(userId)
}
this.messages.forEach((message, index) => {
if(!message.messageOwnerById(userId)) {
@@ -118,6 +123,26 @@ export class RoomService {
}
/**
* @description convert rocketchat statues num to readable string
* @param text
* @returns
*/
statusNumberToText(text) {
if(text == '0') {
return "offline"
}
else if(text == '1') {
return "online"
}
else if(text == '2') {
return "away"
}
else if(text == '3') {
return "busy"
}
}
setData({members, u, customFields = {}, id, name, t, lastMessage = new MessageService(this.storage, this.NfService, this.WsChatService, this.ChatStorageService, this.ChatMethodsService, this.AESEncrypt), _updatedAt }) {
this.customFields = customFields
this.id = id
@@ -190,6 +215,7 @@ export class RoomService {
if(users.status != 'offline') {
this.messages[index].received.push(users._id)
setTimeout(() => {
message.save()
}, 150)
@@ -211,19 +237,29 @@ export class RoomService {
const args = message.fields.args
console.log(args)
if (typeof args[0] != 'object') {
// alert(JSON.stringify(args))
if (typeof args[1] != 'object') {
this.userThatIsTyping = this.usernameToDisplayName(args[0])
console.log(this.userThatIsTyping, 'this.userThatIsTyping')
this.isTyping = args[1]
this.otherUserType = args[1]
this.readAllMessage()
} else if(args[0]?.method == 'viewMessage') {
// console.log(JSON.stringify(args))
// alert(JSON.stringify(args))
} else if(args[0]?.method == 'viewMessage' || args[1]?.method == 'viewMessage') {
this.readAllMessage()
} else if(args[0]?.method == 'deleteMessage') {
//
} else if(args[0]?.method == 'deleteMessage' || args[1]?.method == 'deleteMessage') {
// alert('delete')
// console.log(args[0], 'receive delete message::()')
this.deleteMessage(args[1]?.method?._id)
} else {
// alert('miss')
}
@@ -278,22 +314,28 @@ export class RoomService {
async deleteMessageToReceive(userId) {
const allDeleteMessages = await DeleteMessageModel.all()
for(let message of allDeleteMessages) {
const allDeleteMessages = await DeleteMessageModel.filter({rid: this.id}).execute()
for(let message_ of allDeleteMessages) {
console.log('delete messages',message)
if(message.needToReceiveBy.includes(userId)) {
if(message_.needToReceiveBy.includes(userId)) {
message.needToReceiveBy = message.needToReceiveBy.filter((e)=> e != userId)
this.sendFalseTypingReadMessage('deleteMessage',{_id:message.messageId})
message_.needToReceiveBy = message_.needToReceiveBy.filter((e)=> e != userId)
this.sendFalseTypingReadMessage('deleteMessage',{_id:message_.messageId})
console.log(message,'update::')
DeleteMessageModel.update(message)
if(message_.needToReceiveBy.length == 0) {
const deleteMessage = await DeleteMessageModel.get({messageId: message_.messageId})
await deleteMessage.delete()
} else {
await DeleteMessageModel.update(message_)
}
}
}
}
@@ -307,7 +349,6 @@ export class RoomService {
async (ChatMessage) => {
const DeletedMessageId = ChatMessage.fields.args[0]._id;
console.log(DeletedMessageId);
this.deleteMessage(DeletedMessageId)
}
@@ -324,19 +365,21 @@ export class RoomService {
if(message._id == id) {
this.messages.splice(index, 1)
const allMemberThatIsOffline = this.getAllMemberThatIsOffline()
message.deleteFromDB()
await DeleteMessageModel.create({
messageId: message._id,
rid: message.rid,
ts: message.ts,
u: message.u,
needToReceiveBy: allMemberThatIsOffline
})
const DBmessage = await MessageModel.get({_id: message._id})
DBmessage.delete()
if (SessionStore.user.RochetChatUser == message.u.username) {
const allMemberThatIsOffline = this.getAllMemberThatIsOffline()
await DeleteMessageModel.create({
messageId: message._id,
rid: message.rid,
ts: message.ts,
u: message.u,
needToReceiveBy: allMemberThatIsOffline
})
}
message.delateStatusFalse()
message.delateDB()
//Get previous last message from room
const previousLastMessage = this.messages.slice(-1)[0];
@@ -356,30 +399,35 @@ export class RoomService {
const toSend = deleteMessage.filter((DeleteMessage:string[])=> ! DeleteMessage.includes(userId))
}
async sendDeleteRequest(msgId) {
const message = this.messages.find((e)=>e._id = msgId)
message.deleteFromDB()
message.delateStatusFalse()
this.ChatMethodsService.deleteMessage({_id:msgId, msgId:msgId, roomId:message.rid}).subscribe(
(response: any) => {
console.log(response)
message.delateRequest = true
message.save()
},
(error) => {
this.WsChatService.registerCallback({
type: 'reConnect',
funx: async ()=> {
this.sendDeleteRequest(msgId)
return true
}
})
(response) => {
if (response.error.error.startsWith('No message found with the id of')) {
this.deleteMessage(msgId)
} else {
// this.deleteMessage(DeletedMessageId)
this.WsChatService.registerCallback({
type: 'reConnect',
funx: async ()=> {
this.sendDeleteRequest(msgId)
return true
}
})
}
}
)
}
@@ -464,7 +512,7 @@ export class RoomService {
this.WsChatService.sendStreamNotifyRoom(this.id, SessionStore.user.RochetChatUser, 'typing', this.isTyping)
}
} else {
//console.log(now - this.lastTimeType)
}
}, 3000)
@@ -509,12 +557,6 @@ export class RoomService {
const message = await this.prepareMessageCreateIfNotExist({message:ChatMessage})
message?.decryptMessage()
} else if(wewMessage.delate && wewMessage.offline && !wewMessage.delateRequest) {
console.log('offline delete message')
wewMessage.deleteFromDB()
this.sendDeleteRequest(wewMessage._id)
} else {
const offlineMessage = await this.prepareMessageCreateIfNotExist({message:ChatMessage})
@@ -529,6 +571,10 @@ export class RoomService {
}
if(wewMessage.delate && !wewMessage.offline && !wewMessage.delateRequest) {
this.sendDeleteRequest(wewMessage._id)
}
});
setTimeout(()=> {
@@ -567,8 +613,7 @@ export class RoomService {
})
console.log('load chatHistory', chatHistory)
// console.log('load chatHistory', chatHistory)
})
@@ -683,7 +728,7 @@ export class RoomService {
if(!message?._id && environment.chatOffline && save) {
this.messages.push(wewMessage)
console.log('add to view')
// console.log('add to view')
return wewMessage
}