code refactoring

This commit is contained in:
Peter Maquiran
2024-08-18 13:27:57 +01:00
parent 650c772084
commit ef12ff439d
50 changed files with 729 additions and 735 deletions
@@ -8,7 +8,12 @@ import { InstanceId } from '../chat-service.service';
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 } from '../../data/dto/message/messageOutputDTO';
import { MessageAttachmentSource, MessageOutPutDataDTO } from '../../data/dto/message/messageOutputDTO';
import { MessageLocalDataSourceService } from '../../data/data-source/message/message-local-data-source.service';
import { err } from 'neverthrow';
import { MessageTable } from '../../infra/database/dexie/schema/message';
import { MessageMapper } from '../mapper/messageMapper';
import { SignalRService } from '../../infra/socket/signal-r.service';
const MessageInputUseCaseSchema = z.object({
memberId: z.number(),
@@ -26,6 +31,8 @@ export class MessageCreateUseCaseService {
constructor(
private MessageRepositoryService: MessageRepositoryService,
private AttachmentRepositoryService: AttachmentRepositoryService,
private messageLocalDataSourceService: MessageLocalDataSourceService,
private messageLiveSignalRDataSourceService: SignalRService,
) { }
@@ -38,9 +45,13 @@ export class MessageCreateUseCaseService {
message.requestId = InstanceId +'@'+ uuidv4();
const createMessageLocally = await this.MessageRepositoryService.createMessageLocally(message)
const createMessageLocally = await this.messageLocalDataSourceService.sendMessage(message)
if(createMessageLocally.isOk()) {
message.$id = createMessageLocally.value
if(message.hasAttachment) {
for (const attachment of message.attachments) {
@@ -48,7 +59,7 @@ export class MessageCreateUseCaseService {
if(attachment.source != MessageAttachmentSource.Webtrix) {
this.AttachmentRepositoryService.create({
$messageId: createMessageLocally.value.$id,
$messageId: createMessageLocally.value,
file: createDataURL(attachment.file, attachment.mimeType),
fileType: attachment.fileType,
source: attachment.source,
@@ -72,20 +83,36 @@ export class MessageCreateUseCaseService {
}
const sendToServer = await this.MessageRepositoryService.sendMessage(message)
//====================
message.sending = true
if(!sendToServer.isOk()) {
const DTO = MessageMapper.fromDomain(message, message.requestId)
const sendMessageResult = await this.messageLiveSignalRDataSourceService.sendMessage<MessageOutPutDataDTO>(DTO)
// return this sendMessageResult
if(sendMessageResult.isOk()) {
if(sendMessageResult.value.sender == undefined || sendMessageResult.value.sender == null) {
delete sendMessageResult.value.sender
}
let clone: MessageTable = {
...sendMessageResult.value,
id: sendMessageResult.value.id,
$id : message.$id
}
return this.messageLocalDataSourceService.update(message.$id, {...clone, sending: false, roomId: message.roomId})
} else {
Logger.error('failed to send message to the server', {
error: sendToServer.error
error: sendMessageResult.error
})
await this.messageLocalDataSourceService.update(message.$id, {sending: false, $id: message.$id})
return err('no connection')
}
return sendToServer
}
const result = await this.MessageRepositoryService.sendMessage(message)
return result
} else {
if(validation.error.formErrors.fieldErrors.attachments) {