diff --git a/src/app/pages/chat/chat.page.ts b/src/app/pages/chat/chat.page.ts index aec173f02..3df2c296a 100644 --- a/src/app/pages/chat/chat.page.ts +++ b/src/app/pages/chat/chat.page.ts @@ -167,6 +167,7 @@ export class ChatPage implements OnInit { ngOnInit() { this.items$ = this.RoomRepositoryService.getItemsLive() + this.RoomRepositoryService.list(); this.segment = "Contactos"; diff --git a/src/app/services/Repositorys/chat/data-source/room/room-remote-data-source.service.ts b/src/app/services/Repositorys/chat/data-source/room/room-remote-data-source.service.ts index 518bb3514..8c473a11f 100644 --- a/src/app/services/Repositorys/chat/data-source/room/room-remote-data-source.service.ts +++ b/src/app/services/Repositorys/chat/data-source/room/room-remote-data-source.service.ts @@ -23,8 +23,8 @@ export class RoomRemoteDataSourceService { return await this.httpService.post(`${this.baseUrl}/Room`, data); } - async getRoomList(): Promise> { - return await this.httpService.get(`${this.baseUrl}/Room`); + async getRoomList(): Promise> { + return await this.httpService.get(`${this.baseUrl}/Room`); } async getRoom(id: string): Promise> { 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 9f08012a3..bd1d5dab4 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 @@ -24,10 +24,13 @@ export const roomDataSource = new Dexie('FriendDatabase') as Dexie & { room: EntityTable; }; + + roomDataSource.version(1).stores({ - room: '++id, createdBy, roomName, roomType, expirationDate' + room: 'id, createdBy, roomName, roomType, expirationDate' }); + @Injectable({ providedIn: 'root' }) @@ -38,10 +41,38 @@ export class RoomLocalDataSourceService { constructor() {} - async createRoom(data: RoomOutPutDTO) { - + async createRoom(data: TableRoom) { try { - const result = await roomDataSource.room.add(data.data) + const result = await roomDataSource.room.add(data) + return ok(result) + } catch (e) { + return err(false) + } + } + + async updateRoom(data: TableRoom) { + try { + const result = await roomDataSource.room.update(data.id, data); + + return ok(result) + } catch (e) { + return err(false) + } + } + + async createOrUpdateRoom(data: TableRoom) { + const createResult = await this.createRoom(data) + + if(createResult.isOk()) { + return this.updateRoom(data) + } else { + return createResult + } + } + + async getRoomById(id: any) { + try { + const result = await roomDataSource.room.get(id) return ok(result) } catch (e) { return err(false) diff --git a/src/app/services/Repositorys/chat/dto/room/roomListOutputDTO.ts b/src/app/services/Repositorys/chat/dto/room/roomListOutputDTO.ts index a3733e46a..5406257ce 100644 --- a/src/app/services/Repositorys/chat/dto/room/roomListOutputDTO.ts +++ b/src/app/services/Repositorys/chat/dto/room/roomListOutputDTO.ts @@ -15,8 +15,15 @@ const RoomListItemOutPutDTOSchema = z.object({ expirationDate: z.string().datetime(), roomType: z.number() }); + + +// Define the schema for the entire response +const RoomListOutPutDTOSchema = z.object({ + success: z.boolean(), + message: z.string(), + data: z.array(RoomListItemOutPutDTOSchema), +}); + export type RoomListItemOutPutDTO = z.infer - -const RoomListOutPutDTOSchema = z.array(RoomListItemOutPutDTOSchema); export type RoomListOutPutDTO = z.infer 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 416d40249..f6c093d6d 100644 --- a/src/app/services/Repositorys/chat/repository/room-repository.service.ts +++ b/src/app/services/Repositorys/chat/repository/room-repository.service.ts @@ -21,6 +21,12 @@ export class RoomRepositoryService { async list() { const result = await this.roomRemoteDataSourceService.getRoomList() + + if(result.isOk()) { + for( const roomData of result.value.data) { + this.roomLocalDataSourceService.createOrUpdateRoom(roomData) + } + } return result } @@ -35,7 +41,7 @@ export class RoomRepositoryService { console.log('result', result) this.roomMemoryDataSourceService.dispatch( addRoom(result.value) ) - this.roomLocalDataSourceService.createRoom(result.value) + this.roomLocalDataSourceService.createRoom(result.value.data) } return result diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts index 325154b25..07b85b03c 100644 --- a/src/app/shared/chat/messages/messages.page.ts +++ b/src/app/shared/chat/messages/messages.page.ts @@ -57,7 +57,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy userPresence = ''; dmUsers: any; checktimeOut: boolean; - members: any; downloadProgess = 0; @Input() roomId: string; @@ -368,7 +367,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy openBookMeetingComponent() { let data = { roomId: this.roomId, - members: this.members + members: [] } this.openNewEventPage.emit(data); } @@ -511,7 +510,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy // this.showLoader = false; // }); - this.members = this.ChatSystemService.getDmRoom(this.roomId).members this.dmUsers = this.ChatSystemService.getDmRoom(this.roomId).membersExcludeMe } @@ -936,7 +934,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy bookMeeting() { let data = { roomId: this.roomId, - members: this.members + members: [] } this.openNewEventPage.emit(data); } @@ -980,7 +978,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy cssClass: 'model profile-modal search-submodal', componentProps: { roomId: this.roomId, - members: this.members, + members: [], } }); @@ -992,7 +990,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy //this.closeAllDesktopComponents.emit(); let data = { roomId: this.roomId, - members: this.members + members: [] } this.openNewEventPage.emit(data); } diff --git a/src/app/shared/chat/new-group/new-group.page.ts b/src/app/shared/chat/new-group/new-group.page.ts index 7ea4afe40..a5fe412d4 100644 --- a/src/app/shared/chat/new-group/new-group.page.ts +++ b/src/app/shared/chat/new-group/new-group.page.ts @@ -183,7 +183,7 @@ export class NewGroupPage implements OnInit{ if(result.isOk()) { - this.addGroupMessage.emit(result); + // this.addGroupMessage.emit(result); } else if(result.error instanceof HttpErrorResponse) {