receive error when sending message on offline

This commit is contained in:
Peter Maquiran
2024-08-07 11:18:41 +01:00
parent 95a6d01aae
commit b0a334c9dd
10 changed files with 132 additions and 51 deletions
@@ -4,13 +4,19 @@ import { SessionStore } from 'src/app/store/session.service';
import { MessageReactionInput, MessageReactionUseCaseService } from 'src/app/module/chat/domain/use-case/message-reaction-use-case.service';
import { MessageUpdateInput, MessageUpdateUseCaseService } from 'src/app/module/chat/domain/use-case/message-update-use-case.service';
import { MemberAdminUseCaseService, MemberSetAdminDTO } from 'src/app/module/chat/domain/use-case/member-admin-use-case.service';
import { MessageCreateUseCaseService } from 'src/app/module/chat/domain/use-case/message-create-use-case.service';
import { SignalRService } from '../infra/socket/signal-r.service';
import { SocketMessageDeleteUseCaseService } from 'src/app/module/chat/domain/use-case/socket/socket-message-delete-use-case.service';
import { SocketMessageUpdateUseCaseService } from 'src/app/module/chat/domain/use-case/socket/socket-message-update-use-case.service';
import { SocketMessageCreateUseCaseService } from 'src/app/module/chat/domain/use-case/socket/socket-message-create-use-case.service';
import { MemberListUpdateStatusUseCaseService } from 'src/app/module/chat/domain/use-case/socket/member-list-update-status-use-case.service';
import { filter } from 'rxjs/operators';
import { InstanceId } from '../data/repository/message-respository.service';
import { v4 as uuidv4 } from 'uuid'
import { MessageInputDTO } from '../data/dto/message/messageInputDtO';
import { MessageEntity } from './entity/message';
export const InstanceId = uuidv4();
@Injectable({
providedIn: 'root'
@@ -26,7 +32,8 @@ export class ChatServiceService {
private SocketMessageUpdateUseCaseService: SocketMessageUpdateUseCaseService,
private SocketMessageCreateUseCaseService: SocketMessageCreateUseCaseService,
private MemberListUpdateStatusUseCaseService: MemberListUpdateStatusUseCaseService,
private MemberAdminUseCaseService: MemberAdminUseCaseService
private MemberAdminUseCaseService: MemberAdminUseCaseService,
private MessageCreateUseCaseService: MessageCreateUseCaseService
) {
this.messageLiveSignalRDataSourceService.getMessageDelete()
.pipe()
@@ -98,5 +105,10 @@ export class ChatServiceService {
setAdmin(input: MemberSetAdminDTO) {
return this.MemberAdminUseCaseService.execute(input)
}
sendMessage(input: MessageEntity) {
return this.MessageCreateUseCaseService.execute(input);
}
}
+5 -5
View File
@@ -27,18 +27,18 @@ export class MessageEntity implements Message {
id: string
roomId: string
message: string
messageType: number
canEdit: boolean
oneShot: boolean
messageType: number = 0
canEdit: boolean = false
oneShot: boolean = false
sentAt: string
requireUnlock: boolean
requireUnlock: boolean = false
sender: {
wxUserId: number,
wxFullName: string,
wxeMail: string,
userPhoto: string,
}
sending: boolean
sending: boolean = false
sendAttemp = 0
constructor() {}
@@ -11,4 +11,4 @@ export function MemberListMapper(outputDto: RoomByIdMemberItemOutputDTO, roomId:
joinAt: outputDto.joinAt,
isAdmin: outputDto.isAdmin
}
}
}
@@ -0,0 +1,22 @@
import { MessageInputDTO } from "../../data/dto/message/messageInputDtO";
import { MessageOutPutDataDTO } from "../../data/dto/message/messageOutputDTO";
import { MessageEntity } from "../entity/message";
export class MessageMapper {
static toDomain(DTO: MessageOutPutDataDTO) : MessageEntity {
return DTO as MessageEntity
}
static fromDomain(entity:MessageEntity, requestId): MessageInputDTO {
return{
canEdit: entity.canEdit,
message: entity.message,
messageType: entity.messageType,
oneShot: entity.oneShot,
requireUnlock: entity.requireUnlock,
roomId: entity.roomId,
senderId: entity.sender.wxUserId,
requestId: requestId
}
}
}
@@ -0,0 +1,33 @@
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) {
input.sendAttemp++;
const result = await this.MessageRepositoryService.sendMessage(input)
return result
}
}