This commit is contained in:
Peter Maquiran
2024-09-18 12:32:31 +01:00
parent 01c2f5efb5
commit 8d332f73a8
6 changed files with 59 additions and 30 deletions
@@ -11,7 +11,6 @@ export function roomListDetermineChanges(serverRooms: RoomListItemOutPutDTO[], l
const roomsToUpdate = serverRooms.filter(room => {
const localRoom = localRoomMap.get(room.chatRoom.id);
console.log(room.chatRoom, localRoom)
return localRoom && (
room.chatRoom.roomName !== localRoom.roomName && room.chatRoom.roomType == RoomType.Group ||
@@ -9,6 +9,9 @@ import { HttpAdapter } from 'src/app/infra/http/adapter';
import { SessionStore } from 'src/app/store/session.service';
import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer';
import { IRoomLocalRepository } from 'src/app/core/chat/repository/room/room-local-repository';
import { IMessageGetAllByRoomIdOutPut } from 'src/app/core/chat/usecase/message/message-get-all-by-room-Id';
import { RoomEntity } from 'src/app/core/chat/entity/group';
import { messageListDetermineChanges } from '../../../data/async/list/rooms/messageListChangedetector';
@Injectable({
@@ -25,8 +28,9 @@ export class RoomBoldSyncUseCaseService {
) {
this.listenToIncomingMessage();
// this.loadHistory()
this.onInsertToDB()
//this.onInsertToDB()
this.listenToUpdateMessages();
this.loadHistory()
}
private listenToIncomingMessage() {
@@ -73,33 +77,50 @@ export class RoomBoldSyncUseCaseService {
});
}
@XTracerAsync({name:'RoomBoldSyncUseCaseService/loadHistory', module:'chat', bugPrint: true})
private loadHistory() {
const regex = new RegExp("Room\\/([0-9a-fA-F]{8})-([0-9a-fA-F]{4})-([0-9a-fA-F]{4})-([0-9a-fA-F]{4})-([0-9a-fA-F]{12})\\/Messages");
@XTracerAsync({name:'RoomBoldSyncUseCaseService/onInsertToDB', module:'chat', bugPrint: true})
private onInsertToDB(tracing?: TracingType) {
return this.http.listen().pipe(
filter((response: any)=> {
return response?.isOk() && regex.test(response.value.url) && response.value.url.endsWith('/Messages')
}),
map((response: any) => response.value.data as IMessageGetAllByRoomIdOutPut)
).subscribe(async (data)=> {
const loadHistoryFirstMessage = data.data[0]
if(loadHistoryFirstMessage) {
let delay = 2000
this.messageLocalRepository.onCreateObservable().pipe(
filter(e => e?.origin == 'history'),
filter(e => e.sender.wxUserId != SessionStore.user.UserId),
).subscribe(async (newMessage)=> {
const roomId = loadHistoryFirstMessage.roomId
setTimeout(async ()=> {
const haveSeen = MessageEntity.haveSeen(newMessage.info)
if(!haveSeen) {
await this.boldLocalRepository.open()
const result = await this.boldLocalRepository.findOne({roomId: newMessage.roomId})
const room = await this.roomLocalDataSourceService.findOne({id: roomId})
if(result.isOk() && !result.value) {
const result = await this.boldLocalRepository.insert({roomId: newMessage.roomId, bold: 1})
} else if(result.isOk() && result.value.bold == 0) {
const result = await this.boldLocalRepository.update(newMessage.roomId, {bold: 1})
} else {
// tracing.hasError("failed to set bold",{})
if(room.isOk()) {
const roomEntity = new RoomEntity(room.value)
if (roomEntity.hasLastMessage()) {
const message = Object.assign(new MessageEntity(), roomEntity.messages[0])
const haveSeen = message.haveSeen()
if(!haveSeen && !message.meSender()) {
console.log('to see', roomEntity.roomName , roomEntity.messages[0], )
await this.boldLocalRepository.open()
const result = await this.boldLocalRepository.findOne({roomId: roomEntity.id})
if(result.isOk() && !result.value) {
const result = await this.boldLocalRepository.insert({roomId: roomEntity.id, bold: 1})
} else if(result.isOk() && result.value.bold == 0) {
const result = await this.boldLocalRepository.update(roomEntity.id, {bold: 1})
} else {
// tracing.hasError("failed to set bold",{})
}
} else {
const result = await this.boldLocalRepository.update(roomEntity.id, {bold: 0})
}
}
}
}, delay);
delay = 0
}
})
}
}