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
+2 -2
View File
@@ -85,7 +85,7 @@ export class RoomEntity extends BaseEntity<RoomEntity>(RoomEntitySchema) implem
if(receiver) { if(receiver) {
return receiver.user.wxUserId.toString() return receiver.user.wxUserId.toString()
} else { } 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 return undefined
} }
@@ -102,7 +102,7 @@ export class RoomEntity extends BaseEntity<RoomEntity>(RoomEntitySchema) implem
if(receiverId) { if(receiverId) {
this.receiverId = parseInt(receiverId) this.receiverId = parseInt(receiverId)
} else { } else {
Logger.error('cant set receiver Id from Room.setReceiver', this) // Logger.error('cant set receiver Id from Room.setReceiver', this)
} }
} }
+5
View File
@@ -109,6 +109,11 @@ export class MessageEntity {
return info.filter(e => typeof e.readAt == 'string' && e.memberId == SessionStore.user.UserId).length == 1 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() { meSender() {
return this.sender?.wxUserId == SessionStore.user.UserId return this.sender?.wxUserId == SessionStore.user.UserId
} }
@@ -11,7 +11,6 @@ export function roomListDetermineChanges(serverRooms: RoomListItemOutPutDTO[], l
const roomsToUpdate = serverRooms.filter(room => { const roomsToUpdate = serverRooms.filter(room => {
const localRoom = localRoomMap.get(room.chatRoom.id); const localRoom = localRoomMap.get(room.chatRoom.id);
console.log(room.chatRoom, localRoom)
return localRoom && ( return localRoom && (
room.chatRoom.roomName !== localRoom.roomName && room.chatRoom.roomType == RoomType.Group || 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 { SessionStore } from 'src/app/store/session.service';
import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer'; import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer';
import { IRoomLocalRepository } from 'src/app/core/chat/repository/room/room-local-repository'; 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({ @Injectable({
@@ -25,8 +28,9 @@ export class RoomBoldSyncUseCaseService {
) { ) {
this.listenToIncomingMessage(); this.listenToIncomingMessage();
// this.loadHistory() // this.loadHistory()
this.onInsertToDB() //this.onInsertToDB()
this.listenToUpdateMessages(); this.listenToUpdateMessages();
this.loadHistory()
} }
private listenToIncomingMessage() { 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}) return this.http.listen().pipe(
private onInsertToDB(tracing?: TracingType) { 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 const roomId = loadHistoryFirstMessage.roomId
this.messageLocalRepository.onCreateObservable().pipe(
filter(e => e?.origin == 'history'),
filter(e => e.sender.wxUserId != SessionStore.user.UserId),
).subscribe(async (newMessage)=> {
setTimeout(async ()=> { const room = await this.roomLocalDataSourceService.findOne({id: roomId})
const haveSeen = MessageEntity.haveSeen(newMessage.info)
if(!haveSeen) {
await this.boldLocalRepository.open()
const result = await this.boldLocalRepository.findOne({roomId: newMessage.roomId})
if(result.isOk() && !result.value) { if(room.isOk()) {
const result = await this.boldLocalRepository.insert({roomId: newMessage.roomId, bold: 1}) const roomEntity = new RoomEntity(room.value)
} else if(result.isOk() && result.value.bold == 0) { if (roomEntity.hasLastMessage()) {
const result = await this.boldLocalRepository.update(newMessage.roomId, {bold: 1})
} else { const message = Object.assign(new MessageEntity(), roomEntity.messages[0])
// tracing.hasError("failed to set bold",{}) 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: '', requestId: '',
roomId: this.room.id roomId: this.room.id
}) })
} else {
console.log('no need', message )
} }
} }
} }
} else {
console.log('dont read for this room')
} }
} }
+6 -6
View File
@@ -1,11 +1,11 @@
export let versionData = { export let versionData = {
"shortSHA": "eeaade9aa", "shortSHA": "01c2f5efb",
"SHA": "eeaade9aabf2466b5d4d00c8a2acff737a984040", "SHA": "01c2f5efb5fa836decbc130ca5dcb8a8b6634d94",
"branch": "feature/chat-new-api-peter", "branch": "feature/chat-new-api-peter",
"lastCommitAuthor": "'Peter Maquiran'", "lastCommitAuthor": "'Peter Maquiran'",
"lastCommitTime": "'Tue Sep 17 18:05:47 2024 +0100'", "lastCommitTime": "'Wed Sep 18 11:47:23 2024 +0100'",
"lastCommitMessage": "update room bold", "lastCommitMessage": "fix direct room",
"lastCommitNumber": "6078", "lastCommitNumber": "6079",
"changeStatus": "On branch feature/chat-new-api-peter\nYour branch is ahead of 'origin/feature/chat-new-api-peter' by 6 commits.\n (use \"git push\" to publish your local commits)\n\nChanges to be committed:\n (use \"git restore --staged <file>...\" to unstage)\n\tmodified: src/app/core/chat/entity/group.ts\n\tmodified: src/app/core/chat/repository/room/room-local-repository.ts\n\tmodified: src/app/infra/database/dexie/instance/chat/schema/message.ts\n\tmodified: src/app/infra/socket/signalR/signalR.ts\n\tmodified: src/app/module/chat/data/async/list/rooms/roomListChangeDetector.ts\n\tmodified: src/app/module/chat/data/repository/room/room-local-repository.service.ts\n\tmodified: src/app/module/chat/domain/chat-service.service.ts\n\tmodified: src/app/module/chat/domain/use-case/contact/contact-list.service.ts\n\tmodified: src/app/module/chat/domain/use-case/message/message-create-use-case.service.ts\n\tnew file: src/app/module/chat/domain/use-case/room/room-direct-on-set-id-use-case.service.ts\n\tmodified: src/app/module/chat/domain/use-case/room/room-get-list-use-case.service.ts\n\tmodified: src/app/module/chat/domain/use-case/room/room-set-last-message.service.ts\n\tmodified: src/app/ui/chat/chat.page.ts\n\tmodified: src/app/ui/chat/component/messages/messages.page.html\n\tmodified: src/app/ui/chat/component/messages/messages.page.ts\n\tmodified: src/app/ui/chat/modal/messages/contacts/contacts.page.ts\n\tmodified: src/app/ui/chat/modal/messages/messages.page.html\n\tmodified: src/app/ui/chat/modal/messages/messages.page.ts\n\tmodified: version/git-version.ts", "changeStatus": "On branch feature/chat-new-api-peter\nYour branch is up to date with 'origin/feature/chat-new-api-peter'.\n\nChanges to be committed:\n (use \"git restore --staged <file>...\" to unstage)\n\tmodified: src/app/core/chat/entity/group.ts\n\tmodified: src/app/core/chat/entity/message.ts\n\tmodified: src/app/module/chat/data/async/list/rooms/roomListChangeDetector.ts\n\tmodified: src/app/module/chat/domain/use-case/room/room-bold-sync-use-case.service.ts\n\tmodified: src/app/ui/chat/component/messages/messages.page.ts",
"changeAuthor": "peter.maquiran" "changeAuthor": "peter.maquiran"
} }