diff --git a/src/app/services/Repositorys/chat/async/rooms/roomListChangeDetector.ts b/src/app/services/Repositorys/chat/async/rooms/roomListChangeDetector.ts new file mode 100644 index 000000000..95d7cf93e --- /dev/null +++ b/src/app/services/Repositorys/chat/async/rooms/roomListChangeDetector.ts @@ -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 }; +} 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 a9249eb78..9f97998c8 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 @@ -101,6 +101,11 @@ export class RoomLocalDataSourceService { } } + + async getRoomList() { + return await roomDataSource.room.toArray() + } + getItemsLive(): Observable { return liveQuery(() => roomDataSource.room.toArray()) as 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 a96ff02d2..a70573dda 100644 --- a/src/app/services/Repositorys/chat/repository/room-repository.service.ts +++ b/src/app/services/Repositorys/chat/repository/room-repository.service.ts @@ -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) } diff --git a/src/app/shared/agenda/new-event/new-event.page.ts b/src/app/shared/agenda/new-event/new-event.page.ts index 1405b6c7d..e96390614 100644 --- a/src/app/shared/agenda/new-event/new-event.page.ts +++ b/src/app/shared/agenda/new-event/new-event.page.ts @@ -25,13 +25,11 @@ import { FormGroup, Validators } from '@angular/forms'; import { NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker'; import { ThemeService } from 'src/app/services/theme.service' import { ChatMethodsService } from 'src/app/services/chat/chat-methods.service'; -import { ServerConnectionService } from 'src/app/services/server-connection.service'; import { SessionStore } from 'src/app/store/session.service'; import { HttpErrorHandle } from 'src/app/services/http-error-handle.service'; import { environment } from 'src/environments/environment'; import { EventToAprove } from 'src/app/models/eventToAprove.model'; import { ProcessesService } from 'src/app/services/processes.service'; -import { Subject } from 'rxjs'; import { TaskService } from 'src/app/services/task.service' import { ContactsService } from 'src/app/services/contacts.service'; @@ -1050,13 +1048,13 @@ console.log(this.loggeduser.Profile) this.postEvent.IsAllDayEvent = this.allDayCheck; this.postEvent.StartDate = this.setAlldayTime(this.postEvent.StartDate) this.postEvent.EndDate = this.setAlldayTimeEndDate(this.postEvent.EndDate) - + console.log('Recurso ativado!!'); } else { this.postEvent.IsAllDayEvent = this.allDayCheck; this.postEvent.EndDate = this.setAlldayTimeEndDateNotAlday(this.postEvent.EndDate) console.log('Recurso desativado'); - + } }