mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
update room bold
This commit is contained in:
@@ -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)
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user