mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
need to change branch
This commit is contained in:
@@ -89,6 +89,9 @@ export class RoomService {
|
||||
const membersIds = this.members.map((user)=> user._id)
|
||||
|
||||
if(membersIds.includes(userId)) {
|
||||
|
||||
this.deleteMessageToReceive(userId)
|
||||
|
||||
this.messages.forEach((message, index) => {
|
||||
if(!message.messageOwnerById(userId)) {
|
||||
|
||||
@@ -207,6 +210,9 @@ export class RoomService {
|
||||
if(message.fields.eventName == this.id+'/'+'typing') {
|
||||
|
||||
const args = message.fields.args
|
||||
|
||||
console.log(args)
|
||||
|
||||
if (typeof args[0] != 'object') {
|
||||
this.userThatIsTyping = this.usernameToDisplayName(args[0])
|
||||
console.log(this.userThatIsTyping, 'this.userThatIsTyping')
|
||||
@@ -250,6 +256,48 @@ export class RoomService {
|
||||
return AllMemberThatIsNotOffline
|
||||
}
|
||||
|
||||
getAllMemberThatIsOffline(): string[] {
|
||||
|
||||
const membersIds = this.getRoomMembersIds()
|
||||
const allChatUsers = this.getAllUsers()
|
||||
|
||||
const AllMemberThatIsNotOffline = []
|
||||
|
||||
for(let user of allChatUsers) {
|
||||
if(membersIds.includes(user._id)) {
|
||||
|
||||
if(user.status == 'offline') {
|
||||
AllMemberThatIsNotOffline.push(user._id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return AllMemberThatIsNotOffline
|
||||
}
|
||||
|
||||
|
||||
async deleteMessageToReceive(userId) {
|
||||
|
||||
const allDeleteMessages = await DeleteMessageModel.all()
|
||||
|
||||
for(let message of allDeleteMessages) {
|
||||
|
||||
console.log('delete messages',message)
|
||||
|
||||
if(message.needToReceiveBy.includes(userId)) {
|
||||
|
||||
message.needToReceiveBy = message.needToReceiveBy.filter((e)=> e != userId)
|
||||
this.sendFalseTypingReadMessage('deleteMessage',{_id:message.messageId})
|
||||
|
||||
console.log(message,'update::')
|
||||
DeleteMessageModel.update(message)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
async receiveMessageDelete() {
|
||||
|
||||
@@ -271,22 +319,25 @@ export class RoomService {
|
||||
* @description delete message in the view
|
||||
* @param id message ID
|
||||
*/
|
||||
deleteMessage(id) {
|
||||
this.messages.forEach((message, index) => {
|
||||
async deleteMessage(id) {
|
||||
await this.messages.forEach(async(message, index) => {
|
||||
if(message._id == id) {
|
||||
|
||||
this.messages.splice(index, 1)
|
||||
const allMemberThatIsNotOffline = this.getAllMemberThatIsNotOffline()
|
||||
message.delete()
|
||||
const allMemberThatIsOffline = this.getAllMemberThatIsOffline()
|
||||
message.deleteFromDB()
|
||||
|
||||
DeleteMessageModel.create({
|
||||
await DeleteMessageModel.create({
|
||||
messageId: message._id,
|
||||
rid: message.rid,
|
||||
ts: message.ts,
|
||||
u: message.u,
|
||||
receivedBy: allMemberThatIsNotOffline
|
||||
needToReceiveBy: allMemberThatIsOffline
|
||||
})
|
||||
|
||||
const DBmessage = await MessageModel.get({_id: message._id})
|
||||
DBmessage.delete()
|
||||
|
||||
//Get previous last message from room
|
||||
const previousLastMessage = this.messages.slice(-1)[0];
|
||||
|
||||
@@ -299,7 +350,7 @@ export class RoomService {
|
||||
|
||||
}
|
||||
|
||||
async delateMessageToSend(userId) {
|
||||
async delateMessageToSendToOthers(userId) {
|
||||
|
||||
const deleteMessage = await DeleteMessageModel.all()
|
||||
|
||||
@@ -309,6 +360,31 @@ export class RoomService {
|
||||
}
|
||||
|
||||
|
||||
async sendDeleteRequest(msgId) {
|
||||
|
||||
const message = this.messages.find((e)=>e._id = msgId)
|
||||
message.deleteFromDB()
|
||||
|
||||
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
|
||||
}
|
||||
})
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @description sen text message
|
||||
@@ -329,8 +405,6 @@ export class RoomService {
|
||||
this.message= ''
|
||||
|
||||
const message: MessageService = await this.prepareCreate({message:offlineChatMessage, save: environment.chatOffline})
|
||||
|
||||
console.log(message, 'message')
|
||||
|
||||
this.messagesLocalReference.push(localReference)
|
||||
await message.addMessageDB()
|
||||
@@ -374,8 +448,8 @@ export class RoomService {
|
||||
this.typingWatch()
|
||||
}
|
||||
|
||||
sendFalseTypingReadMessage() {
|
||||
this.WsChatService.sendStreamNotifyRoom(this.id, SessionStore.user.RochetChatUser, 'typing', {method:'viewMessage'} as falseTypingMethod)
|
||||
sendFalseTypingReadMessage(method,param: object) {
|
||||
this.WsChatService.sendStreamNotifyRoom(this.id, SessionStore.user.RochetChatUser, 'typing', {method:method, params: param} as falseTypingMethod)
|
||||
this.setTypingOff()
|
||||
}
|
||||
|
||||
@@ -434,8 +508,13 @@ export class RoomService {
|
||||
if(wewMessage.offline == false) {
|
||||
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})
|
||||
@@ -488,6 +567,8 @@ export class RoomService {
|
||||
|
||||
})
|
||||
|
||||
console.log('load chatHistory', chatHistory)
|
||||
|
||||
|
||||
})
|
||||
|
||||
@@ -505,7 +586,6 @@ export class RoomService {
|
||||
|
||||
const membersIds = this.members.map((user)=> user._id)
|
||||
|
||||
console.log('read all ===========')
|
||||
|
||||
await this.messages.forEach( async (message, index) => {
|
||||
if(message._id) {
|
||||
@@ -670,7 +750,7 @@ export class RoomService {
|
||||
|
||||
sendReadMessage() {
|
||||
this.WsChatService.readMessage(this.id)
|
||||
this.sendFalseTypingReadMessage()
|
||||
this.sendFalseTypingReadMessage('viewMessage', {})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user