mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
fix chat
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import { RoomListItemOutPutDTO, RoomListOutPutDTO } from "../../../dto/room/roomListOutputDTO";
|
||||
|
||||
export function messageListDetermineChanges(serverList: any[], localList: any[]) {
|
||||
|
||||
localList = localList.filter(e => e.id)
|
||||
// Convert lists to dictionaries for easier comparison
|
||||
const localDict = localList.reduce((acc, item) => {
|
||||
acc[item.id] = item;
|
||||
|
||||
@@ -8,20 +8,19 @@ import { MemberListUPdateStatusInputDTO } from '../../../domain/use-case/socket/
|
||||
import { MemberTable } from '../../../infra/database/dexie/schema/members';
|
||||
import { chatDatabase } from '../../../infra/database/dexie/service';
|
||||
import { RoomTable, RoomTableSchema } from '../../../infra/database/dexie/schema/room';
|
||||
import { DexieRepository } from 'src/app/infra/repository/dexie/dexie-repository.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class RoomLocalDataSourceService {
|
||||
|
||||
|
||||
constructor() {}
|
||||
|
||||
|
||||
async removeUserTyping() {
|
||||
export class RoomLocalDataSourceService extends DexieRepository<RoomTable> {
|
||||
|
||||
constructor() {
|
||||
super(chatDatabase.room, RoomTableSchema)
|
||||
}
|
||||
|
||||
async removeUserTyping() {}
|
||||
|
||||
@ValidateSchema(RoomTableSchema)
|
||||
async createRoom(data: RoomTable) {
|
||||
try {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { MessageAttachmentFileType, MessageAttachmentSource } from "./messageOut
|
||||
export const MessageInputDTOSchema = z.object({
|
||||
roomId: z.string().uuid(),
|
||||
senderId: z.number(),
|
||||
message: z.string(),
|
||||
message: z.string().nullable().optional(),
|
||||
messageType: z.number(),
|
||||
canEdit: z.boolean(),
|
||||
oneShot: z.boolean(),
|
||||
|
||||
@@ -21,7 +21,7 @@ export const MessageOutPutDataDTOSchema = z.object({
|
||||
wxeMail: z.string(),
|
||||
userPhoto: z.string().optional()
|
||||
}),
|
||||
message: z.string().nullable(),
|
||||
message: z.string().nullable().optional(),
|
||||
messageType: z.number(),
|
||||
sentAt: z.string(),
|
||||
canEdit: z.boolean(),
|
||||
|
||||
@@ -32,7 +32,7 @@ export class MessageRepositoryService {
|
||||
|
||||
async createMessageLocally(entity: MessageEntity) {
|
||||
//const requestId = InstanceId +'@'+ uuidv4();
|
||||
|
||||
|
||||
const localActionResult = await this.messageLocalDataSourceService.sendMessage(entity)
|
||||
|
||||
return localActionResult.map(e => {
|
||||
@@ -112,8 +112,6 @@ export class MessageRepositoryService {
|
||||
|
||||
const { addedItems, changedItems, deletedItems } = messageListDetermineChanges(result.value.data, localResult)
|
||||
|
||||
console.log({addedItems, changedItems});
|
||||
|
||||
for(const message of changedItems) {
|
||||
let clone: MessageTable = message
|
||||
clone.roomId = id
|
||||
@@ -123,16 +121,16 @@ export class MessageRepositoryService {
|
||||
for(const message of addedItems) {
|
||||
let clone: MessageTable = message
|
||||
clone.roomId = id
|
||||
|
||||
}
|
||||
|
||||
this.messageLocalDataSourceService.createManyMessage(addedItems.reverse())
|
||||
|
||||
|
||||
for(const message of deletedItems) {
|
||||
this.messageLocalDataSourceService.deleteByMessageId(message.id)
|
||||
}
|
||||
|
||||
|
||||
return ok(addedItems)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -12,11 +12,9 @@ import { RoomUpdateInputDTO } from '../dto/room/roomUpdateInputDTO';
|
||||
import { SessionStore } from 'src/app/store/session.service';
|
||||
import { RoomLiveDataSourceService } from '../data-source/room/room-live-data-source.service';
|
||||
import { isHttpResponse } from 'src/app/services/http.service';
|
||||
import { MessageLiveDataSourceService } from '../data-source/message/message-live-data-source.service';
|
||||
import { MemberListUPdateStatusInputDTO } from '../../domain/use-case/socket/member-list-update-status-use-case.service';
|
||||
import { MemberSetAdminDTO } from '../../domain/use-case/member-admin-use-case.service';
|
||||
import { MemberListMapper } from '../../domain/mapper/memberLIstMapper';
|
||||
import { SignalRService } from '../../infra/socket/signal-r.service';
|
||||
|
||||
|
||||
function date(isoDateString) {
|
||||
@@ -91,6 +89,11 @@ export class RoomRepositoryService {
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
async getRoomList() {
|
||||
return await this.roomLocalDataSourceService.getRoomList()
|
||||
}
|
||||
|
||||
@captureAndReraiseAsync('RoomRepositoryService/updateRoomBy')
|
||||
async updateRoomBy(data: RoomUpdateInputDTO) {
|
||||
|
||||
@@ -293,4 +296,14 @@ export class RoomRepositoryService {
|
||||
getRoomMemberNoneAdminByIdLive(roomId) {
|
||||
return this.roomLocalDataSourceService.getRoomMemberNoneAdminByIdLive(roomId)
|
||||
}
|
||||
|
||||
|
||||
get find() {
|
||||
return this.roomLocalDataSourceService.find
|
||||
}
|
||||
|
||||
get findAll() {
|
||||
return this.roomLocalDataSourceService.findAll
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user