mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
fix duplicate message
This commit is contained in:
@@ -22,24 +22,27 @@ export class MessageAsyncService {
|
||||
|
||||
this.messageLiveSignalRDataSourceService.getMessage().pipe(
|
||||
filter((message) => {
|
||||
if(!message?.requestId?.startsWith(InstanceId) == false) {
|
||||
// console.log('exclude my message---')
|
||||
}
|
||||
return !message?.requestId?.startsWith(InstanceId)
|
||||
})
|
||||
).subscribe(async (message) => {
|
||||
|
||||
if(message?.id) {
|
||||
|
||||
console.log('message async ', message)
|
||||
// console.log('message async ', message)
|
||||
|
||||
const id = message.id + ''
|
||||
delete message.id;
|
||||
|
||||
|
||||
const incomingMessage = {
|
||||
...message,
|
||||
messageId: id,
|
||||
sending: false,
|
||||
roomId:message.chatRoomId
|
||||
}
|
||||
|
||||
|
||||
this.incomingMessage(incomingMessage)
|
||||
}
|
||||
|
||||
@@ -59,15 +62,15 @@ export class MessageAsyncService {
|
||||
|
||||
const id = message.id + ''
|
||||
delete message.id;
|
||||
|
||||
|
||||
const incomingMessage = {
|
||||
...message,
|
||||
messageId: id,
|
||||
sending: false,
|
||||
roomId:message.chatRoomId
|
||||
}
|
||||
|
||||
this.incomingMessage(incomingMessage)
|
||||
|
||||
this.incomingUpdateMessage(incomingMessage)
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +82,7 @@ export class MessageAsyncService {
|
||||
if(message.id) {
|
||||
this.incomingDeleted(message)
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
@@ -106,4 +109,18 @@ export class MessageAsyncService {
|
||||
console.log(result.error)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async incomingUpdateMessage(data: MessageOutPutDataDTO & { messageId }) {
|
||||
const result = await this.messageLocalDataSourceService.messageExist({messageId: data.messageId})
|
||||
|
||||
if(result.isOk()) {
|
||||
console.log('message exist')
|
||||
return this.messageLocalDataSourceService.update(result.value)
|
||||
} else {
|
||||
console.log('message else')
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ export const messageDataSource = new Dexie('chat-message') as Dexie & {
|
||||
};
|
||||
|
||||
messageDataSource.version(1).stores({
|
||||
message: '++id, roomId, message, messageType, canEdit, oneShot, requireUnlock, messageId'
|
||||
message: '++id, roomId, message, messageType, canEdit, oneShot, requireUnlock, messageId, info'
|
||||
});
|
||||
|
||||
@Injectable({
|
||||
@@ -136,13 +136,16 @@ export class MessageLocalDataSourceService {
|
||||
|
||||
async messageExist({messageId}) {
|
||||
try {
|
||||
|
||||
console.log({messageId});
|
||||
|
||||
const existingMessage = await messageDataSource.message
|
||||
.where('messageId')
|
||||
.equals(messageId)
|
||||
.first();
|
||||
|
||||
if (existingMessage) {
|
||||
return ok(true)
|
||||
return ok(existingMessage)
|
||||
} else {
|
||||
return err(false)
|
||||
}
|
||||
@@ -165,6 +168,18 @@ export class MessageLocalDataSourceService {
|
||||
}
|
||||
|
||||
|
||||
async updateByMessageId(data: TableMessage ) {
|
||||
|
||||
try {
|
||||
const result = await messageDataSource.message.update(data.id, data)
|
||||
return ok(result)
|
||||
} catch (e) {
|
||||
return err(false)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
async findOrUpdate(data: TableMessage) {
|
||||
const findResult = await this.findMessageById(data.messageId)
|
||||
|
||||
|
||||
@@ -65,16 +65,18 @@ export class MessageRepositoryService {
|
||||
delete sendMessageResult.value.sender
|
||||
}
|
||||
|
||||
// let clone: TableMessage = {
|
||||
// ...sendMessageResult.value,
|
||||
// messageId: sendMessageResult.value.id,
|
||||
// id : localActionResult.value
|
||||
// }
|
||||
let clone: TableMessage = {
|
||||
...sendMessageResult.value,
|
||||
messageId: sendMessageResult.value.id,
|
||||
id : localActionResult.value
|
||||
}
|
||||
|
||||
// console.log({clone})
|
||||
console.log('update message')
|
||||
//return this.messageLocalDataSourceService.update({...clone, sending: false})
|
||||
return this.messageLocalDataSourceService.update({...clone, sending: false})
|
||||
return ok(true)
|
||||
} else {
|
||||
console.log('no message to upload')
|
||||
}
|
||||
|
||||
} else {
|
||||
@@ -84,7 +86,7 @@ export class MessageRepositoryService {
|
||||
|
||||
|
||||
sendMessageDelete(data: MessageDeleteInputDTO) {
|
||||
|
||||
|
||||
data['requestId'] = InstanceId +'@'+ uuidv4();
|
||||
|
||||
return this.messageLiveSignalRDataSourceService.sendMessageDelete(data)
|
||||
@@ -94,7 +96,7 @@ export class MessageRepositoryService {
|
||||
const result = await this.messageLocalDataSourceService.getLastMessageByRoomId(roomId)
|
||||
if(result.isOk()) {
|
||||
if(result.value) {
|
||||
|
||||
|
||||
return await this.messageLiveSignalRDataSourceService.sendReadAt({roomId, memberId: SessionStore.user.UserId, chatMessageId: result.value.messageId})
|
||||
}
|
||||
return ok(true)
|
||||
@@ -130,7 +132,7 @@ export class MessageRepositoryService {
|
||||
|
||||
sendTyping(roomId) {
|
||||
return this.messageLiveSignalRDataSourceService.sendTyping({
|
||||
roomId,
|
||||
roomId,
|
||||
UserName:SessionStore.user.FullName,
|
||||
userId: SessionStore.user.UserId
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user