This commit is contained in:
Peter Maquiran
2024-08-13 10:52:35 +01:00
parent 5b31a186c2
commit 251f533a68
53 changed files with 985 additions and 453 deletions
@@ -0,0 +1,24 @@
import { Injectable } from '@angular/core';
import { filter, map } from 'rxjs/operators';
import { InstanceId } from '../chat-service.service';
import { MessageLiveDataSourceService } from 'src/app/module/chat/data/data-source/message/message-live-signalr-data-source.service'
import { MessageEntity } from '../entity/message';
@Injectable({
providedIn: 'root'
})
export class ListenMessageByRoomIdNewUseCase {
constructor(
private MessageLiveDataSourceService: MessageLiveDataSourceService
) { }
execute({roomId}: {roomId: string}) {
return this.MessageLiveDataSourceService.listenToMessages().pipe(
filter((message) => !message?.requestId?.startsWith(InstanceId) && message?.roomId == roomId),
map(message => Object.assign(new MessageEntity(), message))
)
}
}
@@ -0,0 +1,19 @@
import { Injectable } from '@angular/core';
import { filter } from 'rxjs/operators';
import { MessageLiveDataSourceService } from '../../data/data-source/message/message-live-signalr-data-source.service';
@Injectable({
providedIn: 'root'
})
export class ListenMessageUpdateByRoomIdUseCase {
constructor(
private messageLiveSignalRDataSourceService: MessageLiveDataSourceService,
) { }
execute({roomId}) {
return this.messageLiveSignalRDataSourceService.listenToUpdateMessages().pipe(
filter((message) => roomId == message?.roomId )
)
}
}
@@ -0,0 +1,23 @@
import { Injectable } from '@angular/core';
import { MessageLiveDataSourceService } from 'src/app/module/chat/data/data-source/message/message-live-signalr-data-source.service'
import { InstanceId } from '../chat-service.service';
import { filter, map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class ListenSendMessageUseCase {
constructor(
private MessageLiveDataSourceService: MessageLiveDataSourceService
) { }
execute({roomId}: {roomId: string}) {
return this.MessageLiveDataSourceService.listenToMessages().pipe(
filter((message) => message?.requestId?.startsWith(InstanceId) && message?.roomId == roomId),
map(message => message)
)
}
}
@@ -0,0 +1,23 @@
import { Injectable } from '@angular/core';
import { SignalRService } from '../../infra/socket/signal-r.service';
import { filter } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class ListenMessageDeleteByRoomIdService {
constructor(
private messageLiveSignalRDataSourceService: SignalRService,
) { }
execute({roomId}) {
return this.messageLiveSignalRDataSourceService.getMessageDelete().pipe(
filter((message) => {
console.log({message}, 'delete')
return roomId == message?.roomId
} )
)
}
}
@@ -3,6 +3,8 @@ import { MessageEntity } from '../entity/message';
import { SessionStore } from 'src/app/store/session.service';
import { MessageRepositoryService } from "src/app/module/chat/data/repository/message-respository.service"
import { z } from 'zod';
import { v4 as uuidv4 } from 'uuid'
import { InstanceId } from '../chat-service.service';
const MessageInputUseCaseSchema = z.object({
memberId: z.number(),
@@ -26,6 +28,8 @@ export class MessageCreateUseCaseService {
input.sendAttemp++;
input.requestId = InstanceId +'@'+ uuidv4();
const result = await this.MessageRepositoryService.sendMessage(input)
return result
@@ -0,0 +1,35 @@
import { Injectable } from '@angular/core';
import { MessageEntity } from '../entity/message';
import { SessionStore } from 'src/app/store/session.service';
import { MessageRepositoryService } from "src/app/module/chat/data/repository/message-respository.service"
import { z } from 'zod';
const MessageInputUseCaseSchema = z.object({
memberId: z.number(),
roomId: z.string(),
message: z.string()
})
export type MessageInputUseCase = z.infer< typeof MessageInputUseCaseSchema>
@Injectable({
providedIn: 'root'
})
export class MessageCreateUseCaseService {
constructor(
private MessageRepositoryService: MessageRepositoryService
) { }
async execute(input: MessageEntity) {
const result = await this.MessageRepositoryService.createMessage(input)
if(result.isOk()) {
}
return result
}
}
@@ -1,16 +0,0 @@
import { Injectable } from '@angular/core';
import { SyncMessageRepositoryService } from 'src/app/module/chat/data/service/sync-repository/sync-message-repository.service'
@Injectable({
providedIn: 'root'
})
export class SyncLocalMessageService {
constructor(
private SyncMessageRepositoryService: SyncMessageRepositoryService
) { }
async execute() {
return this.SyncMessageRepositoryService.sendLocalMessages()
}
}