add chat to mobile

This commit is contained in:
Peter Maquiran
2024-08-08 11:44:41 +01:00
parent 6d8ef9b1e3
commit 32181caefe
12 changed files with 306 additions and 231 deletions
@@ -3,7 +3,7 @@ import { HttpService } from 'src/app/services/http.service';
import { MessageInputDTO, MessageInputDTOSchema } from '../../dto/message/messageInputDtO';
import { ValidateSchema } from 'src/app/services/decorators/validate-schema.decorator';
import { APIReturn } from 'src/app/services/decorators/api-validate-schema.decorator';
import { MessageOutPutDTO, MessageOutPutDTOSchema } from '../../dto/message/messageOutputDTO';
import { MessageOutPutDataDTOSchema, MessageOutPutDTO, MessageOutPutDTOSchema } from '../../dto/message/messageOutputDTO';
import { DataSourceReturn } from 'src/app/services/Repositorys/type';
@Injectable({
@@ -15,7 +15,7 @@ export class MessageRemoteDataSourceService {
constructor(private httpService: HttpService) {}
@APIReturn(MessageOutPutDTOSchema, 'get/Messages')
@APIReturn(MessageOutPutDTOSchema, 'post/Messages')
@ValidateSchema(MessageInputDTOSchema)
async sendMessage(data: MessageInputDTO) {
return await this.httpService.post<MessageOutPutDTO>(`${this.baseUrl}/Messages`, data);
@@ -25,6 +25,7 @@ export class MessageRemoteDataSourceService {
return await this.httpService.post<any>(`${this.baseUrl}/Messages/${id}/React`, reaction);
}
@APIReturn(MessageOutPutDTOSchema, 'get/Messages')
async getMessagesFromRoom(id: string): DataSourceReturn<MessageOutPutDTO> {
return await this.httpService.get(`${this.baseUrl}/Room/${id}/Messages`);
}
@@ -12,24 +12,23 @@ export enum MessageAttachmentFileType {
Video
}
const DataSchema = z.object({
export const MessageOutPutDataDTOSchema = z.object({
id: z.string(),
roomId: z.string(),
wxUserId: z.number(),
sender: z.object({
wxUserId: z.number(),
wxFullName: z.string(),
wxeMail: z.string(),
userPhoto: z.string().optional()
}).nullable(),
message: z.string(),
message: z.string().nullable(),
messageType: z.number(),
sentAt: z.string(),
deliverAt: z.string().datetime().nullable(),
canEdit: z.boolean(),
oneShot: z.boolean(),
requireUnlock: z.boolean(),
requestId: z.string(),
requestId: z.string().optional(),
reactions: z.object({
id: z.string(),
reactedAt: z.string(),
@@ -50,8 +49,8 @@ const DataSchema = z.object({
export const MessageOutPutDTOSchema = z.object({
success: z.boolean(),
message: z.string(),
data: DataSchema.array()
data: MessageOutPutDataDTOSchema.array()
});
export type MessageOutPutDataDTO = z.infer<typeof DataSchema>
export type MessageOutPutDataDTO = z.infer<typeof MessageOutPutDataDTOSchema>
export type MessageOutPutDTO = z.infer<typeof MessageOutPutDTOSchema>
@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { z } from 'zod';
import { MessageRepositoryService } from '../../data/repository/message-respository.service';
import { ValidateSchema } from 'src/app/services/decorators/validate-schema.decorator';
import { SafeValidateSchema, ValidateSchema } from 'src/app/services/decorators/validate-schema.decorator';
export const MessageDeleteInputDTOSchema = z.object({
requestId: z.string().optional(),
@@ -20,7 +20,7 @@ export class MessageDeleteLiveUseCaseService {
public repository: MessageRepositoryService
) { }
@ValidateSchema(MessageDeleteInputDTOSchema)
@SafeValidateSchema(MessageDeleteInputDTOSchema, 'MessageDeleteLiveUseCaseService')
async execute(data: MessageDeleteInputDTO) {
return this.repository.sendMessageDelete(data)
}
@@ -1,6 +1,8 @@
import { Injectable } from '@angular/core';
import { MessageLocalDataSourceService } from '../../../data/data-source/message/message-local-data-source.service';
import { MessageOutPutDataDTO } from '../../../data/dto/message/messageOutputDTO';
import { MessageOutPutDataDTO, MessageOutPutDataDTOSchema } from '../../../data/dto/message/messageOutputDTO';
import { SafeValidateSchema, ValidateSchema } from 'src/app/services/decorators/validate-schema.decorator';
import { MessageInputDTOSchema } from '../../../data/dto/message/messageInputDtO';
@Injectable({
providedIn: 'root'
@@ -12,6 +14,7 @@ export class SocketMessageUpdateUseCaseService {
) { }
@SafeValidateSchema(MessageOutPutDataDTOSchema, 'SocketMessageUpdateUseCaseService')
async execute(data: MessageOutPutDataDTO) {
const result = await this.messageLocalDataSourceService.messageExist({id: data.id})
@@ -23,7 +26,7 @@ export class SocketMessageUpdateUseCaseService {
// delete data.chatRoomId
if(result.isOk()) {
console.log('message exist', result.value)
console.log('message exist', result.value, incomingMessage)
return this.messageLocalDataSourceService.update(result.value.$id, incomingMessage)
} else {
console.log('message else')
@@ -5,7 +5,7 @@ export const MessageTable = z.object({
$id: z.number().optional(),
id: z.string().optional(),
roomId: z.string().uuid(),
message: z.string(),
message: z.string().nullable(),
messageType: z.number(),
canEdit: z.boolean(),
oneShot: z.boolean(),