fix server room duplication

This commit is contained in:
Peter Maquiran
2024-10-10 11:45:34 +01:00
parent cbe535899f
commit 7a7a60a333
3 changed files with 23 additions and 15 deletions
@@ -1,6 +1,5 @@
import { Injectable } from '@angular/core';
import { IMessage, MessageAttachmentSource, MessageEntity, MessageEntitySchema, } from '../../../../../core/chat/entity/message';
import { AttachmentLocalDataSource } from "src/app/module/chat/data/repository/attachment/attachment-local-repository.service";
import { z } from 'zod';
import { v4 as uuidv4 } from 'uuid';
import { InstanceId } from '../../chat-service.service';
@@ -11,8 +10,6 @@ import { err, Result } from 'neverthrow';
import { MessageMapper } from '../../mapper/messageMapper';
import { RoomType } from "src/app/core/chat/entity/group";
import { TracingType, XTracerAsync } from 'src/app/services/monitoring/opentelemetry/tracer';
import { MemberListLocalRepository } from 'src/app/module/chat/data/repository/member/member-list-local-repository.service'
import { SessionStore } from 'src/app/store/session.service';
import { MessageTable } from 'src/app/infra/database/dexie/instance/chat/schema/message';
import { MessageAttachmentFileType, MessageOutPutDataDTO } from 'src/app/core/chat/repository/dto/messageOutputDTO';
import { IMessageLocalRepository } from 'src/app/core/chat/repository/message/message-local-repository';
@@ -89,6 +89,9 @@ export class GetRoomListUseCaseService {
console.log({roomsToDelete, roomsToInsert, roomsToUpdate})
// sometime api return duplicated rooms
const insertedIds = []
if(roomsToInsert) {
const roomsToInsertEntity = GetRoomListMapper.toDomain(roomsToInsert)
for( const room of roomsToInsertEntity) {
@@ -109,13 +112,21 @@ export class GetRoomListUseCaseService {
}
} else {
const createResult = this.roomLocalDataSourceService.insert(room)
createResult.then((result) => {
if(result.isErr()) {
console.log('error', result.error)
}
})
// prevent to insert the same room due to server duplication
if(!insertedIds.find(e => room.id)) {
const createResult = this.roomLocalDataSourceService.insert(room)
insertedIds.push(room.id)
createResult.then((result) => {
if(result.isErr()) {
console.log('error', result.error)
}
})
}
}
}