mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
add room async function
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { TableRoom } from "../../data-source/room/rooom-local-data-source.service";
|
||||
import { RoomListItemOutPutDTO } from "../../dto/room/roomListOutputDTO";
|
||||
|
||||
export function roomListDetermineChanges(serverRooms: RoomListItemOutPutDTO[], localRooms: TableRoom[]) {
|
||||
const serverRoomMap = new Map(serverRooms.map(room => [room.id, room]));
|
||||
const localRoomMap = new Map(localRooms.map(room => [room.id, room]));
|
||||
|
||||
const roomsToInsert = serverRooms.filter(room => !localRoomMap.has(room.id));
|
||||
const roomsToUpdate = serverRooms.filter(room => {
|
||||
const localRoom = localRoomMap.get(room.id);
|
||||
return localRoom && (
|
||||
room.roomName !== localRoom.roomName ||
|
||||
room.createdBy.wxUserId !== localRoom.createdBy.wxUserId ||
|
||||
room.createdAt !== localRoom.createdAt ||
|
||||
room.expirationDate !== localRoom.expirationDate ||
|
||||
room.roomType !== localRoom.roomType
|
||||
);
|
||||
});
|
||||
const roomsToDelete = localRooms.filter(room => !serverRoomMap.has(room.id));
|
||||
|
||||
return { roomsToInsert, roomsToUpdate, roomsToDelete };
|
||||
}
|
||||
@@ -101,6 +101,11 @@ export class RoomLocalDataSourceService {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async getRoomList() {
|
||||
return await roomDataSource.room.toArray()
|
||||
}
|
||||
|
||||
getItemsLive(): Observable<RoomListOutPutDTO[]> {
|
||||
return liveQuery(() => roomDataSource.room.toArray()) as any;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,6 @@ import { addRoom, RoomRemoteDataSourceState } from '../data-source/room/room-mem
|
||||
import { Store } from '@ngrx/store';
|
||||
import { AddMemberToRoomInputDTO } from '../dto/room/addMemberToRoomInputDto';
|
||||
import { RoomLocalDataSourceService } from '../data-source/room/rooom-local-data-source.service';
|
||||
import { HttpErrorResponse } from '@angular/common/http';
|
||||
import { ZodError } from 'zod';
|
||||
import { RoomByIdInputDTO } from '../dto/room/roomByIdInputDTO';
|
||||
|
||||
@Injectable({
|
||||
@@ -22,8 +20,10 @@ export class RoomRepositoryService {
|
||||
|
||||
async list() {
|
||||
const result = await this.roomRemoteDataSourceService.getRoomList()
|
||||
// const localList = await this.roomLocalDataSourceService.getRoomList()
|
||||
|
||||
if(result.isOk()) {
|
||||
// const { roomsToDelete, roomsToInsert, roomsToUpdate } = roomListDetermineChanges(result.value, localList)
|
||||
for( const roomData of result.value.data) {
|
||||
this.roomLocalDataSourceService.createOrUpdateRoom(roomData)
|
||||
}
|
||||
@@ -46,8 +46,8 @@ export class RoomRepositoryService {
|
||||
async create(data: RoomInputDTO) {
|
||||
|
||||
const result = await this.roomRemoteDataSourceService.createRoom(data)
|
||||
|
||||
if(result.isOk()) {
|
||||
|
||||
this.roomMemoryDataSourceService.dispatch(addRoom(result.value))
|
||||
this.roomLocalDataSourceService.createRoom(result.value.data)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user