diff --git a/src/app/services/Repositorys/chat/data-source/room/rooom-local-data-source.service.ts b/src/app/services/Repositorys/chat/data-source/room/rooom-local-data-source.service.ts index 27e581588..f05b60886 100644 --- a/src/app/services/Repositorys/chat/data-source/room/rooom-local-data-source.service.ts +++ b/src/app/services/Repositorys/chat/data-source/room/rooom-local-data-source.service.ts @@ -3,11 +3,17 @@ import { RoomListItemOutPutDTO, RoomListOutPutDTO } from '../../dto/room/roomLis import { Dexie, EntityTable, liveQuery, Observable } from 'Dexie'; import { err, ok, Result } from 'neverthrow'; import { z } from 'zod'; +import { ValidateSchema } from 'src/app/services/decorators/validate-schema.decorator'; const tableSchema = z.object({ id: z.string(), roomName: z.string(), - createdBy: z.any(), + createdBy: z.object({ + wxUserId: z.number(), + wxFullName: z.string(), + wxeMail: z.string().email(), + userPhoto: z.string().nullable()// api check + }), createdAt: z.any(), expirationDate: z.any(), roomType: z.any() @@ -49,6 +55,7 @@ export class RoomLocalDataSourceService { constructor() {} + @ValidateSchema(tableSchema) async createRoom(data: TableRoom) { try { const result = await roomDataSource.room.add(data) @@ -68,6 +75,11 @@ export class RoomLocalDataSourceService { } } + + async leaveRoom(id: string) { + return this.deleteRoomById(id) + } + async updateRoom(data: TableRoom) { try { const result = await roomDataSource.room.update(data.id, data); 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 c9d5e8628..b2d4143c5 100644 --- a/src/app/services/Repositorys/chat/repository/room-repository.service.ts +++ b/src/app/services/Repositorys/chat/repository/room-repository.service.ts @@ -58,6 +58,10 @@ export class RoomRepositoryService { const { roomsToDelete, roomsToInsert, roomsToUpdate } = roomListDetermineChanges([result.value.data], localList) for( const roomData of roomsToUpdate) { + if(!roomData.createdBy?.wxUserId) { + delete roomData.createdBy; + } + this.roomLocalDataSourceService.updateRoom(roomData) } @@ -132,6 +136,17 @@ export class RoomRepositoryService { return result } + + async leaveRoom(data: UserRemoveListInputDTO) { + const result = await this.roomRemoteDataSourceService.removeMemberFromRoom(data) + + if(result.isOk()) { + return this.roomLocalDataSourceService.leaveRoom(data.id) + } + + return result + } + getItemsLive() { return this.roomLocalDataSourceService.getItemsLive() } diff --git a/src/app/shared/popover/chat-popover/chat-popover.page.html b/src/app/shared/popover/chat-popover/chat-popover.page.html index 848ff49a9..0f1157a0d 100644 --- a/src/app/shared/popover/chat-popover/chat-popover.page.html +++ b/src/app/shared/popover/chat-popover/chat-popover.page.html @@ -17,7 +17,8 @@ --> - + +