mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
add chage detector
This commit is contained in:
@@ -5,6 +5,9 @@ export function roomListDetermineChanges(serverRooms: RoomListItemOutPutDTO[], l
|
||||
const serverRoomMap = new Map(serverRooms.map(room => [room.id, room]));
|
||||
const localRoomMap = new Map(localRooms.map(room => [room.id, room]));
|
||||
|
||||
|
||||
console.log({serverRoomMap, localRoomMap})
|
||||
|
||||
const roomsToInsert = serverRooms.filter(room => !localRoomMap.has(room.id));
|
||||
const roomsToUpdate = serverRooms.filter(room => {
|
||||
const localRoom = localRoomMap.get(room.id);
|
||||
|
||||
@@ -7,6 +7,7 @@ import { AddMemberToRoomInputDTO } from '../dto/room/addMemberToRoomInputDto';
|
||||
import { RoomLocalDataSourceService } from '../data-source/room/rooom-local-data-source.service';
|
||||
import { RoomByIdInputDTO } from '../dto/room/roomByIdInputDTO';
|
||||
import { roomListDetermineChanges } from '../async/rooms/roomListChangeDetector';
|
||||
import { value } from '../../../../../plugin/src/sql/Operators/args-attributes';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -21,13 +22,18 @@ export class RoomRepositoryService {
|
||||
|
||||
async list() {
|
||||
const result = await this.roomRemoteDataSourceService.getRoomList()
|
||||
|
||||
if(result.isOk()) {
|
||||
console.log(result.value)
|
||||
}
|
||||
|
||||
const localList = await this.roomLocalDataSourceService.getRoomList()
|
||||
|
||||
if(result.isOk()) {
|
||||
const { roomsToDelete, roomsToInsert, roomsToUpdate } = roomListDetermineChanges(result.value.data, localList)
|
||||
|
||||
console.log({ roomsToDelete, roomsToInsert, roomsToUpdate })
|
||||
for( const roomData of result.value.data) {
|
||||
for( const roomData of roomsToInsert) {
|
||||
this.roomLocalDataSourceService.createOrUpdateRoom(roomData)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user