Files
doneit-web/src/app/module/chat/data/async/socket/message-async.service.ts
T

58 lines
1.9 KiB
TypeScript
Raw Normal View History

2024-07-11 10:28:21 +01:00
import { Injectable } from '@angular/core';
import { MessageLiveDataSourceService } from '../../data-source/message/message-live-data-source.service';
2024-07-16 14:15:58 +01:00
import { IncomingMessageSchema, MessageLocalDataSourceService } from '../../data-source/message/message-local-data-source.service';
2024-07-11 10:28:21 +01:00
import { MessageRemoteDataSourceService } from '../../data-source/message/message-remote-data-source.service';
import { SignalRService } from '../../../infra/socket/signal-r.service';
import { filter } from 'rxjs/operators';
import { InstanceId } from '../../repository/message-respository.service';
2024-07-16 14:15:58 +01:00
import { SafeValidateSchema } from 'src/app/services/decorators/validate-schema.decorator';
2024-07-11 10:28:21 +01:00
@Injectable({
providedIn: 'root'
})
export class MessageAsyncService {
constructor(
private messageRemoteDataSourceService: MessageRemoteDataSourceService,
private messageLiveDataSourceService: MessageLiveDataSourceService,
private messageLiveSignalRDataSourceService: SignalRService,
private messageLocalDataSourceService: MessageLocalDataSourceService
) {
this.messageLiveSignalRDataSourceService.getMessage().pipe(
filter((message: any) => {
return !message?.requestId?.startsWith(InstanceId) && message?.requestId
})
).subscribe(async (message: any) => {
console.log('message async ', message)
2024-07-16 14:15:58 +01:00
const id = message.id + ''
2024-07-11 10:28:21 +01:00
delete message.id;
2024-07-16 14:15:58 +01:00
const incomingMessage = {
...message,
2024-07-11 12:12:43 +01:00
messageId: id,
sending: false,
2024-07-16 14:15:58 +01:00
roomId:message.chatRoomId
}
2024-07-11 10:28:21 +01:00
2024-07-16 14:15:58 +01:00
this.incomingMessage(incomingMessage)
2024-07-11 10:28:21 +01:00
})
}
2024-07-16 14:15:58 +01:00
@SafeValidateSchema(IncomingMessageSchema, 'socket/incomingMessage')
async incomingMessage(IncomingMessageSchema: any) {
const result = await this.messageLocalDataSourceService.sendMessage(IncomingMessageSchema)
if(result.isOk()) {
} else {
console.log(result.error)
}
}
2024-07-11 10:28:21 +01:00
}