sync message on recoonect on ui

This commit is contained in:
Peter Maquiran
2024-08-27 15:42:11 +01:00
parent a8395b941e
commit 7800b65cba
17 changed files with 293 additions and 33 deletions
+15 -2
View File
@@ -7,9 +7,22 @@ import { Subject, timer } from 'rxjs';
import { UserTypingLocalRepository } from './data/repository/typing/user-typing-local-data-source.service';
import { UserTypingRemoteRepositoryService } from './data/repository/typing/user-typing-live-data-source.service';
import { RoomService } from 'src/app/module/chat/domain/service/room.service'
import { HttpListenToMessageLoadHistoryAdapter, SocketOnReconnectAdapter } from './domain/adapter';
import { ISignalRService } from 'src/app/infra/socket/adapter';
import { HttpModule } from 'src/app/infra/http/http.module';
import { HttpListenToMessageLoadHistoryUseCase } from 'src/app/core/chat/usecase/message/http-listen-to-message-load-history-use-case';
@NgModule({
imports: [],
providers: [],
imports: [HttpModule],
providers: [
{
provide: ISignalRService,
useClass: SignalRService, // or MockDataService
},
{
provide: HttpListenToMessageLoadHistoryAdapter,
useClass: HttpListenToMessageLoadHistoryUseCase, // or MockDataService
},
],
declarations: [],
schemas: [],
entryComponents: []
@@ -11,6 +11,7 @@ import { SessionStore } from 'src/app/store/session.service';
import { MessageDeleteInputDTO } from '../../dto/message/messageDeleteInputDTO';
import { InstanceId } from '../../../domain/chat-service.service';
import { v4 as uuidv4 } from 'uuid'
import { HttpAdapter } from 'src/app/infra/http/adapter';
@Injectable({
providedIn: 'root'
@@ -22,6 +23,7 @@ export class MessageRemoteDataSourceService {
constructor(
private httpService: HttpService,
private socket: SignalRService,
private http: HttpAdapter
) {}
@APIReturn(MessageOutPutDTOSchema, 'post/Messages')
@@ -37,6 +39,13 @@ export class MessageRemoteDataSourceService {
// @APIReturn(MessageOutPutDTOSchema, 'get/Messages')
async getMessagesFromRoom(id: string): DataSourceReturn<MessageOutPutDTO> {
var a = await this.http.get<MessageOutPutDTO>(`${this.baseUrl}/Room/${id}/Messages`)
return a.map((e) => {
return e.data
})
return await this.httpService.get(`${this.baseUrl}/Room/${id}/Messages`);
}
+15 -1
View File
@@ -1,8 +1,22 @@
import { HttpErrorResponse } from "@angular/common/http";
import { Result } from "neverthrow";
import { Observable } from "rxjs";
import { MessageEntity } from "src/app/core/chat/entity/message";
import { HttpListenToMessageLoadHistoryUseCaseInput } from "src/app/core/chat/usecase/message/http-listen-to-message-load-history-use-case";
import { HttpResult } from "src/app/infra/http/type";
import { UseCase } from "src/app/utils/use-case-interface";
import { MessageOutPutDTO } from "../data/dto/message/messageOutputDTO";
export abstract class ITemplateCreateAdapter implements UseCase<MessageEntity, any> {
execute(input: MessageEntity): Promise<any> {
throw new Error("Method not implemented.");
}
}
}
export abstract class SocketOnReconnectAdapter {
abstract execute(): Observable<boolean>
}
export abstract class HttpListenToMessageLoadHistoryAdapter {
abstract execute(input: HttpListenToMessageLoadHistoryUseCaseInput): Observable<MessageOutPutDTO>
}
@@ -4,7 +4,7 @@ import { SessionStore } from 'src/app/store/session.service';
import { MessageReactionInput, MessageReactionUseCaseService } from 'src/app/module/chat/domain/use-case/message/message-reaction-by-id-use-case.service';
import { MessageUpdateInput, MessageUpdateUseCaseService } from 'src/app/module/chat/domain/use-case/message/message-update-by-id-use-case.service';
import { MemberAdminUseCaseService, MemberSetAdminDTO } from 'src/app/module/chat/domain/use-case/member/member-admin-use-case.service';
import { MessageCreateUseCaseService, MessageEnum } from 'src/app/module/chat/domain/use-case/message/message-create-use-case.service';
import { MessageCreateUseCaseService } from 'src/app/module/chat/domain/use-case/message/message-create-use-case.service';
import { SignalRService } from 'src/app/infra/socket/signalR/signal-r.service';
import { SocketMessageDeleteUseCaseService } from 'src/app/module/chat/domain/use-case/socket/socket-message-delete-use-case.service';
import { SocketMessageUpdateUseCaseService } from 'src/app/module/chat/domain/use-case/socket/socket-message-update-use-case.service';
@@ -20,7 +20,6 @@ import { CreateRoomUseCaseService } from './use-case/room/room-create-use-case.s
import { RoomLeaveUseCase } from './use-case/room/room-leave-by-id-use-case.service';
import { SyncAllRoomMessagesService } from './use-case/message/sync-all-room-messages.service';
import { ListenSendMessageUseCase } from './use-case/message/listen-send-message.service'
import { MessageReadAtByIdUseCaseService } from './use-case/message/message-read-at-by-id-use-case.service'
import { SendLocalMessagesUseCaseService } from './use-case/message/messages-send-offline-use-case.service'
import { RemoveMemberUseCaseService } from './use-case/member/-use-case.service'
import { AddMemberUseCaseService } from './use-case/member/member-add-use-case.service'
@@ -40,10 +39,10 @@ import { AddMemberToRoomInputDTO } from '../data/dto/room/addMemberToRoomInputDt
import { RoomUpdateInputDTO } from '../data/dto/room/roomUpdateInputDTO';
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';
export const InstanceId = uuidv4();
@Injectable({
providedIn: 'root'
})
@@ -76,11 +75,11 @@ export class ChatServiceService {
private AddMemberUseCaseService: AddMemberUseCaseService,
private UpdateRoomByIdUseCaseService: UpdateRoomByIdUseCaseService,
private RemoveMemberUseCaseService: RemoveMemberUseCaseService,
private MessageReadAtByIdUseCaseService: MessageReadAtByIdUseCaseService,
private SendLocalMessagesUseCaseService: SendLocalMessagesUseCaseService,
private MessageMarkAsReadUseCaseService: MessageMarkAsReadUseCaseService,
private SocketConnectUseCaseService: SocketConnectUseCaseService,
private MessageMarkAllMessageAsReadByRoomIdService: MessageMarkAllMessageAsReadByRoomIdService
private MessageMarkAllMessageAsReadByRoomIdService: MessageMarkAllMessageAsReadByRoomIdService,
private HttpListenToMessageLoadHistory: HttpListenToMessageLoadHistoryAdapter,
) {
this.messageLiveSignalRDataSourceService.getMessageDelete()
.pipe()
@@ -184,6 +183,9 @@ export class ChatServiceService {
}
listenToMessageLoadHistory(input: HttpListenToMessageLoadHistoryUseCaseInput) {
return this.HttpListenToMessageLoadHistory.execute(input)
}
getRoomList() {
return this.GetRoomListUseCaseService.execute()