diff --git a/src/app/module/chat/data/repository/room-local-repository.service.ts b/src/app/module/chat/data/repository/room-local-repository.service.ts index d6f579524..9fd278d1e 100644 --- a/src/app/module/chat/data/repository/room-local-repository.service.ts +++ b/src/app/module/chat/data/repository/room-local-repository.service.ts @@ -80,12 +80,12 @@ export class RoomLocalRepository extends DexieRepository { } - getItemsLive(): Observable { - return liveQuery(() => chatDatabase.room.toArray()) as any; + getItemsLive(){ + return liveQuery(() => chatDatabase.room.toArray()); } - getRoomByIdLive(id: any): Observable { - return liveQuery(() => chatDatabase.room.get(id)) as any; + getRoomByIdLive(id: any) { + return liveQuery(() => chatDatabase.room.get(id)); } diff --git a/src/app/module/chat/domain/chat-service.service.ts b/src/app/module/chat/domain/chat-service.service.ts index d3663f182..9ae2252ae 100644 --- a/src/app/module/chat/domain/chat-service.service.ts +++ b/src/app/module/chat/domain/chat-service.service.ts @@ -35,6 +35,7 @@ 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"; export const InstanceId = uuidv4(); @@ -151,7 +152,7 @@ export class ChatServiceService { return this.MemberAdminUseCaseService.execute(input) } - sendMessage(input: MessageEntity, messageEnum: MessageEnum) { + sendMessage(input: MessageEntity, messageEnum: RoomType) { return this.MessageCreateUseCaseService.execute(input, messageEnum); } 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 2cb3bccb2..8237dcbca 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 @@ -14,6 +14,8 @@ 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"; + const MessageInputUseCaseSchema = z.object({ memberId: z.number(), @@ -41,7 +43,7 @@ export class MessageCreateUseCaseService { ) { } - async execute(message: MessageEntity, messageEnum: MessageEnum) { + async execute(message: MessageEntity, messageEnum: RoomType) { const validation = zodSafeValidation(MessageEntitySchema, message) @@ -94,7 +96,7 @@ export class MessageCreateUseCaseService { const DTO = MessageMapper.fromDomain(message, message.requestId) let sendMessageResult: Result - if(messageEnum == MessageEnum.group) { + if(messageEnum == RoomType.Group) { sendMessageResult = await this.messageLiveSignalRDataSourceService.sendMessage(DTO) } else { sendMessageResult = await this.messageSocketRepositoryService.sendDirectMessage(DTO) 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 b06096101..ecb522dca 100644 --- a/src/app/module/chat/infra/database/dexie/schema/room.ts +++ b/src/app/module/chat/infra/database/dexie/schema/room.ts @@ -1,5 +1,6 @@ import { z } from "zod"; import { EntityTable } from 'Dexie'; +import { RoomType } from "src/app/module/chat/domain/entity/group"; export const RoomTableSchema = z.object({ id: z.string(), @@ -12,6 +13,7 @@ export const RoomTableSchema = z.object({ }), createdAt: z.any(), expirationDate: z.any().nullable(), + roomType: z.nativeEnum(RoomType) }) export type RoomTable = z.infer diff --git a/src/app/ui/chat/chat.page.ts b/src/app/ui/chat/chat.page.ts index c77c2f326..f25e92269 100644 --- a/src/app/ui/chat/chat.page.ts +++ b/src/app/ui/chat/chat.page.ts @@ -20,6 +20,7 @@ import { Observable as DexieObservable } from 'Dexie'; import { EditGroupPage } from './modal/edit-group/edit-group.page'; import { ChatServiceService } from 'src/app/module/chat/domain/chat-service.service' import { RoomLocalRepository } from 'src/app/module/chat/data/repository/room-local-repository.service' +import { RoomTable } from 'src/app/module/chat/infra/database/dexie/schema/room'; @Component({ selector: 'app-chat', @@ -52,7 +53,7 @@ export class ChatPage implements OnInit { routerSubscription // count$: Observable; - items$!: DexieObservable; + items$!: DexieObservable; constructor( private modalController: ModalController, diff --git a/src/app/ui/chat/component/contacts/contacts.page.ts b/src/app/ui/chat/component/contacts/contacts.page.ts index 0f3a85630..83b93f76a 100644 --- a/src/app/ui/chat/component/contacts/contacts.page.ts +++ b/src/app/ui/chat/component/contacts/contacts.page.ts @@ -11,6 +11,7 @@ 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 { ChatSystemService } from 'src/app/services/chat/chat-system.service' +import { RoomType } from "src/app/module/chat/domain/entity/group"; @Component({ selector: 'app-contacts', @@ -141,7 +142,7 @@ export class ContactsPage implements OnInit { message.receiverId = user.wxUserId message.message = 'hello' - const result = await this.chatServiceService.sendMessage(message, MessageEnum.Direct) + const result = await this.chatServiceService.sendMessage(message, RoomType.Group) if(result.isOk()) { this.close(result.value.roomId) diff --git a/src/app/ui/chat/component/messages/messages.page.ts b/src/app/ui/chat/component/messages/messages.page.ts index a1a4aa625..2c80e7df2 100644 --- a/src/app/ui/chat/component/messages/messages.page.ts +++ b/src/app/ui/chat/component/messages/messages.page.ts @@ -46,6 +46,8 @@ import { UserTypingRemoteRepositoryService } from 'src/app/module/chat/data/repo import { MessageLocalDataSourceService } from 'src/app/module/chat/data/repository/message/message-local-data-source.service'; import { MessageRemoteDataSourceService } from 'src/app/module/chat/data/repository/message/message-remote-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 { RoomTable } from 'src/app/module/chat/infra/database/dexie/schema/room'; @Component({ @@ -64,6 +66,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy dmUsers: any; downloadProgess = 0; + roomType!: RoomType @Input() roomId: string; @Input() showMessages: string; @@ -115,7 +118,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy textField = '' - roomData$: DexieObservable + roomData$: DexieObservable roomStatus$: DexieObservable roomMessage$: DexieObservable roomMembers$: DexieObservable @@ -173,6 +176,15 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy this.roomData$ = this.RoomLocalRepository.getRoomByIdLive(this.roomId) + + this.roomData$.subscribe(e => { + console.log(e) + if(e) { + this.roomType = e.roomType + } + + }) + this.getMessages(); this.listenToIncomingMessage(); this.listenToDeleteMessage(); @@ -568,7 +580,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy safeFile: this.sanitiser.bypassSecurityTrustResourceUrl(this.audioRecordedDataUrl) }] - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) this.messages1[this.roomId].push(message) setTimeout(() => { this.scrollToBottomClicked() @@ -629,7 +641,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy setTimeout(() => { this.scrollToBottomClicked() }, 100) - const data = await this.chatServiceService.sendMessage(message, MessageEnum.group) + const data = await this.chatServiceService.sendMessage(message, this.roomType) } @@ -811,7 +823,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy setTimeout(() => { this.scrollToBottomClicked() }, 100) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) } @@ -867,7 +879,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy setTimeout(() => { this.scrollToBottomClicked() }, 100) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) this.textField = '' } @@ -921,7 +933,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy setTimeout(() => { this.scrollToBottomClicked() }, 100) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) } } @@ -977,7 +989,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy setTimeout(() => { this.scrollToBottomClicked() }, 100) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) } } else { 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 d11dfd1b6..f39d0909c 100644 --- a/src/app/ui/chat/modal/messages/contacts/contacts.page.ts +++ b/src/app/ui/chat/modal/messages/contacts/contacts.page.ts @@ -9,7 +9,7 @@ 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 { MessageEnum } from 'src/app/module/chat/domain/use-case/message-create-use-case.service'; - +import { RoomType } from "src/app/module/chat/domain/entity/group"; @Component({ selector: 'app-contacts', @@ -179,7 +179,7 @@ export class ContactsPage implements OnInit { message.message = 'hello' - this.chatServiceService.sendMessage(message, MessageEnum.Direct) + 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 8736fa574..ebb442b77 100644 --- a/src/app/ui/chat/modal/messages/messages.page.ts +++ b/src/app/ui/chat/modal/messages/messages.page.ts @@ -46,6 +46,9 @@ import { UserTypingLocalRepository } from 'src/app/module/chat/data/repository/u import { UserTypingRemoteRepositoryService } from 'src/app/module/chat/data/repository/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 { RoomTable } from 'src/app/module/chat/infra/database/dexie/schema/room'; + const IMAGE_DIR = 'stored-images'; @@ -108,7 +111,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { audioPermissionStatus: 'granted' | 'denied' | 'prompt' | null = null sessionStore = SessionStore - roomData$: DexieObservable + roomData$: DexieObservable roomStatus$: DexieObservable roomMessage$: DexieObservable roomMembers$: DexieObservable @@ -119,7 +122,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { selectedMessage: any = null; emojis: string[] = ['😊', '😂', '❤️', '👍', '😢']; // Add more emojis as needed textField = '' - + roomType!: RoomType messageReceiveSubject: Subscription messageDeleteSubject: Subscription @@ -159,6 +162,14 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { this.roomData$ = this.RoomLocalRepository.getRoomByIdLive(this.roomId) + + this.roomData$.subscribe(e => { + console.log(e) + if(e) { + this.roomType = e.roomType + } + + }) this.getMessages(); this.listenToIncomingMessage(); @@ -526,7 +537,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { wxUserId: SessionStore.user.UserId } - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) this.messages1[this.roomId].push(message) this.textField = '' @@ -569,7 +580,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }] this.messages1[this.roomId].push(message) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) setTimeout(() => { this.scrollToBottomClicked() }, 100) @@ -750,7 +761,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }] this.messages1[this.roomId].push(message) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) } @@ -800,7 +811,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }] this.messages1[this.roomId].push(message) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) this.textField = '' } @@ -846,7 +857,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }] this.messages1[this.roomId].push(message) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) } } @@ -897,7 +908,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }] this.messages1[this.roomId].push(message) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) return } @@ -941,7 +952,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy { }] this.messages1[this.roomId].push(message) - this.chatServiceService.sendMessage(message, MessageEnum.group) + this.chatServiceService.sendMessage(message, this.roomType) }