mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
set bold
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
|
||||
import { DistributionTable } from "src/app/infra/database/dexie/instance/chat/schema/destribution";
|
||||
import { DistributionOutPutDTO } from "src/app/module/chat/domain/service/distribution.service";
|
||||
|
||||
export function distributionListDetermineChanges(____serverDistributions: DistributionOutPutDTO[], localDistributions: DistributionTable[], messageId: string) {
|
||||
|
||||
const serverDistribution = ____serverDistributions.map( e=> {
|
||||
return {
|
||||
...e,
|
||||
$messageIdMemberId: messageId + e.memberId
|
||||
}
|
||||
})
|
||||
|
||||
const serverDistributionMap = new Map(serverDistribution.map(distribution => [distribution.$messageIdMemberId, distribution]));
|
||||
const localDistributionMap = new Map(localDistributions.map(distribution => [distribution.$messageIdMemberId, distribution]));
|
||||
|
||||
const distributionToInsert = serverDistribution.filter(distribution => !localDistributionMap.has(distribution.$messageIdMemberId));
|
||||
const distributionToUpdate = serverDistribution.filter(distribution => {
|
||||
const localDistribution = localDistributionMap.get(distribution.$messageIdMemberId);
|
||||
return localDistribution && (
|
||||
distribution.deliverAt !== localDistribution.deliverAt ||
|
||||
distribution.readAt !== localDistribution.readAt
|
||||
)
|
||||
});
|
||||
|
||||
const distributionToDelete = localDistributions.filter(distribution => !serverDistributionMap.has(distribution.$messageIdMemberId));
|
||||
|
||||
return { distributionToInsert, distributionToUpdate, distributionToDelete };
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
import { RoomTable } from "src/app/infra/database/dexie/instance/chat/schema/room";
|
||||
import { RoomByIdOutputDTO } from "src/app/module/chat/domain/use-case/room/room-get-by-id-use-case.service";
|
||||
import { RoomListItemOutPutDTO } from "src/app/module/chat/domain/use-case/room/room-get-list-use-case.service";
|
||||
|
||||
export function roomByIdDetermineChanges(serverResponse: RoomByIdOutputDTO, localRooms: RoomTable[]) {
|
||||
|
||||
const localRoomMap = new Map(localRooms.map(room => [room.id, room]));
|
||||
|
||||
let roomsToInsert:RoomByIdOutputDTO | undefined;
|
||||
let roomsToUpdate: RoomByIdOutputDTO | undefined;
|
||||
|
||||
const fond = localRooms.filter(room => !localRoomMap.has(serverResponse.data.id));
|
||||
if(!fond) {
|
||||
roomsToInsert = serverResponse
|
||||
}
|
||||
|
||||
const needToUpdate = localRooms.filter(room => {
|
||||
const localRoom = localRoomMap.get(room.id);
|
||||
return localRoom && (
|
||||
room.roomName !== serverResponse.data.roomName ||
|
||||
room.createdBy.wxUserId !== serverResponse.data.createdBy.wxUserId ||
|
||||
room.createdAt !== serverResponse.data.createdAt ||
|
||||
room.expirationDate !== serverResponse.data.expirationDate // ||
|
||||
// room.chatRoom.roomType !== localRoom.roomType
|
||||
);
|
||||
});
|
||||
|
||||
if(needToUpdate) {
|
||||
roomsToUpdate = serverResponse
|
||||
}
|
||||
|
||||
return { roomsToInsert, roomsToUpdate };
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
import { RoomType } from "src/app/core/chat/entity/group";
|
||||
import { RoomTable } from "src/app/infra/database/dexie/instance/chat/schema/room";
|
||||
import { RoomListItemOutPutDTO } from "src/app/module/chat/domain/use-case/room/room-get-list-use-case.service";
|
||||
|
||||
@@ -8,8 +9,9 @@ export function roomListDetermineChanges(serverRooms: RoomListItemOutPutDTO[], l
|
||||
const roomsToInsert = serverRooms.filter(room => !localRoomMap.has(room.chatRoom.id));
|
||||
const roomsToUpdate = serverRooms.filter(room => {
|
||||
const localRoom = localRoomMap.get(room.chatRoom.id);
|
||||
|
||||
return localRoom && (
|
||||
room.chatRoom.roomName !== localRoom.roomName ||
|
||||
room.chatRoom.roomName !== localRoom.roomName && room.chatRoom.roomType == RoomType.Group ||
|
||||
room.chatRoom.createdBy.wxUserId !== localRoom.createdBy.wxUserId ||
|
||||
room.chatRoom.createdAt !== localRoom.createdAt ||
|
||||
room.chatRoom.expirationDate !== localRoom.expirationDate // ||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { from } from "rxjs";
|
||||
import { DexieRepository } from "src/app/infra/repository/dexie/dexie-repository.service";
|
||||
import { Dexie, EntityTable, liveQuery, Observable } from 'Dexie';
|
||||
import { BoldTable, BoldTableSchema } from "src/app/infra/database/dexie/instance/chat/schema/bold";
|
||||
import { chatDatabase } from "src/app/infra/database/dexie/service";
|
||||
import { IBoldLocalRepository } from "src/app/core/chat/repository/bold/bold-local-repository";
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class BoldLocalRepository extends DexieRepository<BoldTable, BoldTable> implements IBoldLocalRepository {
|
||||
constructor() {
|
||||
super(chatDatabase.bold, BoldTableSchema)
|
||||
}
|
||||
|
||||
listen() {
|
||||
return from(liveQuery(() => chatDatabase.bold.toArray()))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { DistributionTable, DistributionTableSchema } from "src/app/infra/database/dexie/instance/chat/schema/destribution";
|
||||
import { chatDatabase } from "src/app/infra/database/dexie/service";
|
||||
import { DexieRepository } from "src/app/infra/repository/dexie/dexie-repository.service";
|
||||
|
||||
|
||||
export class DistributionLocalRepository extends DexieRepository<DistributionTable, DistributionTable> {
|
||||
constructor() {
|
||||
super(chatDatabase.distribution, DistributionTableSchema)
|
||||
|
||||
chatDatabase.distribution.hook("creating", function (primKey, obj, transaction) {
|
||||
obj.$messageIdMemberId = `${obj.messageId}${obj.memberId}`
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user