From eeaade9aabf2466b5d4d00c8a2acff737a984040 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Tue, 17 Sep 2024 18:05:47 +0100 Subject: [PATCH] update room bold --- .../repository/room/room-socket-repository.ts | 19 +++++++++++++++- .../room/room-socket-repository.service.ts | 10 +++++++-- .../chat/domain/chat-service.service.ts | 4 +++- .../room/room-update-name-sync.service.ts | 22 +++++++++++++++++++ src/app/ui/chat/chat.page.html | 2 +- version/git-version.ts | 12 +++++----- 6 files changed, 58 insertions(+), 11 deletions(-) create mode 100644 src/app/module/chat/domain/use-case/room/room-update-name-sync.service.ts diff --git a/src/app/core/chat/repository/room/room-socket-repository.ts b/src/app/core/chat/repository/room/room-socket-repository.ts index 7f763a60f..27f721bd1 100644 --- a/src/app/core/chat/repository/room/room-socket-repository.ts +++ b/src/app/core/chat/repository/room/room-socket-repository.ts @@ -1,8 +1,24 @@ import { HubConnection } from "@microsoft/signalr"; import { Result } from "neverthrow"; -import { Observable } from "rxjs"; +import { BehaviorSubject, Observable } from "rxjs"; import { ListenToDeleteRoomInput, RoomSocketOutPutDTO } from "src/app/module/chat/data/repository/room/room-socket-repository.service"; import { CreateRoomInputDTO } from "src/app/module/chat/domain/use-case/room/room-create-use-case.service"; +import { z } from "zod"; + + +const SocketRoomUpdateOutPutSchema = z.object({ + id: z.string().uuid(), + roomName: z.string().min(1), + createdBy: z.string().nullable(), // Allowing null for createdBy + createdAt: z.string().datetime(), + expirationDate: z.string().nullable().optional(), // Allowing null and making it optional + roomType: z.number(), + user1: z.string().nullable().optional(), // Allowing null for user1 + user2: z.string().nullable().optional(), // Allowing null for user2 + messages: z.array(z.any()), // Allowing an array of any type for messages +}); + +export type SocketRoomUpdateOutPut = z.infer export abstract class IRoomSocketRepository { @@ -11,6 +27,7 @@ export abstract class IRoomSocketRepository { abstract listenToCreateRoom(): Observable abstract listenToDeleteRoom(): Observable + abstract listenToRoomUpdate(): Observable<{method: string, data: SocketRoomUpdateOutPut}> } diff --git a/src/app/module/chat/data/repository/room/room-socket-repository.service.ts b/src/app/module/chat/data/repository/room/room-socket-repository.service.ts index 9071513e9..c28f6e3c3 100644 --- a/src/app/module/chat/data/repository/room/room-socket-repository.service.ts +++ b/src/app/module/chat/data/repository/room/room-socket-repository.service.ts @@ -4,7 +4,7 @@ import { filter, map } from 'rxjs/operators'; import { z } from 'zod'; import { SocketMessage } from 'src/app/infra/socket/signalR/signalR'; import { v4 as uuidv4 } from 'uuid' -import { IRoomSocketRepository } from 'src/app/core/chat/repository/room/room-socket-repository'; +import { IRoomSocketRepository, SocketRoomUpdateOutPut } from 'src/app/core/chat/repository/room/room-socket-repository'; import { CreateRoomInputDTO } from '../../../domain/use-case/room/room-create-use-case.service'; const listenToDeleteRoomInputSchema = z.object({ @@ -54,9 +54,15 @@ export class RoomSocketRepositoryService implements IRoomSocketRepository { ) } + listenToRoomUpdate() { + return this.socket.getData().pipe( + filter((data) => data?.method == 'GroupUpdate') + ) + } + listenToDeleteRoom() { return this.socket.getData().pipe( - filter((data): data is SocketMessage => + filter((data): data is SocketMessage => data?.method === 'UserRemoveGroup' ), map((e) => e.data) diff --git a/src/app/module/chat/domain/chat-service.service.ts b/src/app/module/chat/domain/chat-service.service.ts index d4fd8a636..663fb5434 100644 --- a/src/app/module/chat/domain/chat-service.service.ts +++ b/src/app/module/chat/domain/chat-service.service.ts @@ -45,6 +45,7 @@ import { RoomSetLastMessageService } from 'src/app/module/chat/domain/use-case/r import { RoomCreateLocalDirectMessageInputDTOInputDTO, RoomCreateLocalDirectMessageService } from 'src/app/module/chat/domain/use-case/room/room-create-local-direct-message.service'; import { RoomGetListOnCreateUseCaseService } from 'src/app/module/chat/domain/use-case/room/room-get-list-on-create-use-case.service'; import { IRoomSetLocalToFalseByIdInput, RoomSetLocalToFalseByIdService } from 'src/app/module/chat/domain/use-case/room/room-set-local-to-false-by-id.service'; +import { RoomUpdateNameSyncService } from 'src/app/module/chat/domain/use-case/room/room-update-name-sync.service'; import { IUserPhotoGetByIdInput, UserPhotoGetByIdUseCase } from 'src/app/module/chat/domain/use-case/user-photo/user-photo-get-by-id-use-case.service' import { IMessageLocalGetByIdServiceInput, MessageLocalGetByIdService } from 'src/app/module/chat/domain/use-case/message/message-local-get-by-id.service' import { ContactListService } from './use-case/contact/contact-list.service'; @@ -113,7 +114,8 @@ export class ChatServiceService { private contactListService: ContactListService, private messageLocalGetByIdService: MessageLocalGetByIdService, private roomGetLocalByIdService: RoomGetLocalByIdService, - private roomSetLocalToFalseByIdService: RoomSetLocalToFalseByIdService + private roomSetLocalToFalseByIdService: RoomSetLocalToFalseByIdService, + private roomUpdateNameSyncService: RoomUpdateNameSyncService ) { this.MessageSocketRepositoryService.listenToDeleteMessages() .pipe() diff --git a/src/app/module/chat/domain/use-case/room/room-update-name-sync.service.ts b/src/app/module/chat/domain/use-case/room/room-update-name-sync.service.ts new file mode 100644 index 000000000..2d2af0239 --- /dev/null +++ b/src/app/module/chat/domain/use-case/room/room-update-name-sync.service.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@angular/core'; +import { IRoomSocketRepository } from 'src/app/core/chat/repository/room/room-socket-repository'; +import { GetRoomByIdUseCaseService } from './room-get-by-id-use-case.service' +@Injectable({ + providedIn: 'root' +}) +export class RoomUpdateNameSyncService { + + constructor( + private GetRoomByIdUseCaseService: GetRoomByIdUseCaseService, + private roomSocketRepository: IRoomSocketRepository + ) { + // this.watch() + } + + + private watch() { + this.roomSocketRepository.listenToRoomUpdate().subscribe((event) => { + this.GetRoomByIdUseCaseService.execute(event.data.id) + }) + } +} diff --git a/src/app/ui/chat/chat.page.html b/src/app/ui/chat/chat.page.html index 772718012..050b2b0e3 100644 --- a/src/app/ui/chat/chat.page.html +++ b/src/app/ui/chat/chat.page.html @@ -60,7 +60,7 @@
-
+
{{room.roomName}}
diff --git a/version/git-version.ts b/version/git-version.ts index c7bf0a695..287a4bf34 100644 --- a/version/git-version.ts +++ b/version/git-version.ts @@ -1,11 +1,11 @@ export let versionData = { - "shortSHA": "1bc570732", - "SHA": "1bc5707321532b7659caed51bd90c1105d3f4c6f", + "shortSHA": "263f59326", + "SHA": "263f593260f41c86f36c984e82cd023adb6bdbd2", "branch": "feature/chat-new-api-peter", "lastCommitAuthor": "'Peter Maquiran'", - "lastCommitTime": "'Tue Sep 17 16:02:12 2024 +0100'", - "lastCommitMessage": "create offline direct message", - "lastCommitNumber": "6076", - "changeStatus": "On branch feature/chat-new-api-peter\nYour branch is ahead of 'origin/feature/chat-new-api-peter' by 4 commits.\n (use \"git push\" to publish your local commits)\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: src/app/core/chat/entity/group.ts\n\tmodified: src/app/module/chat/data/repository/member/member-list-remote-repository.service.ts\n\tmodified: src/app/module/chat/domain/use-case/message/sync-all-room-messages.service.ts\n\tmodified: src/app/module/chat/domain/use-case/room/room-bold-sync-use-case.service.ts\n\tmodified: src/app/services/http.service.ts\n\tmodified: src/app/ui/chat/chat.page.ts\n\tmodified: src/app/ui/chat/component/messages/messages.page.ts\n\tmodified: version/git-version.ts\n\tmodified: workspace.code-workspace", + "lastCommitTime": "'Tue Sep 17 17:28:50 2024 +0100'", + "lastCommitMessage": "fix delete member and add member", + "lastCommitNumber": "6077", + "changeStatus": "On branch feature/chat-new-api-peter\nYour branch is ahead of 'origin/feature/chat-new-api-peter' by 5 commits.\n (use \"git push\" to publish your local commits)\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: src/app/core/chat/repository/room/room-socket-repository.ts\n\tmodified: src/app/module/chat/data/repository/room/room-socket-repository.service.ts\n\tmodified: src/app/module/chat/domain/chat-service.service.ts\n\tnew file: src/app/module/chat/domain/use-case/room/room-update-name-sync.service.ts\n\tmodified: src/app/ui/chat/chat.page.html", "changeAuthor": "peter.maquiran" } \ No newline at end of file