This commit is contained in:
Peter Maquiran
2024-10-08 13:16:01 +01:00
parent 0dd4fd665b
commit 9c8ecc182f
22 changed files with 121 additions and 60 deletions
@@ -105,9 +105,7 @@ export class MessageSocketRepositoryService implements IMessageSocketRepository
listenToMessages() {
return this.socket.getData().pipe(
filter((e) : e is SocketMessage<MessageOutPutDataDTO>=> e?.method == 'ReceiveMessage'
),
map((e)=> e.data)
filter((e) : e is SocketMessage<MessageOutPutDataDTO>=> e?.method == 'ReceiveMessage')
)
}
@@ -41,6 +41,8 @@ export class RoomLocalRepository extends DexieRepository<RoomTable, RoomTable> i
// (modifications as Partial<RoomTable>).messages[0].sentAt = oldValue.messages?.[0]?.sentAt
// }
console.log({modifications, oldValue})
if((modifications as Partial<RoomTable>).id || oldValue.id) {
(modifications as Partial<RoomTable>).local = IDBoolean.false
} else {
@@ -28,7 +28,7 @@ import { SocketConnectUseCaseService } from './use-case/socket-connect-use-case.
import { MessageMarkAsReadUseCaseService } from './use-case/message/message-mark-as-read-use-case.service'
import { MessageMarkAllMessageAsReadByRoomIdInputSchema, MessageMarkAllMessageAsReadByRoomIdService } from './use-case/message/message-mark-all-message-as-read-by-room-id.service'
import { GetRoomListUseCaseService } from 'src/app/module/chat/domain/use-case/room/room-get-list-use-case.service';
import { filter } from 'rxjs/operators';
import { filter, map } from 'rxjs/operators';
import { v4 as uuidv4 } from 'uuid'
import { IMessage, MessageEntity } from '../../../core/chat/entity/message';
import { MessageAttachmentByMessageIdInput, MessageAttachmentByMessageIdUseCase } from './use-case/message/message-attachment-by-message-id.service';
@@ -138,6 +138,7 @@ export class ChatServiceService {
})
this.MessageSocketRepositoryService.listenToMessages().pipe(
map(message => message.data),
filter((message) => {
if(!message?.requestId?.startsWith(InstanceId) == false) {
// console.log('exclude my message---')
@@ -19,6 +19,7 @@ export class RoomLastMessageService {
listenToIncomingMessage() {
return this.MessageSocketRepositoryService.listenToMessages().pipe(
map(message => message.data),
filter((message) => !message?.requestId?.startsWith(InstanceId)),
map(message => Object.assign(new MessageEntity(), message))
).subscribe(async (message) => {
@@ -24,6 +24,7 @@ export class ListenMessageByRoomIdNewUseCase {
execute(data: ListenMessageByRoomIdNewInputDTO) {
return this.MessageSocketRepositoryService.listenToMessages().pipe(
map(message => message.data),
filter((message) => !message?.requestId?.startsWith(InstanceId) && message?.roomId == data.roomId),
map(message => Object.assign(new MessageEntity(), message))
)
@@ -23,6 +23,7 @@ export class ListenSendMessageUseCase {
execute({roomId}: {roomId: string}) {
return this.MessageSocketRepositoryService.listenToMessages().pipe(
map(message => message.data),
filter((message) => {
return message?.requestId?.startsWith(InstanceId) && message?.roomId == roomId
@@ -39,6 +39,7 @@ export class RoomBoldSyncUseCaseService {
*/
private listenToIncomingMessage() {
return this.MessageSocketRepositoryService.listenToMessages().pipe(
map(message => message.data),
filter((message) => !message?.requestId?.startsWith(InstanceId)),
map(message => Object.assign(new MessageEntity(), message)),
filter((message) => !message.meSender())
@@ -9,6 +9,7 @@ import { RoomEntity } from 'src/app/core/chat/entity/group';
import { RoomTable } from 'src/app/infra/database/dexie/instance/chat/schema/room';
import { IMessageLocalRepository } from 'src/app/core/chat/repository/message/message-local-repository';
import { messageListDetermineChanges } from '../../../data/async/list/rooms/messageListChangedetector';
import { IDBoolean } from 'src/app/infra/database/dexie/type';
@Injectable({
providedIn: 'root'
@@ -80,9 +81,10 @@ export class RoomSetLastMessageService {
}
private listenToIncomingMessage() {
return this.messageSocketRepository.listenToMessages().pipe(
map(message => Object.assign(new MessageEntity(), message))
).subscribe(async (message) => {
return this.messageSocketRepository.listenToMessages()
.subscribe(async (e) => {
const message = Object.assign(new MessageEntity(), e.data)
if(message?.roomId) {
console.log('listenToIncomingMessage', message.roomId)
@@ -100,6 +102,18 @@ export class RoomSetLastMessageService {
} else {
console.log('set last message')
}
} else if (findRoom.isOk() && !findRoom.value && e.payload.receiverId) {
// console.log('new room', e)
const findLocalDirectRoom = await this.roomLocalRepository.findOne({
receiverId: e.payload.receiverId
})
if(findLocalDirectRoom.isOk() && findLocalDirectRoom.value) {
findLocalDirectRoom.value.id = message.roomId
findLocalDirectRoom.value.local = IDBoolean.false
findLocalDirectRoom.value.messages = [message];
await findLocalDirectRoom.value.save()
}
}
}
});