From 6c0a15fb7c928c4b6f79ca9004d7b8585326f0f0 Mon Sep 17 00:00:00 2001 From: Peter Maquiran Date: Tue, 27 Aug 2024 16:04:29 +0100 Subject: [PATCH] remove method to infra added to message repository --- .../infra/socket/signalR/signal-r.service.ts | 43 +------------------ src/app/infra/socket/signalR/signalR.ts | 10 +++-- ...essage-live-signalr-data-source.service.ts | 23 +++++++--- .../chat/domain/chat-service.service.ts | 9 ++-- ...istene-message-delete-by-roomId.service.ts | 6 +-- 5 files changed, 34 insertions(+), 57 deletions(-) diff --git a/src/app/infra/socket/signalR/signal-r.service.ts b/src/app/infra/socket/signalR/signal-r.service.ts index 55c41134e..58cae5b9e 100644 --- a/src/app/infra/socket/signalR/signal-r.service.ts +++ b/src/app/infra/socket/signalR/signal-r.service.ts @@ -28,7 +28,7 @@ export class SignalRService { this.deadConnectionBackGround = new Subject() this.deadConnectionBackGround.pipe( - switchMap(() => timer(150000)), + switchMap(() => timer(150000)), // 2 minutes 30 seconds ).subscribe(() => { this.newConnection() }) @@ -82,40 +82,6 @@ export class SignalRService { }, 2000) }) } - - } - - getMessage() { - return this.getData().pipe( - filter((e) : e is SocketMessage=> e?.method == 'ReceiveMessage' - ), - map((e)=> e.data) - ) - - } - - getTyping() { - return this.getData().pipe( - filter((e) : e is SocketMessage=> e?.method == 'TypingMessage' - ), - map((e)=> e.data) - ) - } - - getMessageDelete() { - return this.getData().pipe( - filter((e) : e is SocketMessage=> e?.method == 'DeleteMessage' - ), - map((e)=> e.data) - ) - } - - getMessageUpdate() { - return this.getData().pipe( - filter((e) : e is SocketMessage=> e?.method == 'UpdateMessage' - ), - map((e)=> e.data) - ) } sendData(input: ISignalRInput) { @@ -126,13 +92,6 @@ export class SignalRService { return this.connection.join() } - // onReconnect() { - // const connection = this.getConnectionState() - // return connection.pipe( - // skip(1) // Skip the first value - // ) - // } - getData() { return this.sendDataSubject.asObservable() as BehaviorSubject<{method: string, data: T}> } diff --git a/src/app/infra/socket/signalR/signalR.ts b/src/app/infra/socket/signalR/signalR.ts index 651b4822f..5e433edd1 100644 --- a/src/app/infra/socket/signalR/signalR.ts +++ b/src/app/infra/socket/signalR/signalR.ts @@ -60,10 +60,11 @@ export class SignalRConnection { console.log('Error while starting connection: ' + error); if(this.hasConnectOnce) { setTimeout(()=> { - this.attempReconnect(); + resolve(this.attempReconnect()); }, 2000) + } else { + resolve(err(false)) } - resolve(err(false)) }); hubConnection.onclose(() => { @@ -85,7 +86,9 @@ export class SignalRConnection { }); if(this.reconnect) { - this.attempReconnect(); + resolve(this.attempReconnect()); + } else { + resolve(err(false)) } }); @@ -100,6 +103,7 @@ export class SignalRConnection { this.reconnectSubject.next(true) } + return attempConnection } public join() { diff --git a/src/app/module/chat/data/repository/message/message-live-signalr-data-source.service.ts b/src/app/module/chat/data/repository/message/message-live-signalr-data-source.service.ts index 9b79ab3ac..68d28edff 100644 --- a/src/app/module/chat/data/repository/message/message-live-signalr-data-source.service.ts +++ b/src/app/module/chat/data/repository/message/message-live-signalr-data-source.service.ts @@ -1,6 +1,4 @@ import { Injectable } from '@angular/core'; -import { err, ok } from 'neverthrow'; -import { SessionStore } from 'src/app/store/session.service'; import { MessageDeleteInputDTO } from '../../dto/message/messageDeleteInputDTO'; import { v4 as uuidv4 } from 'uuid' import { InstanceId } from '../../../domain/chat-service.service'; @@ -9,6 +7,8 @@ import { MessageOutPutDataDTO } from '../../dto/message/messageOutputDTO'; import { MessageInputDTO } from '../../dto/message/messageInputDtO'; import { MessageReactionInput } from '../../../domain/use-case/message/message-reaction-by-id-use-case.service'; import { SignalRService } from 'src/app/infra/socket/signalR/signal-r.service'; +import { filter, map } from 'rxjs/operators'; +import { SocketMessage } from 'src/app/infra/socket/signalR/signalR'; interface msgObj { roomId: string; @@ -109,17 +109,28 @@ export class MessageSocketRepositoryService { } listenToMessages() { - return this.socket.getMessage() + return this.socket.getData().pipe( + filter((e) : e is SocketMessage=> e?.method == 'ReceiveMessage' + ), + map((e)=> e.data) + ) } listenToDeleteMessages() { - return this.socket.getMessageDelete() + return this.socket.getData().pipe( + filter((e) : e is SocketMessage=> e?.method == 'DeleteMessage' + ), + map((e)=> e.data) + ) } - listenToUpdateMessages() { - return this.socket.getMessageUpdate() + return this.socket.getData().pipe( + filter((e) : e is SocketMessage=> e?.method == 'UpdateMessage' + ), + 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 61a4ec746..24dc1d255 100644 --- a/src/app/module/chat/domain/chat-service.service.ts +++ b/src/app/module/chat/domain/chat-service.service.ts @@ -41,6 +41,8 @@ import { RoomType } from "src/app/core/chat/entity/group"; import { sendReadAt } from "src/app/module/chat/data/repository/message/message-live-signalr-data-source.service"; import { HttpListenToMessageLoadHistoryAdapter } from './adapter' import { HttpListenToMessageLoadHistoryUseCaseInput } from 'src/app/core/chat/usecase/message/http-listen-to-message-load-history-use-case'; +import { MessageSocketRepositoryService } from 'src/app/module/chat/data/repository/message/message-live-signalr-data-source.service' + export const InstanceId = uuidv4(); @Injectable({ @@ -80,8 +82,9 @@ export class ChatServiceService { private SocketConnectUseCaseService: SocketConnectUseCaseService, private MessageMarkAllMessageAsReadByRoomIdService: MessageMarkAllMessageAsReadByRoomIdService, private HttpListenToMessageLoadHistory: HttpListenToMessageLoadHistoryAdapter, + private MessageSocketRepositoryService: MessageSocketRepositoryService, ) { - this.messageLiveSignalRDataSourceService.getMessageDelete() + this.MessageSocketRepositoryService.listenToDeleteMessages() .pipe() .subscribe(async (message) => { if(message?.id) { @@ -89,7 +92,7 @@ export class ChatServiceService { } }) - this.messageLiveSignalRDataSourceService.getMessageUpdate().pipe( + this.MessageSocketRepositoryService.listenToUpdateMessages().pipe( filter((message) => { return !message?.requestId?.startsWith(InstanceId) }) @@ -99,7 +102,7 @@ export class ChatServiceService { } }) - this.messageLiveSignalRDataSourceService.getMessage().pipe( + this.MessageSocketRepositoryService.listenToMessages().pipe( filter((message) => { if(!message?.requestId?.startsWith(InstanceId) == false) { // console.log('exclude my message---') diff --git a/src/app/module/chat/domain/use-case/message/listene-message-delete-by-roomId.service.ts b/src/app/module/chat/domain/use-case/message/listene-message-delete-by-roomId.service.ts index 88b8ae190..ab8c3031e 100644 --- a/src/app/module/chat/domain/use-case/message/listene-message-delete-by-roomId.service.ts +++ b/src/app/module/chat/domain/use-case/message/listene-message-delete-by-roomId.service.ts @@ -1,18 +1,18 @@ import { Injectable } from '@angular/core'; import { filter } from 'rxjs/operators'; import { SignalRService } from 'src/app/infra/socket/signalR/signal-r.service'; - +import { MessageSocketRepositoryService } from 'src/app/module/chat/data/repository/message/message-live-signalr-data-source.service' @Injectable({ providedIn: 'root' }) export class ListenMessageDeleteByRoomIdService { constructor( - private messageLiveSignalRDataSourceService: SignalRService, + private MessageSocketRepositoryService: MessageSocketRepositoryService, ) { } execute({roomId}) { - return this.messageLiveSignalRDataSourceService.getMessageDelete().pipe( + return this.MessageSocketRepositoryService.listenToDeleteMessages().pipe( filter((message) => { return roomId == message?.roomId } )