update room bold

This commit is contained in:
Peter Maquiran
2024-09-17 18:05:47 +01:00
parent 263f593260
commit eeaade9aab
6 changed files with 58 additions and 11 deletions
@@ -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<typeof SocketRoomUpdateOutPutSchema>
export abstract class IRoomSocketRepository {
@@ -11,6 +27,7 @@ export abstract class IRoomSocketRepository {
abstract listenToCreateRoom(): Observable<any>
abstract listenToDeleteRoom(): Observable<ListenToDeleteRoomInput>
abstract listenToRoomUpdate(): Observable<{method: string, data: SocketRoomUpdateOutPut}>
}
@@ -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<SocketRoomUpdateOutPut>().pipe(
filter((data) => data?.method == 'GroupUpdate')
)
}
listenToDeleteRoom() {
return this.socket.getData<any>().pipe(
filter((data): data is SocketMessage<ListenToDeleteRoomInput> =>
filter((data): data is SocketMessage<ListenToDeleteRoomInput> =>
data?.method === 'UserRemoveGroup'
),
map((e) => e.data)
@@ -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()
@@ -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)
})
}
}
+1 -1
View File
@@ -60,7 +60,7 @@
<ion-label >
<span >
<div >
<div class="font-15-em add-ellipsis" [class.bold-message]="boldTable?.[room.$id]?.bold">
<div class="font-15-em add-ellipsis" [class.bold-message]="boldTable?.[room.id]?.bold">
{{room.roomName}}
</div>
</div>