diff --git a/src/app/module/chat/domain/entity/group.ts b/src/app/core/chat/entity/group.ts similarity index 100% rename from src/app/module/chat/domain/entity/group.ts rename to src/app/core/chat/entity/group.ts diff --git a/src/app/module/chat/domain/entity/message.ts b/src/app/core/chat/entity/message.ts similarity index 97% rename from src/app/module/chat/domain/entity/message.ts rename to src/app/core/chat/entity/message.ts index 103b51b89..ed82fbe68 100644 --- a/src/app/module/chat/domain/entity/message.ts +++ b/src/app/core/chat/entity/message.ts @@ -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"; diff --git a/src/app/core/chat/repository/message/socket-repositoty-parameter.ts b/src/app/core/chat/repository/message/socket-repositoty-parameter.ts index 7f89cdb05..6ba7adcaa 100644 --- a/src/app/core/chat/repository/message/socket-repositoty-parameter.ts +++ b/src/app/core/chat/repository/message/socket-repositoty-parameter.ts @@ -5,4 +5,4 @@ export interface sendReadAtInput { messageId:string, roomId: string, requestId: string - } +} diff --git a/src/app/infra/repository/dexie/dexie-repository.service.ts b/src/app/infra/repository/dexie/dexie-repository.service.ts index 4f0da7125..a8f40454f 100644 --- a/src/app/infra/repository/dexie/dexie-repository.service.ts +++ b/src/app/infra/repository/dexie/dexie-repository.service.ts @@ -6,7 +6,7 @@ import { Logger } from 'src/app/services/logger/main/service'; // Define a type for the Result of repository operations type RepositoryResult = Result>; -export class DexieRepository { +export class DexieRepository { private table: EntityTable; private ZodSchema: ZodSchema private ZodPartialSchema: ZodSchema @@ -94,17 +94,16 @@ export class DexieRepository { } } - async find(filter: Object): Promise> { + async find(filter: Partial): Promise> { 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> { + async findOne(filter: Partial): Promise> { try { const document = await this.table.where(filter).first(); return ok(document); diff --git a/src/app/module/chat/chat.module.ts b/src/app/module/chat/chat.module.ts index 54acacf38..6286e658b 100644 --- a/src/app/module/chat/chat.module.ts +++ b/src/app/module/chat/chat.module.ts @@ -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() } }) diff --git a/src/app/module/chat/data/repository/attachment-local-repository.service.ts b/src/app/module/chat/data/repository/attachment-local-repository.service.ts index 5b76bd42e..6f1a8abf2 100644 --- a/src/app/module/chat/data/repository/attachment-local-repository.service.ts +++ b/src/app/module/chat/data/repository/attachment-local-repository.service.ts @@ -7,13 +7,13 @@ import { AttachmentTable, AttachmentTableSchema } from '../../infra/database/dex @Injectable({ providedIn: 'root' }) -export class AttachmentLocalDataSource extends DexieRepository { +export class AttachmentLocalDataSource extends DexieRepository { messageSubject = new Subject(); constructor() { super(chatDatabase.attachment, AttachmentTableSchema) } - + } diff --git a/src/app/module/chat/data/repository/member-list-local-repository.service.ts b/src/app/module/chat/data/repository/member-list-local-repository.service.ts index 20aaaf31a..e72208a8d 100644 --- a/src/app/module/chat/data/repository/member-list-local-repository.service.ts +++ b/src/app/module/chat/data/repository/member-list-local-repository.service.ts @@ -12,7 +12,7 @@ import { from } from 'rxjs'; @Injectable({ providedIn: 'root' }) -export class MemberListLocalRepository extends DexieRepository { +export class MemberListLocalRepository extends DexieRepository { constructor() { super(chatDatabase.members, MemberTableSchema) @@ -35,13 +35,6 @@ export class MemberListLocalRepository extends DexieRepository { 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 { async removeMemberFromRoom($roomIdUserId): Promise> { 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') } diff --git a/src/app/module/chat/data/repository/message/message-live-signalr-data-source.service.ts b/src/app/module/chat/data/repository/message/message-live-signalr-data-source.service.ts index af4f13cdd..4267e5c5b 100644 --- a/src/app/module/chat/data/repository/message/message-live-signalr-data-source.service.ts +++ b/src/app/module/chat/data/repository/message/message-live-signalr-data-source.service.ts @@ -55,6 +55,11 @@ export class MessageSocketRepositoryService { async sendGroupMessage(data: MessageInputDTO) { + + if(data['requestId']) { + data['requestId'] = InstanceId +'@'+ uuidv4(); + } + const result = await this.socket.sendData({ 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({ method: 'SendDirectMessage', data: data as any, diff --git a/src/app/module/chat/data/repository/message/message-local-data-source.service.ts b/src/app/module/chat/data/repository/message/message-local-data-source.service.ts index 1ae2adf8a..0118ce827 100644 --- a/src/app/module/chat/data/repository/message/message-local-data-source.service.ts +++ b/src/app/module/chat/data/repository/message/message-local-data-source.service.ts @@ -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 { +export class MessageLocalDataSourceService extends DexieRepository { messageSubject = new Subject(); @@ -28,7 +28,6 @@ export class MessageLocalDataSourceService extends DexieRepository // 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 } } - async deleteByMessageId(id: string): Promise> { + async deleteByMessageId(id: string): Promise> { try { console.log(id) const lastMessage = await chatDatabase.message @@ -197,10 +196,6 @@ export class MessageLocalDataSourceService extends DexieRepository .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); diff --git a/src/app/module/chat/data/repository/room/room-local-repository.service.ts b/src/app/module/chat/data/repository/room/room-local-repository.service.ts index ed980c211..9cef4edf1 100644 --- a/src/app/module/chat/data/repository/room/room-local-repository.service.ts +++ b/src/app/module/chat/data/repository/room/room-local-repository.service.ts @@ -12,7 +12,7 @@ import { from } from 'rxjs'; @Injectable({ providedIn: 'root' }) -export class RoomLocalRepository extends DexieRepository { +export class RoomLocalRepository extends DexieRepository { constructor() { super(chatDatabase.room, RoomTableSchema) diff --git a/src/app/module/chat/domain/chat-service.service.ts b/src/app/module/chat/domain/chat-service.service.ts index 99cd51903..1d5bb7780 100644 --- a/src/app/module/chat/domain/chat-service.service.ts +++ b/src/app/module/chat/domain/chat-service.service.ts @@ -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(); } diff --git a/src/app/module/chat/domain/mapper/messageMapper.ts b/src/app/module/chat/domain/mapper/messageMapper.ts index 1864ebd45..c13644c77 100644 --- a/src/app/module/chat/domain/mapper/messageMapper.ts +++ b/src/app/module/chat/domain/mapper/messageMapper.ts @@ -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 { diff --git a/src/app/module/chat/domain/use-case/listen-message-by-roomId.service.ts b/src/app/module/chat/domain/use-case/listen-message-by-roomId.service.ts index 6e638fa6c..9a33e52a9 100644 --- a/src/app/module/chat/domain/use-case/listen-message-by-roomId.service.ts +++ b/src/app/module/chat/domain/use-case/listen-message-by-roomId.service.ts @@ -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' diff --git a/src/app/module/chat/domain/use-case/message-attachment-by-message-id.service.ts b/src/app/module/chat/domain/use-case/message-attachment-by-message-id.service.ts index d01d01256..21a6cbe10 100644 --- a/src/app/module/chat/domain/use-case/message-attachment-by-message-id.service.ts +++ b/src/app/module/chat/domain/use-case/message-attachment-by-message-id.service.ts @@ -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(), diff --git a/src/app/module/chat/domain/use-case/message-create-use-case.service.ts b/src/app/module/chat/domain/use-case/message-create-use-case.service.ts index f00f9a39a..ddc1f99d0 100644 --- a/src/app/module/chat/domain/use-case/message-create-use-case.service.ts +++ b/src/app/module/chat/domain/use-case/message-create-use-case.service.ts @@ -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'; diff --git a/src/app/module/chat/domain/use-case/message-send-use-case.service.ts b/src/app/module/chat/domain/use-case/message-send-use-case.service.ts index 31f630a23..b0651c34c 100644 --- a/src/app/module/chat/domain/use-case/message-send-use-case.service.ts +++ b/src/app/module/chat/domain/use-case/message-send-use-case.service.ts @@ -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 diff --git a/src/app/module/chat/domain/use-case/messages-send-offline-use-case.service.ts b/src/app/module/chat/domain/use-case/messages-send-offline-use-case.service.ts index 16e6ab471..8b7cdc9d8 100644 --- a/src/app/module/chat/domain/use-case/messages-send-offline-use-case.service.ts +++ b/src/app/module/chat/domain/use-case/messages-send-offline-use-case.service.ts @@ -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 + 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}) } + } } - - } } } + } diff --git a/src/app/module/chat/domain/use-case/socket/socket-message-delete-use-case.service.ts b/src/app/module/chat/domain/use-case/socket/socket-message-delete-use-case.service.ts index d3af64937..6ae09bc27 100644 --- a/src/app/module/chat/domain/use-case/socket/socket-message-delete-use-case.service.ts +++ b/src/app/module/chat/domain/use-case/socket/socket-message-delete-use-case.service.ts @@ -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()) { diff --git a/src/app/module/chat/domain/use-case/socket/socket-message-update-use-case.service.ts b/src/app/module/chat/domain/use-case/socket/socket-message-update-use-case.service.ts index 7dc58b98c..94d5ef0d3 100644 --- a/src/app/module/chat/domain/use-case/socket/socket-message-update-use-case.service.ts +++ b/src/app/module/chat/domain/use-case/socket/socket-message-update-use-case.service.ts @@ -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}) diff --git a/src/app/module/chat/domain/use-case/sync-all-room-messages.service.ts b/src/app/module/chat/domain/use-case/sync-all-room-messages.service.ts index 8dca800d7..e186ba4a9 100644 --- a/src/app/module/chat/domain/use-case/sync-all-room-messages.service.ts +++ b/src/app/module/chat/domain/use-case/sync-all-room-messages.service.ts @@ -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()) diff --git a/src/app/module/chat/infra/database/dexie/schema/message.ts b/src/app/module/chat/infra/database/dexie/schema/message.ts index 8a8ee2109..02b674c28 100644 --- a/src/app/module/chat/infra/database/dexie/schema/message.ts +++ b/src/app/module/chat/infra/database/dexie/schema/message.ts @@ -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(), diff --git a/src/app/module/chat/infra/database/dexie/schema/room.ts b/src/app/module/chat/infra/database/dexie/schema/room.ts index ecb522dca..db9a3ecba 100644 --- a/src/app/module/chat/infra/database/dexie/schema/room.ts +++ b/src/app/module/chat/infra/database/dexie/schema/room.ts @@ -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(), diff --git a/src/app/module/chat/infra/database/dexie/service.ts b/src/app/module/chat/infra/database/dexie/service.ts index 78860063d..ad285cab9 100644 --- a/src/app/module/chat/infra/database/dexie/service.ts +++ b/src/app/module/chat/infra/database/dexie/service.ts @@ -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 \ No newline at end of file +// Apply in-memory storage diff --git a/src/app/ui/chat/component/contacts/contacts.page.ts b/src/app/ui/chat/component/contacts/contacts.page.ts index 7d1bb942d..cc2c5834c 100644 --- a/src/app/ui/chat/component/contacts/contacts.page.ts +++ b/src/app/ui/chat/component/contacts/contacts.page.ts @@ -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', diff --git a/src/app/ui/chat/component/messages/messages.page.html b/src/app/ui/chat/component/messages/messages.page.html index e53f6449c..79a4ea36c 100644 --- a/src/app/ui/chat/component/messages/messages.page.html +++ b/src/app/ui/chat/component/messages/messages.page.html @@ -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}" > -
- +
+ {{ message.$id }}
@@ -150,6 +150,9 @@
+
+ Mensagem foi eliminada +
diff --git a/src/app/ui/chat/component/messages/messages.page.ts b/src/app/ui/chat/component/messages/messages.page.ts index 95a39ad58..89f30e9e3 100644 --- a/src/app/ui/chat/component/messages/messages.page.ts +++ b/src/app/ui/chat/component/messages/messages.page.ts @@ -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'; diff --git a/src/app/ui/chat/modal/messages/contacts/contacts.page.ts b/src/app/ui/chat/modal/messages/contacts/contacts.page.ts index f39d0909c..e060979b7 100644 --- a/src/app/ui/chat/modal/messages/contacts/contacts.page.ts +++ b/src/app/ui/chat/modal/messages/contacts/contacts.page.ts @@ -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) - + } } diff --git a/src/app/ui/chat/modal/messages/messages.page.ts b/src/app/ui/chat/modal/messages/messages.page.ts index 91b2e3c3f..6832a9a82 100644 --- a/src/app/ui/chat/modal/messages/messages.page.ts +++ b/src/app/ui/chat/modal/messages/messages.page.ts @@ -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'; diff --git a/src/app/ui/chat/store/model/message.ts b/src/app/ui/chat/store/model/message.ts index 32c335981..7fdc79e4b 100644 --- a/src/app/ui/chat/store/model/message.ts +++ b/src/app/ui/chat/store/model/message.ts @@ -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 diff --git a/src/app/ui/chat/utils/lastMessage.ts b/src/app/ui/chat/utils/lastMessage.ts index 0c1a4021c..e24646a01 100644 --- a/src/app/ui/chat/utils/lastMessage.ts +++ b/src/app/ui/chat/utils/lastMessage.ts @@ -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', -}] \ No newline at end of file +}] diff --git a/src/app/utils/use-case-interface.ts b/src/app/utils/use-case-interface.ts new file mode 100644 index 000000000..3ed737fb0 --- /dev/null +++ b/src/app/utils/use-case-interface.ts @@ -0,0 +1,4 @@ +// Define a generic UseCase interface +export interface UseCase { + execute(input: Input): Promise; +}