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>