mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-20 05:16:07 +00:00
38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
|
|
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})
|
||
|
|
}
|
||
|
|
|
||
|
|
});
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|