import { Injectable } from '@angular/core'; 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 { MessageOutPutDataDTOSchema, MessageOutPutDTO, MessageOutPutDTOSchema } from '../../dto/message/messageOutputDTO'; import { DataSourceReturn } from 'src/app/services/Repositorys/type'; @Injectable({ providedIn: 'root' }) export class MessageRemoteDataSourceService { private baseUrl = 'https://gdapi-dev.dyndns.info/stage/api/v2/Chat'; // Your base URL constructor(private httpService: HttpService) {} @APIReturn(MessageOutPutDTOSchema, 'post/Messages') @ValidateSchema(MessageInputDTOSchema) async sendMessage(data: MessageInputDTO) { return await this.httpService.post(`${this.baseUrl}/Messages`, data); } async reactToMessage(id: string, reaction: any) { return await this.httpService.post(`${this.baseUrl}/Messages/${id}/React`, reaction); } // @APIReturn(MessageOutPutDTOSchema, 'get/Messages') async getMessagesFromRoom(id: string): DataSourceReturn { return await this.httpService.get(`${this.baseUrl}/Room/${id}/Messages`); } @APIReturn(MessageOutPutDTOSchema, 'get/Messages/attachment') async getAttachment(id: string): DataSourceReturn { return await this.httpService.get(`${this.baseUrl}/attachment/${id}`); } }