mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
send direct message
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { MessageTable } from "src/app/module/chat/infra/database/dexie/schema/message";
|
||||
import { RoomListItemOutPutDTO, RoomListOutPutDTO } from "../../../dto/room/roomListOutputDTO";
|
||||
|
||||
export function messageListDetermineChanges(serverList: any[], localList: any[]) {
|
||||
export function messageListDetermineChanges(serverList: MessageTable[], localList: MessageTable[]) {
|
||||
|
||||
localList = localList.filter(e => e.id)
|
||||
// Convert lists to dictionaries for easier comparison
|
||||
|
||||
@@ -34,7 +34,11 @@ export const MessageOutPutDataDTOSchema = z.object({
|
||||
reaction: z.string(),
|
||||
sender: z.object({}),
|
||||
}).array(),
|
||||
info: z.array(z.object({})),
|
||||
info: z.array(z.object({
|
||||
memberId: z.number(),
|
||||
readAt: z.string().nullable(),
|
||||
deliverAt: z.string().nullable()
|
||||
})),
|
||||
attachments: z.array(z.object({
|
||||
fileType: z.nativeEnum(MessageAttachmentFileType),
|
||||
source: z.nativeEnum(MessageAttachmentSource),
|
||||
|
||||
@@ -8,38 +8,41 @@ import { chatDatabase } from '../../infra/database/dexie/service';
|
||||
import { ok } from 'neverthrow';
|
||||
import { err, Result } from 'neverthrow';
|
||||
import { MemberListUPdateStatusInputDTO } from '../../domain/use-case/socket/member-list-update-status-use-case.service';
|
||||
import { MemberTable } from '../../infra/database/dexie/schema/members';
|
||||
import { MemberTable, MemberTableSchema } from '../../infra/database/dexie/schema/members';
|
||||
import { from } from 'rxjs';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class MemberListLocalRepository extends DexieRepository<RoomTable> {
|
||||
export class MemberListLocalRepository extends DexieRepository<MemberTable> {
|
||||
|
||||
constructor() {
|
||||
super(chatDatabase.room, RoomTableSchema)
|
||||
super(chatDatabase.members, MemberTableSchema)
|
||||
}
|
||||
|
||||
// messageDataSource.message.hook('creating', (primKey, obj, trans) => {
|
||||
// // const newMessage = await trans.table('message').get(primKey);
|
||||
// this.messageSubject.next(obj);
|
||||
// // return newMessage
|
||||
// })
|
||||
|
||||
async directMember({roomId, currentUserId}) {
|
||||
try {
|
||||
let a = await chatDatabase.members.where('roomId')
|
||||
.equals(roomId)
|
||||
.and(message => message.wxUserId !== currentUserId)
|
||||
.first()
|
||||
|
||||
return ok(a)
|
||||
} catch (e) {
|
||||
return err(e)
|
||||
}
|
||||
}
|
||||
|
||||
async addMember(data: MemberTable) {
|
||||
try {
|
||||
data.$roomIdUserId = data.roomId + data.wxUserId
|
||||
const result = await chatDatabase.members.add(data)
|
||||
return ok(result)
|
||||
} catch (e) {
|
||||
return err(false)
|
||||
}
|
||||
data.$roomIdUserId = data.roomId + data.wxUserId
|
||||
return this.insert(data)
|
||||
}
|
||||
|
||||
async updateMemberRole(data: MemberTable) {
|
||||
try {
|
||||
const result = await chatDatabase.members.where({
|
||||
wxUserId:data.wxUserId,
|
||||
wxUserId: data.wxUserId,
|
||||
roomId: data.roomId,
|
||||
}).modify(data);
|
||||
|
||||
@@ -100,19 +103,11 @@ export class MemberListLocalRepository extends DexieRepository<RoomTable> {
|
||||
return liveQuery(() => chatDatabase.members.get($roomIdUserId)) as any;
|
||||
}
|
||||
|
||||
getItemsLive(): Observable<RoomListOutPutDTO[]> {
|
||||
return liveQuery(() => chatDatabase.room.toArray()) as any;
|
||||
}
|
||||
|
||||
getRoomByIdLive(id: any): Observable<RoomListItemOutPutDTO | undefined> {
|
||||
return liveQuery(() => chatDatabase.room.get(id)) as any;
|
||||
}
|
||||
|
||||
async getRoomMemberById(roomId: any) {
|
||||
return await chatDatabase.members.where({roomId}).toArray()
|
||||
}
|
||||
getRoomMemberByIdLive(roomId: any) {
|
||||
return liveQuery(() => chatDatabase.members.where({roomId}).toArray())
|
||||
return from (liveQuery(() => chatDatabase.members.where({roomId}).toArray()))
|
||||
}
|
||||
|
||||
getRoomMemberNoneAdminByIdLive(roomId: any) {
|
||||
|
||||
+36
-2
@@ -19,6 +19,22 @@ interface msgObj {
|
||||
requestId: string;
|
||||
}
|
||||
|
||||
interface sendDeliverAt {
|
||||
memberId: number,
|
||||
messageId:string,
|
||||
roomId: string,
|
||||
requestId: string
|
||||
}
|
||||
|
||||
|
||||
export interface sendReadAt {
|
||||
memberId: number,
|
||||
messageId:string,
|
||||
roomId: string,
|
||||
requestId: string
|
||||
}
|
||||
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
@@ -48,6 +64,24 @@ export class MessageSocketRepositoryService {
|
||||
return result;
|
||||
}
|
||||
|
||||
async sendDeliverAt(data: sendDeliverAt) {
|
||||
const result = await this.socket.sendData<any>({
|
||||
method: 'DeliverAt',
|
||||
data: data as any,
|
||||
})
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
async sendReadAt(data: sendReadAt) {
|
||||
const result = await this.socket.sendData<any>({
|
||||
method: 'ReadAt',
|
||||
data: data as any,
|
||||
})
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
listenToMessages() {
|
||||
return this.socket.getMessage()
|
||||
}
|
||||
@@ -62,7 +96,7 @@ export class MessageSocketRepositoryService {
|
||||
return this.socket.getMessageUpdate()
|
||||
}
|
||||
|
||||
|
||||
|
||||
reactToMessageSocket(data) {
|
||||
this.socket.sendData({
|
||||
method: 'ReactMessage',
|
||||
@@ -94,6 +128,6 @@ export class MessageSocketRepositoryService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import { ValidateSchema } from 'src/app/services/decorators/validate-schema.deco
|
||||
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';
|
||||
import { from } from 'rxjs';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -81,7 +82,7 @@ export class RoomLocalRepository extends DexieRepository<RoomTable> {
|
||||
|
||||
|
||||
getItemsLive(){
|
||||
return liveQuery(() => chatDatabase.room.toArray());
|
||||
return from (liveQuery(() => chatDatabase.room.toArray()));
|
||||
}
|
||||
|
||||
getRoomByIdLive(id: any) {
|
||||
|
||||
Reference in New Issue
Block a user