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 db116fe0c..27e581588 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 @@ -82,9 +82,9 @@ export class RoomLocalDataSourceService { const createResult = await this.createRoom(data) if(createResult.isOk()) { - return this.updateRoom(data) - } else { return createResult + } else { + return this.updateRoom(data) } } diff --git a/src/app/services/Repositorys/chat/dto/room/roomOutputDTO.ts b/src/app/services/Repositorys/chat/dto/room/roomOutputDTO.ts index 1e099148a..a704a70b3 100644 --- a/src/app/services/Repositorys/chat/dto/room/roomOutputDTO.ts +++ b/src/app/services/Repositorys/chat/dto/room/roomOutputDTO.ts @@ -6,7 +6,7 @@ export const RoomOutPutDTOSchema = z.object({ data: z.object({ id: z.string(), roomName: z.string(), - createdBy: z.any(), + createdBy: z.any().nullable(), createdAt: z.string(), expirationDate: z.string().nullable(), roomType: z.any() 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 fcee03432..d18b9546d 100644 --- a/src/app/services/Repositorys/chat/repository/room-repository.service.ts +++ b/src/app/services/Repositorys/chat/repository/room-repository.service.ts @@ -11,6 +11,7 @@ import { UserRemoveListInputDTO } from '../dto/room/userRemoveListInputDTO'; import { roomMemberListDetermineChanges } from '../async/rooms/roomMembersChangeDetector'; import { captureAndReraiseAsync } from 'src/app/services/decorators/captureAndReraiseAsync'; import { RoomUpdateInputDTO } from '../dto/room/roomUpdateInputDTO'; +import { SessionStore } from 'src/app/store/session.service'; @Injectable({ providedIn: 'root' @@ -64,17 +65,19 @@ export class RoomRepositoryService { const result = await this.roomRemoteDataSourceService.getRoom(id) if(result.isOk()) { + + const localListRoom = await this.roomLocalDataSourceService.getRoomList() + const { roomsToDelete, roomsToInsert, roomsToUpdate } = roomListDetermineChanges([result.value.data], localListRoom) + + for( const roomData of roomsToUpdate) { + this.roomLocalDataSourceService.updateRoom(roomData) + } + + // ============================ const localList = await this.roomLocalDataSourceService.getRoomMemberById(id) const { membersToInsert, membersToUpdate, membersToDelete } = roomMemberListDetermineChanges(result.value.data.members, localList, id) - - const a = await this.roomLocalDataSourceService.createOrUpdateRoom(result.value.data) - - if(a.isErr()) { - return a - } - for (const user of membersToInsert) { this.roomLocalDataSourceService.addMember({...user, roomId:id}) } @@ -94,6 +97,14 @@ export class RoomRepositoryService { const result = await this.roomRemoteDataSourceService.createRoom(data) if(result.isOk()) { + if(!result.value.data.createdBy) { + result.value.data.createdBy = { + wxeMail: SessionStore.user.Email, + wxFullName: SessionStore.user.FullName, + wxUserId: SessionStore.user.UserId + } + } + this.roomMemoryDataSourceService.dispatch(addRoom(result.value)) this.roomLocalDataSourceService.createRoom(result.value.data) } diff --git a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html index 0f8defe06..fafe6169d 100644 --- a/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html +++ b/src/app/shared/chat/group-messages/group-contacts/group-contacts.page.html @@ -14,7 +14,7 @@