mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 13:02:56 +00:00
change detector for room list
This commit is contained in:
+2
-2
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user