import { Injectable } from '@angular/core'; import { filter, map } from 'rxjs/operators'; import { IMessageSocketRepository } from 'src/app/core/chat/repository/message/message-socket-repository'; import { InstanceId } from '../chat-service.service'; import { MessageEntity } from 'src/app/core/chat/entity/message'; import { IBoldLocalRepository } from 'src/app/core/chat/repository/bold/bold-local-repository'; @Injectable({ providedIn: 'root' }) export class BoldService { constructor( private MessageSocketRepositoryService: IMessageSocketRepository, private boldLocalRepository: IBoldLocalRepository ) { this.listenToIncomingMessage(); } listenToIncomingMessage() { return this.MessageSocketRepositoryService.listenToMessages().pipe( filter((message) => !message?.requestId?.startsWith(InstanceId)), map(message => Object.assign(new MessageEntity(), message)) ).subscribe(async (message) => { const result = await this.boldLocalRepository.findOne({roomId: message.roomId}) if(result.isOk() && !result.value) { const result = await this.boldLocalRepository.insert({roomId: message.roomId, bold: 1}) } else if(result.isOk() && result.value.bold == 0) { const result = await this.boldLocalRepository.update(message.roomId, {bold: 1}) } }); } }