From e8d68c45d7908ba2ccfd4e77c5c8d196347f5ce3 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Tue, 4 Jun 2024 09:58:04 +0100 Subject: [PATCH] add interface --- .../data-source/room-remote-data-source.service.ts | 5 +++-- .../Repositorys/chat/dto/addMemberToRoomInputDto.ts | 8 ++++++++ .../chat/repository/room-repository.service.ts | 11 ++++++++++- src/app/shared/chat/new-group/new-group.page.ts | 4 +++- 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 src/app/services/Repositorys/chat/dto/addMemberToRoomInputDto.ts diff --git a/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.ts b/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.ts index 7c2981dec..6c1467e92 100644 --- a/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.ts +++ b/src/app/services/Repositorys/chat/data-source/room-remote-data-source.service.ts @@ -4,6 +4,7 @@ import { HttpService } from 'src/app/services/http.service'; import { RoomListOutPutDTO } from '../dto/roomListOutputDTO'; import { RoomListInputDTO } from '../dto/roomInputDTO'; import { RoomOutPutDTO } from '../dto/roomOutputDTO'; +import { AddMemberToRoomInputDTO } from '../dto/addMemberToRoomInputDto'; @Injectable({ providedIn: 'root' @@ -42,8 +43,8 @@ export class RoomRemoteDataSourceService { return await this.httpService.delete(`${this.baseUrl}/Room/${id}`); } - async addMemberToRoom(id: string, member: any): Promise> { - return await this.httpService.post(`${this.baseUrl}/Room/${id}/Member`, member); + async addMemberToRoom(data: AddMemberToRoomInputDTO) { + return await this.httpService.post(`${this.baseUrl}/Room/${data.id}/Member`, data.member); } async removeMemberFromRoom(id: string, member: any): Promise> { diff --git a/src/app/services/Repositorys/chat/dto/addMemberToRoomInputDto.ts b/src/app/services/Repositorys/chat/dto/addMemberToRoomInputDto.ts new file mode 100644 index 000000000..40d6a00f4 --- /dev/null +++ b/src/app/services/Repositorys/chat/dto/addMemberToRoomInputDto.ts @@ -0,0 +1,8 @@ +import { z } from "zod"; + +export const AddMemberToRoomInputDTOSchema = z.object({ + id: z.string(), + member: z.string(), +}); + +export type AddMemberToRoomInputDTO = z.infer diff --git a/src/app/services/Repositorys/chat/repository/room-repository.service.ts b/src/app/services/Repositorys/chat/repository/room-repository.service.ts index 5df5dbaef..d8a9fb3b7 100644 --- a/src/app/services/Repositorys/chat/repository/room-repository.service.ts +++ b/src/app/services/Repositorys/chat/repository/room-repository.service.ts @@ -5,6 +5,8 @@ import { IRepositoryReturn } from '../../type'; import { ValidateSchema } from 'src/app/services/decorators/validate-schema.decorator'; import { addRoom, RoomRemoteDataSourceState } from '../data-source/room-memory-data-source'; import { Store } from '@ngrx/store'; +import { AddMemberToRoomInputDTO, AddMemberToRoomInputDTOSchema } from '../dto/addMemberToRoomInputDto'; +import { RoomOutPutDTO } from '../dto/roomOutputDTO'; @Injectable({ providedIn: 'root' @@ -21,7 +23,7 @@ export class RoomRepositoryService { } @ValidateSchema(RoomListInputDTOSchema) - async create(data: RoomListInputDTO): IRepositoryReturn { + async create(data: RoomListInputDTO): IRepositoryReturn { const result = await this.roomRemoteDataSourceService.createRoom(data) if(result.isOk()) { @@ -34,4 +36,11 @@ export class RoomRepositoryService { return result } + + @ValidateSchema(AddMemberToRoomInputDTOSchema) + async addMemberToRoom(data: AddMemberToRoomInputDTO): IRepositoryReturn { + const result = await this.roomRemoteDataSourceService.addMemberToRoom(data) + + return result + } } diff --git a/src/app/shared/chat/new-group/new-group.page.ts b/src/app/shared/chat/new-group/new-group.page.ts index be1e89a5a..eb9a41ae1 100644 --- a/src/app/shared/chat/new-group/new-group.page.ts +++ b/src/app/shared/chat/new-group/new-group.page.ts @@ -8,8 +8,8 @@ import { GroupContactsPage } from '../group-messages/group-contacts/group-contac import { ToastService } from 'src/app/services/toast.service'; import { ThemeService } from 'src/app/services/theme.service'; import { RouteService } from 'src/app/services/route.service'; -import { RoomRepositoryService } from 'src/app/services/Repositorys/chat/repository/room-repository.service'; import { HttpErrorResponse } from '@angular/common/http'; +import { RoomRepositoryService } from 'src/app/services/Repositorys/chat/repository/room-repository.service'; @Component({ selector: 'app-new-group', templateUrl: './new-group.page.html', @@ -183,6 +183,8 @@ export class NewGroupPage implements OnInit{ if(result.isOk()) { + this.addGroupMessage.emit(result); + } else if(result.error instanceof HttpErrorResponse) { }