remove old methods

This commit is contained in:
Peter Maquiran
2024-06-10 17:04:04 +01:00
parent bf1457417d
commit 3dc6c0e249
6 changed files with 158 additions and 128 deletions
@@ -0,0 +1,30 @@
import { TableMemberList } from "../../data-source/room/rooom-local-data-source.service";
import { RoomByIdMemberItemOutputDTO } from "../../dto/room/roomByIdOutputDTO";
export function roomMemberListDetermineChanges(serverRooms: RoomByIdMemberItemOutputDTO[], localRooms: TableMemberList[], roomId: string) {
const PServerRooms: (RoomByIdMemberItemOutputDTO & {$roomIdUserId: string}[]) = serverRooms.map( e=> {
return {
...e,
$roomIdUserId: roomId + e.user.wxUserId
}
})
const serverRoomMap = new Map(PServerRooms.map(room => [room.$roomIdUserId, room]));
const localRoomMap = new Map(localRooms.map(room => [room.$roomIdUserId, room]));
const membersToInsert = serverRooms.filter(room => !localRoomMap.has(room.id));
const membersToUpdate = serverRooms.filter(room => {
const localRoom = localRoomMap.get(room.id);
return localRoom && (
room.user.wxUserId !== localRoom.user.wxUserId ||
room.user.userPhoto !== localRoom.user.userPhoto ||
room.joinAt !== localRoom.joinAt
)
});
const membersToDelete = localRooms.filter(room => !serverRoomMap.has(room.id));
return { membersToInsert, membersToUpdate, membersToDelete };
}
@@ -3,8 +3,6 @@ import { RoomListItemOutPutDTO, RoomListOutPutDTO } from '../../dto/room/roomLis
import { Dexie, EntityTable, liveQuery, Observable } from 'Dexie';
import { err, ok } from 'neverthrow';
import { z } from 'zod';
import { UserList } from '../../../contacts/data-source/contacts-data-source.service';
const tableSchema = z.object({
id: z.string(),
@@ -105,6 +103,7 @@ export class RoomLocalDataSourceService {
return await roomDataSource.room.toArray()
}
getItemsLive(): Observable<RoomListOutPutDTO[]> {
return liveQuery(() => roomDataSource.room.toArray()) as any;
}
@@ -28,4 +28,5 @@ export const RoomByIdOutputDTOSchema = z.object({
});
export type RoomByIdMemberItemOutputDTO = z.infer<typeof MemberSchema>
export type RoomByIdOutputDTO = z.infer<typeof RoomByIdOutputDTOSchema>
@@ -1,7 +1,6 @@
import { Injectable } from '@angular/core';
import { MessageRemoteDataSourceService } from '../data-source/message/message-remote-data-source.service';
import { MessageLiveDataSourceService } from '../data-source/message/message-live-data-source.service';
import { MessageListInputDTO } from '../dto/message/messageListInputDTO';
import { MessageInputDTO } from '../dto/message/messageInputDtO';
import { MessageLocalDataSourceService, TableMessage } from '../data-source/message/message-local-data-source.service';
import { SessionStore } from 'src/app/store/session.service';
@@ -8,6 +8,7 @@ import { RoomLocalDataSourceService } from '../data-source/room/rooom-local-data
import { RoomByIdInputDTO } from '../dto/room/roomByIdInputDTO';
import { roomListDetermineChanges } from '../async/rooms/roomListChangeDetector';
import { UserRemoveListInputDTO } from '../dto/room/userRemoveListInputDTO';
import { roomMemberListDetermineChanges } from '../async/rooms/roomMembersChangeDetector';
@Injectable({
providedIn: 'root'
@@ -45,6 +46,10 @@ export class RoomRepositoryService {
const result = await this.roomRemoteDataSourceService.getRoom(id)
if(result.isOk()) {
const localList = await this.roomLocalDataSourceService.getRoomMemberById(id)
const { membersToInsert, membersToUpdate, membersToDelete } = roomMemberListDetermineChanges(result.value.data.members, localList, id)
for (const user of result.value.data.members) {
this.roomLocalDataSourceService.addMember({...user, roomId:id})
}