create direct message

This commit is contained in:
Peter Maquiran
2024-08-19 16:01:58 +01:00
parent 29d0a9b55e
commit ae50d9b3bd
46 changed files with 500 additions and 297 deletions
@@ -8,8 +8,9 @@ import { createDataURL } from 'src/app/utils/ToBase64';
import { zodSafeValidation } from 'src/app/utils/zodValidation';
import { Logger } from 'src/app/services/logger/main/service';
import { MessageAttachmentSource, MessageOutPutDataDTO } from '../../data/dto/message/messageOutputDTO';
import { MessageLocalDataSourceService } from '../../data/repository/message-local-data-source.service';
import { err } from 'neverthrow';
import { MessageLocalDataSourceService } from '../../data/repository/message/message-local-data-source.service';
import { MessageSocketRepositoryService } from '../../data/repository/message/message-live-signalr-data-source.service';
import { err, Result } from 'neverthrow';
import { MessageTable } from '../../infra/database/dexie/schema/message';
import { MessageMapper } from '../mapper/messageMapper';
import { SignalRService } from '../../infra/socket/signal-r.service';
@@ -20,6 +21,11 @@ const MessageInputUseCaseSchema = z.object({
message: z.string()
})
export enum MessageEnum {
Direct = 1,
group = 2
}
export type MessageInputUseCase = z.infer< typeof MessageInputUseCaseSchema>
@Injectable({
@@ -31,10 +37,11 @@ export class MessageCreateUseCaseService {
private AttachmentLocalRepositoryService: AttachmentLocalDataSource,
private messageLocalDataSourceService: MessageLocalDataSourceService,
private messageLiveSignalRDataSourceService: SignalRService,
private messageSocketRepositoryService: MessageSocketRepositoryService
) { }
async execute(message: MessageEntity) {
async execute(message: MessageEntity, messageEnum: MessageEnum) {
const validation = zodSafeValidation<MessageEntity>(MessageEntitySchema, message)
@@ -85,7 +92,14 @@ export class MessageCreateUseCaseService {
message.sending = true
const DTO = MessageMapper.fromDomain(message, message.requestId)
const sendMessageResult = await this.messageLiveSignalRDataSourceService.sendMessage<MessageOutPutDataDTO>(DTO)
let sendMessageResult: Result<MessageOutPutDataDTO, any>
if(messageEnum == MessageEnum.group) {
sendMessageResult = await this.messageLiveSignalRDataSourceService.sendMessage<MessageOutPutDataDTO>(DTO)
} else {
sendMessageResult = await this.messageSocketRepositoryService.sendDirectMessage(DTO)
}
// return this sendMessageResult
if(sendMessageResult.isOk()) {
@@ -101,7 +115,9 @@ export class MessageCreateUseCaseService {
$id : message.$id
}
return this.messageLocalDataSourceService.update(message.$id, {...clone, sending: false, roomId: message.roomId})
this.messageLocalDataSourceService.update(message.$id, {...clone, sending: false, roomId: message.roomId})
return sendMessageResult
} else {
Logger.error('failed to send message to the server', {
error: sendMessageResult.error