fix login to socket

This commit is contained in:
Peter Maquiran
2024-08-21 10:40:54 +01:00
parent 59fc19879f
commit d76f2e240e
13 changed files with 86 additions and 21 deletions
+1 -1
View File
@@ -63,7 +63,7 @@ export class ChatModule {
).subscribe((value)=> {
if(value) {
// on reconnect
this.ChatServiceService.start();
this.ChatServiceService.chatSync();
}
});
@@ -1,9 +1,7 @@
import { Injectable } from '@angular/core';
import { RoomListItemOutPutDTO, RoomListOutPutDTO } from '../dto/room/roomListOutputDTO';
import { Dexie, EntityTable, liveQuery, Observable } from 'Dexie';
import { z } from 'zod';
import { DexieRepository } from 'src/app/infra/repository/dexie/dexie-repository.service';
import { RoomTable, RoomTableSchema } from '../../infra/database/dexie/schema/room';
import { chatDatabase } from '../../infra/database/dexie/service';
import { ok } from 'neverthrow';
import { err, Result } from 'neverthrow';
@@ -37,6 +35,13 @@ export class MemberListLocalRepository extends DexieRepository<MemberTable> {
async addMember(data: MemberTable) {
data.$roomIdUserId = data.roomId + data.wxUserId
return this.insert(data)
// try {
// data.$roomIdUserId = data.roomId + data.wxUserId
// const result = await chatDatabase.members.add(data)
// return ok(result)
// } catch (e) {
// return err(false)
// }
}
async updateMemberRole(data: MemberTable) {
@@ -44,6 +44,10 @@ export class MessageSocketRepositoryService {
private socket: SignalRService
) {}
connect() {
return this.socket.establishConnection();
}
async sendMessage(data: msgObj) {
try {
@@ -25,6 +25,7 @@ import { SendLocalMessagesUseCaseService } from './use-case/messages-send-offlin
import { RemoveMemberUseCaseService } from './use-case/member/-use-case.service'
import { AddMemberUseCaseService } from './use-case/member-add-use-case.service'
import { UpdateRoomByIdUseCaseService } from './use-case/room-update-by-id-use-case.service'
import { SocketConnectUseCaseService } from './use-case/socket-connect-use-case.service'
import { MessageMarkAsReadUseCaseService } from './use-case/message/message-mark-as-read-use-case.service'
import { GetMessageAttachmentLocallyUseCaseService } from 'src/app/module/chat/domain/use-case/message-get-attachment-localy-use-case.service';
import { GetRoomListUseCaseService } from 'src/app/module/chat/domain/use-case/room-get-list-use-case.service';
@@ -76,7 +77,8 @@ export class ChatServiceService {
private RemoveMemberUseCaseService: RemoveMemberUseCaseService,
private MessageReadAtByIdUseCaseService: MessageReadAtByIdUseCaseService,
private SendLocalMessagesUseCaseService: SendLocalMessagesUseCaseService,
private MessageMarkAsReadUseCaseService: MessageMarkAsReadUseCaseService
private MessageMarkAsReadUseCaseService: MessageMarkAsReadUseCaseService,
private SocketConnectUseCaseService: SocketConnectUseCaseService
) {
this.messageLiveSignalRDataSourceService.getMessageDelete()
.pipe()
@@ -123,8 +125,14 @@ export class ChatServiceService {
}
async start() {
await this.chatSync()
this.SocketConnectUseCaseService.execute();
}
async chatSync() {
await this.getRoomList();
this.asyncAllRoomMessage();
await this.asyncAllRoomMessage();
}
removeMemberToRoom(data: UserRemoveListInputDTO) {
@@ -14,10 +14,8 @@ export class ListenSendMessageUseCase {
execute({roomId}: {roomId: string}) {
console.log('reciee message')
return this.MessageSocketRepositoryService.listenToMessages().pipe(
filter((message) => {
console.log(message, roomId)
return message?.requestId?.startsWith(InstanceId) && message?.roomId == roomId
}),
map(message => message)
@@ -0,0 +1,18 @@
import { Injectable } from '@angular/core';
import { MessageSocketRepositoryService } from 'src/app/module/chat/data/repository/message/message-live-signalr-data-source.service';
@Injectable({
providedIn: 'root'
})
export class SocketConnectUseCaseService {
constructor(
private MessageSocketRepositoryService: MessageSocketRepositoryService
) { }
execute() {
return this.MessageSocketRepositoryService.connect()
}
}
@@ -8,6 +8,7 @@ import { ok } from 'neverthrow';
import { RoomLocalRepository } from '../../data/repository/room-local-repository.service';
import { SessionStore } from 'src/app/store/session.service';
import { Logger } from 'src/app/services/logger/main/service';
import { XTracerAsync, TracingType } from 'src/app/services/monitoring/opentelemetry/tracer';
@Injectable({
providedIn: 'root'
@@ -21,20 +22,27 @@ export class SyncAllRoomMessagesService {
private roomLocalDataSourceService: RoomLocalRepository,
) { }
async execute() {
@XTracerAsync({name:'SyncAllRoomMessagesService', module:'chat', bugPrint: true})
async execute(tracing?: TracingType) {
const allRooms = await this.roomLocalDataSourceService.findAll()
if(allRooms.isOk()) {
if(allRooms.value.length == 0) {
console.log('no room to sync')
tracing.addEvent('no need to sync')
} else {
console.log('sync '+ allRooms.value.length)
tracing.addEvent('total sync '+ allRooms.value.length)
}
let n =0
for(const room of allRooms.value) {
const result = await this.messageRemoteDataSourceService.getMessagesFromRoom(room.id)
const localResult = await this.messageLocalDataSourceService.getItems(room.id)
tracing.addEvent('async n '+ n)
n++
if(result.isOk()) {
const { addedItems, changedItems, deletedItems } = messageListDetermineChanges(result.value.data, localResult)
@@ -3,14 +3,14 @@ import { EntityTable } from 'Dexie';
export const MemberTableSchema = z.object({
$roomIdUserId: z.string().optional(),
id: z.string(),
id: z.string().optional(), // useless
roomId: z.string(),
wxUserId: z.number(),
wxFullName: z.string(),
wxeMail: z.string(),
userPhoto: z.string().nullable(),
joinAt: z.string(),
status: z.string(),
status: z.string().optional(), // useless
isAdmin: z.boolean()
})
@@ -65,10 +65,10 @@ export class SignalRService {
}
} catch(error) {}
this.establishConnection()
// this.establishConnection()
}
private async establishConnection() {
async establishConnection() {
// const connection = new SignalRConnection({url:'https://41e3-41-63-166-54.ngrok-free.app/api/v2/chathub'})
const connection = new SignalRConnection({url:'https://gdapi-dev.dyndns.info/stage/api/v2/chathub'})