mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
soft delete
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { z } from "zod";
|
||||
import { MessageAttachmentFileType, MessageAttachmentSource } from "../../data/dto/message/messageOutputDTO";
|
||||
import { MessageAttachmentFileType, MessageAttachmentSource } from "../../../module/chat/data/dto/message/messageOutputDTO";
|
||||
import { SafeResourceUrl } from "@angular/platform-browser";
|
||||
import { base64Schema } from "src/app/utils/zod";
|
||||
|
||||
@@ -5,4 +5,4 @@ export interface sendReadAtInput {
|
||||
messageId:string,
|
||||
roomId: string,
|
||||
requestId: string
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import { Logger } from 'src/app/services/logger/main/service';
|
||||
// Define a type for the Result of repository operations
|
||||
type RepositoryResult<T, E> = Result<T, Error | ZodError<E>>;
|
||||
|
||||
export class DexieRepository<T> {
|
||||
export class DexieRepository<T, R> {
|
||||
private table: EntityTable<any, any>;
|
||||
private ZodSchema: ZodSchema<T>
|
||||
private ZodPartialSchema: ZodSchema<T>
|
||||
@@ -94,17 +94,16 @@ export class DexieRepository<T> {
|
||||
}
|
||||
}
|
||||
|
||||
async find(filter: Object): Promise<RepositoryResult<T[], T[]>> {
|
||||
async find(filter: Partial<T>): Promise<RepositoryResult<R[], T[]>> {
|
||||
try {
|
||||
const documents: any = await this.table.where(filter).toArray();
|
||||
console.log('documents', {documents})
|
||||
return ok(documents);
|
||||
} catch (error) {
|
||||
return err(new Error('Failed to find documents: ' + error.message));
|
||||
}
|
||||
}
|
||||
|
||||
async findOne(filter: Object): Promise<RepositoryResult<T | undefined, T>> {
|
||||
async findOne(filter: Partial<T>): Promise<RepositoryResult<T | undefined, T>> {
|
||||
try {
|
||||
const document = await this.table.where(filter).first();
|
||||
return ok(document);
|
||||
|
||||
@@ -54,7 +54,7 @@ export class ChatModule {
|
||||
this.typingCallback[id].next()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
async syncMessage() {
|
||||
@@ -72,7 +72,7 @@ export class ChatModule {
|
||||
connection.subscribe((value: boolean) => {
|
||||
if(value) {
|
||||
// on connect
|
||||
// this.ChatServiceService.sendLocalMessages()
|
||||
this.ChatServiceService.sendLocalMessages()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@ import { AttachmentTable, AttachmentTableSchema } from '../../infra/database/dex
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class AttachmentLocalDataSource extends DexieRepository<AttachmentTable> {
|
||||
export class AttachmentLocalDataSource extends DexieRepository<AttachmentTable, AttachmentTable> {
|
||||
|
||||
messageSubject = new Subject();
|
||||
|
||||
constructor() {
|
||||
super(chatDatabase.attachment, AttachmentTableSchema)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import { from } from 'rxjs';
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class MemberListLocalRepository extends DexieRepository<MemberTable> {
|
||||
export class MemberListLocalRepository extends DexieRepository<MemberTable, MemberTable> {
|
||||
|
||||
constructor() {
|
||||
super(chatDatabase.members, MemberTableSchema)
|
||||
@@ -35,13 +35,6 @@ export class MemberListLocalRepository extends DexieRepository<MemberTable> {
|
||||
async addMember(data: MemberTable) {
|
||||
data.$roomIdUserId = data.roomId + data.wxUserId
|
||||
return this.insert(data)
|
||||
// try {
|
||||
// data.$roomIdUserId = data.roomId + data.wxUserId
|
||||
// const result = await chatDatabase.members.add(data)
|
||||
// return ok(result)
|
||||
// } catch (e) {
|
||||
// return err(false)
|
||||
// }
|
||||
}
|
||||
|
||||
async updateMemberRole(data: MemberTable) {
|
||||
@@ -85,15 +78,11 @@ export class MemberListLocalRepository extends DexieRepository<MemberTable> {
|
||||
|
||||
async removeMemberFromRoom($roomIdUserId): Promise<Result<any ,any>> {
|
||||
try {
|
||||
|
||||
const member = await chatDatabase.members.where({ $roomIdUserId: $roomIdUserId }).first();
|
||||
|
||||
if (member) {
|
||||
const result = ok(await chatDatabase.members.delete($roomIdUserId));
|
||||
console.log(`Member with $roomIdUserId ${$roomIdUserId} removed from room ${member.roomId}.`);
|
||||
return result
|
||||
} else {
|
||||
console.log(`No member found with $roomIdUserId ${$roomIdUserId}`);
|
||||
return err('not Found')
|
||||
}
|
||||
|
||||
|
||||
+9
@@ -55,6 +55,11 @@ export class MessageSocketRepositoryService {
|
||||
|
||||
|
||||
async sendGroupMessage(data: MessageInputDTO) {
|
||||
|
||||
if(data['requestId']) {
|
||||
data['requestId'] = InstanceId +'@'+ uuidv4();
|
||||
}
|
||||
|
||||
const result = await this.socket.sendData<MessageOutPutDataDTO>({
|
||||
method: 'sendMessage',
|
||||
data: data,
|
||||
@@ -64,6 +69,10 @@ export class MessageSocketRepositoryService {
|
||||
}
|
||||
|
||||
async sendDirectMessage(data: MessageInputDTO) {
|
||||
|
||||
if(data['requestId']) {
|
||||
data['requestId'] = InstanceId +'@'+ uuidv4();
|
||||
}
|
||||
const result = await this.socket.sendData<MessageOutPutDataDTO>({
|
||||
method: 'SendDirectMessage',
|
||||
data: data as any,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { liveQuery } from 'Dexie';
|
||||
import { err, ok, Result } from 'neverthrow';
|
||||
import { Observable, Subject } from 'rxjs';
|
||||
import { filter } from 'rxjs/operators';
|
||||
import { MessageEntity } from '../../../domain/entity/message';
|
||||
import { MessageEntity } from '../../../../../core/chat/entity/message';
|
||||
import { DexieRepository } from 'src/app/infra/repository/dexie/dexie-repository.service';
|
||||
import { MessageTable, MessageTableSchema } from 'src/app/module/chat/infra/database/dexie/schema/message';
|
||||
import { chatDatabase } from '../../../infra/database/dexie/service';
|
||||
@@ -12,7 +12,7 @@ import { Observable as DexieObservable, PromiseExtended } from 'Dexie';
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class MessageLocalDataSourceService extends DexieRepository<MessageTable> {
|
||||
export class MessageLocalDataSourceService extends DexieRepository<MessageTable, MessageEntity> {
|
||||
|
||||
messageSubject = new Subject();
|
||||
|
||||
@@ -28,7 +28,6 @@ export class MessageLocalDataSourceService extends DexieRepository<MessageTable>
|
||||
// Perform the update operation within the transaction
|
||||
await chatDatabase.message.toCollection().modify({ sending: false });
|
||||
});
|
||||
console.log('All messages updated successfully.');
|
||||
} catch (error) {
|
||||
console.error('Error updating messages:', error);
|
||||
}
|
||||
@@ -49,7 +48,7 @@ export class MessageLocalDataSourceService extends DexieRepository<MessageTable>
|
||||
}
|
||||
}
|
||||
|
||||
async deleteByMessageId(id: string): Promise<Result<undefined|MessageTable, any>> {
|
||||
async deleteByMessageId(id: string): Promise<Result<undefined|number, any>> {
|
||||
try {
|
||||
console.log(id)
|
||||
const lastMessage = await chatDatabase.message
|
||||
@@ -197,10 +196,6 @@ export class MessageLocalDataSourceService extends DexieRepository<MessageTable>
|
||||
.filter(msg => typeof msg.id !== 'string' && msg.sending == false)
|
||||
.toArray();
|
||||
|
||||
|
||||
console.log("======================================================================")
|
||||
console.log({localMessage:allMessages})
|
||||
|
||||
return allMessages as MessageEntity[];
|
||||
} catch (error) {
|
||||
console.error('Error fetching messages:', error);
|
||||
|
||||
@@ -12,7 +12,7 @@ import { from } from 'rxjs';
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class RoomLocalRepository extends DexieRepository<RoomTable> {
|
||||
export class RoomLocalRepository extends DexieRepository<RoomTable, RoomTable> {
|
||||
|
||||
constructor() {
|
||||
super(chatDatabase.room, RoomTableSchema)
|
||||
|
||||
@@ -32,13 +32,13 @@ import { GetMessageAttachmentLocallyUseCaseService } from 'src/app/module/chat/d
|
||||
import { GetRoomListUseCaseService } from 'src/app/module/chat/domain/use-case/room-get-list-use-case.service';
|
||||
import { filter } from 'rxjs/operators';
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { MessageEntity } from './entity/message';
|
||||
import { MessageEntity } from '../../../core/chat/entity/message';
|
||||
import { MessageAttachmentByMessageIdInput, MessageAttachmentByMessageIdUseCase } from './use-case/message-attachment-by-message-id.service';
|
||||
import { RoomInputDTO } from '../data/dto/room/roomInputDTO';
|
||||
import { UserRemoveListInputDTO } from '../data/dto/room/userRemoveListInputDTO';
|
||||
import { AddMemberToRoomInputDTO } from '../data/dto/room/addMemberToRoomInputDto';
|
||||
import { RoomUpdateInputDTO } from '../data/dto/room/roomUpdateInputDTO';
|
||||
import { RoomType } from "src/app/module/chat/domain/entity/group";
|
||||
import { RoomType } from "src/app/core/chat/entity/group";
|
||||
import { sendReadAt } from "src/app/module/chat/data/repository/message/message-live-signalr-data-source.service";
|
||||
|
||||
export const InstanceId = uuidv4();
|
||||
@@ -128,7 +128,7 @@ export class ChatServiceService {
|
||||
|
||||
async start() {
|
||||
await this.chatSync()
|
||||
this.SocketConnectUseCaseService.execute();
|
||||
await this.SocketConnectUseCaseService.execute();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { MessageInputDTO } from "../../data/dto/message/messageInputDtO";
|
||||
import { MessageOutPutDataDTO } from "../../data/dto/message/messageOutputDTO";
|
||||
import { MessageEntity } from "../entity/message";
|
||||
import { MessageEntity } from "../../../../core/chat/entity/message";
|
||||
|
||||
export class MessageMapper {
|
||||
static toDomain(DTO: MessageOutPutDataDTO) : MessageEntity {
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Injectable } from '@angular/core';
|
||||
import { filter, map } from 'rxjs/operators';
|
||||
import { InstanceId } from '../chat-service.service';
|
||||
import { MessageSocketRepositoryService } from 'src/app/module/chat/data/repository/message/message-live-signalr-data-source.service'
|
||||
import { MessageEntity } from '../entity/message';
|
||||
import { MessageEntity } from '../../../../core/chat/entity/message';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@@ -5,7 +5,7 @@ import { AttachmentLocalDataSource } from 'src/app/module/chat/data/repository/a
|
||||
import { convertBlobToDataURL } from 'src/app/utils/ToBase64';
|
||||
import { Result } from 'neverthrow';
|
||||
import { Logger } from 'src/app/services/logger/main/service';
|
||||
import { MessageEntity } from '../entity/message';
|
||||
import { MessageEntity } from '../../../../core/chat/entity/message';
|
||||
|
||||
const MessageAttachmentByMessageIdSchema = z.object({
|
||||
$messageId: z.number(),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MessageEntity, MessageEntitySchema, } from '../entity/message';
|
||||
import { MessageEntity, MessageEntitySchema, } from '../../../../core/chat/entity/message';
|
||||
import { AttachmentLocalDataSource } from "src/app/module/chat/data/repository/attachment-local-repository.service";
|
||||
import { z } from 'zod';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
@@ -13,8 +13,7 @@ import { MessageSocketRepositoryService } from '../../data/repository/message/me
|
||||
import { err, Result } from 'neverthrow';
|
||||
import { MessageTable } from '../../infra/database/dexie/schema/message';
|
||||
import { MessageMapper } from '../mapper/messageMapper';
|
||||
import { SignalRService } from '../../infra/socket/signal-r.service';
|
||||
import { RoomType } from "src/app/module/chat/domain/entity/group";
|
||||
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-list-local-repository.service'
|
||||
import { SessionStore } from 'src/app/store/session.service';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MessageEntity } from '../entity/message';
|
||||
import { MessageEntity } from '../../../../core/chat/entity/message';
|
||||
import { z } from 'zod';
|
||||
|
||||
const MessageInputUseCaseSchema = z.object({
|
||||
@@ -23,7 +23,7 @@ export class MessageCreateUseCaseService {
|
||||
// const result = await this.MessageRepositoryService.(input)
|
||||
|
||||
// if(result.isOk()) {
|
||||
|
||||
|
||||
// }
|
||||
|
||||
// return result
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { MessageLocalDataSourceService } from '../../data/repository/message/message-local-data-source.service';
|
||||
import { MessageSocketRepositoryService } from '../../data/repository/message/message-live-signalr-data-source.service';
|
||||
import { MessageOutPutDataDTO } from '../../data/dto/message/messageOutputDTO';
|
||||
import { MessageTable } from '../../infra/database/dexie/schema/message';
|
||||
import { SignalRService } from '../../infra/socket/signal-r.service';
|
||||
import { InstanceId } from '../chat-service.service';
|
||||
import { MessageMapper } from '../mapper/messageMapper';
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { AttachmentLocalDataSource } from '../../data/repository/attachment-local-repository.service';
|
||||
import { RoomLocalRepository } from '../../data/repository/room/room-local-repository.service';
|
||||
import { MemberListLocalRepository } from 'src/app/module/chat/data/repository/member-list-local-repository.service'
|
||||
import { Result } from 'neverthrow';
|
||||
import { RoomType } from 'src/app/core/chat/entity/group';
|
||||
import { SessionStore } from 'src/app/store/session.service';
|
||||
import { MessageOutPutDataDTO } from '../../data/dto/message/messageOutputDTO';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -18,19 +22,27 @@ export class SendLocalMessagesUseCaseService {
|
||||
private MessageSocketRepositoryService: MessageSocketRepositoryService,
|
||||
private messageLocalDataSourceService: MessageLocalDataSourceService,
|
||||
private AttachmentRepositoryService: AttachmentLocalDataSource,
|
||||
private roomLocalDataSourceService: RoomLocalRepository,
|
||||
private MemberListLocalRepository: MemberListLocalRepository,
|
||||
private messageSocketRepositoryService: MessageSocketRepositoryService,
|
||||
) { }
|
||||
|
||||
|
||||
async execute() {
|
||||
|
||||
const allRooms = await this.roomLocalDataSourceService.findAll()
|
||||
const messages = await this.messageLocalDataSourceService.getOfflineMessages()
|
||||
|
||||
if(messages.length >= 1) {
|
||||
if(allRooms.isOk()) {
|
||||
if(allRooms.value.length == 0) {
|
||||
|
||||
for(const message of messages) {
|
||||
} else {
|
||||
|
||||
const attachments = await this.AttachmentRepositoryService.find({$messageId: message.$id})
|
||||
for(const message of messages) {
|
||||
const room = allRooms.value.find(e => e.id == message.roomId)
|
||||
|
||||
if(attachments.isOk()) {
|
||||
const attachments = await this.AttachmentRepositoryService.find({$messageId: message.$id})
|
||||
|
||||
if(attachments.isOk()) {
|
||||
|
||||
message.attachments = attachments.value.map(e => ({
|
||||
fileType: e.fileType,
|
||||
@@ -41,14 +53,37 @@ export class SendLocalMessagesUseCaseService {
|
||||
id: e.id,
|
||||
mimeType: e.mimeType,
|
||||
description: e.description,
|
||||
file: e.file.split(',')[0]
|
||||
file: e.file.split(',')[1]
|
||||
}))
|
||||
console.log('to upload', messages)
|
||||
const requestId = InstanceId +'@'+ uuidv4();
|
||||
const DTO = MessageMapper.fromDomain(message, requestId)
|
||||
|
||||
await this.messageLocalDataSourceService.update(message.$id, { sending: true })
|
||||
const sendMessageResult = await this.MessageSocketRepositoryService.sendGroupMessage(DTO)
|
||||
|
||||
let sendMessageResult: Result<MessageOutPutDataDTO, any>
|
||||
if(room.roomType == RoomType.Group) {
|
||||
const DTO = MessageMapper.fromDomain(message, message.requestId)
|
||||
sendMessageResult = await this.MessageSocketRepositoryService.sendGroupMessage(DTO)
|
||||
} else {
|
||||
|
||||
if(message.receiverId) {
|
||||
const DTO = MessageMapper.fromDomain(message, message.requestId)
|
||||
sendMessageResult = await this.messageSocketRepositoryService.sendDirectMessage(DTO)
|
||||
} else {
|
||||
const getRoomMembers = await this.MemberListLocalRepository.directMember({
|
||||
roomId:message.roomId,
|
||||
currentUserId: SessionStore.user.UserId
|
||||
})
|
||||
if(getRoomMembers.isOk()) {
|
||||
message.receiverId = getRoomMembers.value.wxUserId
|
||||
const DTO = MessageMapper.fromDomain(message, message.requestId)
|
||||
sendMessageResult = await this.messageSocketRepositoryService.sendGroupMessage(DTO)
|
||||
} else {
|
||||
console.log('not found direct users', getRoomMembers.error)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(sendMessageResult.isOk()) {
|
||||
|
||||
@@ -63,19 +98,19 @@ export class SendLocalMessagesUseCaseService {
|
||||
$id : message.$id
|
||||
}
|
||||
|
||||
clone.sending = false
|
||||
console.log({clone})
|
||||
console.log('send message local '+ messages.length)
|
||||
|
||||
this.messageLocalDataSourceService.update(message.$id, {...clone, sending: false, roomId: message.roomId})
|
||||
this.messageLocalDataSourceService.update(message.$id, {id: sendMessageResult.value.id, sending: false})
|
||||
} else {
|
||||
|
||||
console.log('erro send message', sendMessageResult.error)
|
||||
this.messageLocalDataSourceService.update(message.$id, {sending: false})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ export class SocketMessageDeleteUseCaseService {
|
||||
|
||||
|
||||
async execute(input: MessageOutPutDataDTO) {
|
||||
const result = await this.messageLocalDataSourceService.deleteByMessageId(input.id)
|
||||
const result = await this.messageLocalDataSourceService.update(input.id, { isDeleted: true})
|
||||
|
||||
if(result.isOk()) {
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ export class SocketMessageUpdateUseCaseService {
|
||||
async execute(data: MessageOutPutDataDTO, tracing?: TracingType) {
|
||||
|
||||
ParamsValidation(MessageOutPutDataDTOSchema, data, tracing)
|
||||
|
||||
tracing?.addEvent("Message existe?")
|
||||
const result = await this.messageLocalDataSourceService.messageExist({id: data.id})
|
||||
|
||||
|
||||
@@ -69,23 +69,23 @@ export class SyncAllRoomMessagesService {
|
||||
}
|
||||
}
|
||||
|
||||
for(const message of addedItems) {
|
||||
let clone: MessageTable = message
|
||||
clone.roomId = room.id
|
||||
// for(const message of addedItems) {
|
||||
// let clone: MessageTable = message
|
||||
// clone.roomId = room.id
|
||||
|
||||
const me = message.info.find(e => e.memberId == SessionStore.user.UserId && typeof e.deliverAt == 'string' )
|
||||
if(!me) {
|
||||
this.MessageSocketRepositoryService.sendDeliverAt({
|
||||
memberId: SessionStore.user.UserId,
|
||||
messageId: message.id,
|
||||
roomId: message.roomId,
|
||||
requestId: uuidv4()
|
||||
})
|
||||
// const me = message.info.find(e => e.memberId == SessionStore.user.UserId && typeof e.deliverAt == 'string' )
|
||||
// if(!me) {
|
||||
// this.MessageSocketRepositoryService.sendDeliverAt({
|
||||
// memberId: SessionStore.user.UserId,
|
||||
// messageId: message.id,
|
||||
// roomId: message.roomId,
|
||||
// requestId: uuidv4()
|
||||
// })
|
||||
|
||||
tracing.addEvent('send delever roomId'+ room.id)
|
||||
|
||||
}
|
||||
}
|
||||
// tracing.addEvent('send delever roomId'+ room.id)
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
this.messageLocalDataSourceService.createManyMessage(addedItems.reverse())
|
||||
|
||||
@@ -12,6 +12,7 @@ export const MessageTableSchema = z.object({
|
||||
oneShot: z.boolean(),
|
||||
sentAt: z.string().optional(),
|
||||
editedAt: z.string().nullable().optional(),
|
||||
isDeleted: z.boolean().optional(),
|
||||
requireUnlock: z.boolean(),
|
||||
sender: z.object({
|
||||
wxUserId: z.number(),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { z } from "zod";
|
||||
import { EntityTable } from 'Dexie';
|
||||
import { RoomType } from "src/app/module/chat/domain/entity/group";
|
||||
import { RoomType } from "src/app/core/chat/entity/group";
|
||||
|
||||
export const RoomTableSchema = z.object({
|
||||
id: z.string(),
|
||||
|
||||
@@ -4,7 +4,7 @@ import { DexieMessageTable, messageTableColumn, MessageTable } from './schema/me
|
||||
import { DexieMembersTableSchema, MemberTableColumn } from './schema/members';
|
||||
import { DexieRoomsTable, RoomTableColumn } from './schema/room';
|
||||
import { DexieTypingsTable, TypingTableColumn } from './schema/typing';
|
||||
import { MessageEntity } from '../../../domain/entity/message';
|
||||
import { MessageEntity } from '../../../../../core/chat/entity/message';
|
||||
import { AttachmentTableColumn, DexieAttachmentsTableSchema } from './schema/attachment';
|
||||
// import FDBFactory from 'fake-indexeddb/lib/FDBFactory';
|
||||
// import FDBKeyRange from 'fake-indexeddb/lib/FDBKeyRange';
|
||||
@@ -31,4 +31,4 @@ chatDatabase.version(1).stores({
|
||||
});
|
||||
|
||||
chatDatabase.message.mapToClass(MessageEntity)
|
||||
// Apply in-memory storage
|
||||
// Apply in-memory storage
|
||||
|
||||
@@ -9,9 +9,9 @@ import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
|
||||
import { ToastService } from 'src/app/services/toast.service';
|
||||
import { SessionStore } from 'src/app/store/session.service';
|
||||
import { MessageEnum } from 'src/app/module/chat/domain/use-case/message-create-use-case.service';
|
||||
import { MessageEntity } from 'src/app/module/chat/domain/entity/message';
|
||||
import { MessageEntity } from 'src/app/core/chat/entity/message';
|
||||
// import { ChatSystemService } from 'src/app/services/chat/chat-system.service'
|
||||
import { RoomType } from "src/app/module/chat/domain/entity/group";
|
||||
import { RoomType } from "src/app/core/chat/entity/group";
|
||||
|
||||
@Component({
|
||||
selector: 'app-contacts',
|
||||
|
||||
@@ -47,8 +47,8 @@
|
||||
*ngFor="let message of messages1[roomId]; let messageIndex = index" class="messages-list-item-wrapper"
|
||||
[ngClass]="{'my-message': message.sender.wxUserId === SessionStore.user.UserId, 'other-message': message.sender.wxUserId !== SessionStore.user.UserId}"
|
||||
>
|
||||
<div class="message-container rotate-div">
|
||||
|
||||
<div class="message-container rotate-div" *ngIf="message.isDeleted != true">
|
||||
{{ message.$id }}
|
||||
<div class="d-flex justify-content-between">
|
||||
<div>
|
||||
<div>
|
||||
@@ -150,6 +150,9 @@
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="message-container rotate-div" *ngIf="message.isDeleted == true">
|
||||
Mensagem foi eliminada
|
||||
</div>
|
||||
<!-- current emoji -->
|
||||
<div class="rotate-div">
|
||||
<span *ngFor="let reaction of message.reactions" class="emoji-icon">
|
||||
|
||||
@@ -27,7 +27,7 @@ import { MemberListLocalRepository } from 'src/app/module/chat/data/repository/m
|
||||
import { MessageTable } from 'src/app/module/chat/infra/database/dexie/schema/message';
|
||||
import { ChatServiceService } from 'src/app/module/chat/domain/chat-service.service';
|
||||
import { EditMessagePage } from 'src/app/modals/edit-message/edit-message.page';
|
||||
import { MessageEntity } from 'src/app/module/chat/domain/entity/message';
|
||||
import { MessageEntity } from 'src/app/core/chat/entity/message';
|
||||
import { MemberTable } from 'src/app/module/chat/infra/database/dexie/schema/members';
|
||||
import { TypingTable } from 'src/app/module/chat/infra/database/dexie/schema/typing';
|
||||
import { MessageAttachmentFileType, MessageAttachmentSource } from 'src/app/module/chat/data/dto/message/messageOutputDTO';
|
||||
@@ -43,7 +43,7 @@ import { LastMessage } from '../../utils/lastMessage';
|
||||
import { UserTypingLocalRepository } from 'src/app/module/chat/data/repository/typing/user-typing-local-data-source.service';
|
||||
import { UserTypingRemoteRepositoryService } from 'src/app/module/chat/data/repository/typing/user-typing-live-data-source.service';
|
||||
import { MessageLocalDataSourceService } from 'src/app/module/chat/data/repository/message/message-local-data-source.service';
|
||||
import { RoomType } from "src/app/module/chat/domain/entity/group";
|
||||
import { RoomType } from "src/app/core/chat/entity/group";
|
||||
import { RoomTable } from 'src/app/module/chat/infra/database/dexie/schema/room';
|
||||
import { Logger } from 'src/app/services/logger/main/service';
|
||||
import { tap } from 'rxjs/operators';
|
||||
|
||||
@@ -7,9 +7,9 @@ import { UserContacts } from 'src/app/services/Repositorys/contacts/data-source/
|
||||
import { HttpErrorHandle } from 'src/app/services/http-error-handle.service';
|
||||
import { ToastService } from 'src/app/services/toast.service';
|
||||
import { ChatServiceService } from 'src/app/module/chat/domain/chat-service.service'
|
||||
import { MessageEntity } from 'src/app/module/chat/domain/entity/message';
|
||||
import { MessageEntity } from 'src/app/core/chat/entity/message';
|
||||
import { MessageEnum } from 'src/app/module/chat/domain/use-case/message-create-use-case.service';
|
||||
import { RoomType } from "src/app/module/chat/domain/entity/group";
|
||||
import { RoomType } from "src/app/core/chat/entity/group";
|
||||
|
||||
@Component({
|
||||
selector: 'app-contacts',
|
||||
@@ -165,7 +165,7 @@ export class ContactsPage implements OnInit {
|
||||
}
|
||||
|
||||
select(user: UserContacts) {
|
||||
|
||||
|
||||
const message = new MessageEntity();
|
||||
|
||||
message.sender = {
|
||||
@@ -180,6 +180,6 @@ export class ContactsPage implements OnInit {
|
||||
message.message = 'hello'
|
||||
|
||||
this.chatServiceService.sendMessage(message, RoomType.Group)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ import { MessageTable } from 'src/app/module/chat/infra/database/dexie/schema/me
|
||||
import { RoomListItemOutPutDTO } from 'src/app/module/chat/data/dto/room/roomListOutputDTO';
|
||||
import { ChatServiceService } from 'src/app/module/chat/domain/chat-service.service';
|
||||
import { EditMessagePage } from 'src/app/modals/edit-message/edit-message.page';
|
||||
import { MessageEntity } from 'src/app/module/chat/domain/entity/message';
|
||||
import { MessageEntity } from 'src/app/core/chat/entity/message';
|
||||
import { MemberTable } from 'src/app/module/chat/infra/database/dexie/schema/members';
|
||||
import { TypingTable } from 'src/app/module/chat/infra/database/dexie/schema/typing';
|
||||
import { MessageAttachmentFileType, MessageAttachmentSource } from 'src/app/module/chat/data/dto/message/messageOutputDTO';
|
||||
@@ -46,7 +46,7 @@ import { UserTypingLocalRepository } from 'src/app/module/chat/data/repository/t
|
||||
import { UserTypingRemoteRepositoryService } from 'src/app/module/chat/data/repository/typing/user-typing-live-data-source.service';
|
||||
import { MessageLocalDataSourceService } from 'src/app/module/chat/data/repository/message/message-local-data-source.service';
|
||||
import { MessageEnum } from 'src/app/module/chat/domain/use-case/message-create-use-case.service';
|
||||
import { RoomType } from "src/app/module/chat/domain/entity/group";
|
||||
import { RoomType } from "src/app/core/chat/entity/group";
|
||||
import { RoomTable } from 'src/app/module/chat/infra/database/dexie/schema/room';
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { SafeResourceUrl } from "@angular/platform-browser";
|
||||
import { MessageAttachmentFileType, MessageAttachmentSource } from "src/app/module/chat/data/dto/message/messageOutputDTO";
|
||||
import { MessageEntity } from "src/app/module/chat/domain/entity/message";
|
||||
import { MessageEntity } from "src/app/core/chat/entity/message";
|
||||
|
||||
export class MessageViewModal {
|
||||
$id!: number
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { MessageAttachmentFileType, MessageAttachmentSource } from "src/app/module/chat/data/dto/message/messageOutputDTO";
|
||||
import { MessageEntity } from "src/app/module/chat/domain/entity/message";
|
||||
import { MessageEntity } from "src/app/core/chat/entity/message";
|
||||
import { SessionStore } from "src/app/store/session.service";
|
||||
|
||||
export const LastMessage = new MessageEntity()
|
||||
@@ -20,4 +20,4 @@ LastMessage.attachments = [{
|
||||
source: MessageAttachmentSource.Device,
|
||||
fileType: MessageAttachmentFileType.Image,
|
||||
mimeType: 'image/png',
|
||||
}]
|
||||
}]
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
// Define a generic UseCase interface
|
||||
export interface UseCase<Input, Output> {
|
||||
execute(input: Input): Promise<Output>;
|
||||
}
|
||||
Reference in New Issue
Block a user