mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
save
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user