mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
fix bold
This commit is contained in:
@@ -85,7 +85,7 @@ export class RoomEntity extends BaseEntity<RoomEntity>(RoomEntitySchema) implem
|
||||
if(receiver) {
|
||||
return receiver.user.wxUserId.toString()
|
||||
} else {
|
||||
Logger.error('cant get receiver Id from Room.getReceiverId '+ this.id, this)
|
||||
// Logger.error('cant get receiver Id from Room.getReceiverId '+ this.id, this)
|
||||
return undefined
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ export class RoomEntity extends BaseEntity<RoomEntity>(RoomEntitySchema) implem
|
||||
if(receiverId) {
|
||||
this.receiverId = parseInt(receiverId)
|
||||
} else {
|
||||
Logger.error('cant set receiver Id from Room.setReceiver', this)
|
||||
// Logger.error('cant set receiver Id from Room.setReceiver', this)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -109,6 +109,11 @@ export class MessageEntity {
|
||||
return info.filter(e => typeof e.readAt == 'string' && e.memberId == SessionStore.user.UserId).length == 1
|
||||
}
|
||||
|
||||
haveSeen() {
|
||||
return this.info.filter(e => typeof e.readAt == 'string' && e.memberId == SessionStore.user.UserId).length == 1
|
||||
}
|
||||
|
||||
|
||||
meSender() {
|
||||
return this.sender?.wxUserId == SessionStore.user.UserId
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -444,9 +444,13 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
||||
requestId: '',
|
||||
roomId: this.room.id
|
||||
})
|
||||
} else {
|
||||
console.log('no need', message )
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('dont read for this room')
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user