mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
save send message
This commit is contained in:
+16
-3
@@ -11,6 +11,7 @@ import { MessageInputDTO } from '../../dto/message/messageInputDtO';
|
||||
|
||||
const tableSchema = z.object({
|
||||
id: z.any().optional(),
|
||||
messageId: z.string().optional(),
|
||||
roomId: z.string().uuid(),
|
||||
senderId: z.number(),
|
||||
message: z.string(),
|
||||
@@ -28,7 +29,7 @@ export const messageDataSource = new Dexie('chat-message') as Dexie & {
|
||||
};
|
||||
|
||||
messageDataSource.version(1).stores({
|
||||
message: '++id, roomId, senderId, message, messageType, canEdit, oneShot, requireUnlock'
|
||||
message: '++id, roomId, senderId, message, messageType, canEdit, oneShot, requireUnlock, messageId'
|
||||
});
|
||||
|
||||
@Injectable({
|
||||
@@ -45,6 +46,18 @@ export class MessageLocalDataSourceService {
|
||||
|
||||
try {
|
||||
const result = await messageDataSource.message.add(data)
|
||||
return ok(result as string)
|
||||
} catch (e) {
|
||||
return err(false)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
async update(data: TableMessage) {
|
||||
|
||||
try {
|
||||
const result = await messageDataSource.message.update(data.id, data)
|
||||
return ok(result)
|
||||
} catch (e) {
|
||||
return err(false)
|
||||
@@ -52,8 +65,8 @@ export class MessageLocalDataSourceService {
|
||||
|
||||
}
|
||||
|
||||
getItemsLive(): Observable<RoomListOutPutDTO[]> {
|
||||
return liveQuery(() => messageDataSource.message.toArray()) as any;
|
||||
getItemsLive(roomId: string): Observable<RoomListOutPutDTO> {
|
||||
return liveQuery(() => messageDataSource.message.where('roomId').equals(roomId).toArray() as any) as any
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
@@ -27,4 +27,6 @@ export class MessageRemoteDataSourceService {
|
||||
async getMessagesFromRoom(id: MessageListInputDTO): DataSourceReturn<MessageListInputDTO> {
|
||||
return await this.httpService.get(`${this.baseUrl}/Room/${id}/Messages`);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,24 @@
|
||||
import { z } from "zod"
|
||||
|
||||
const MessageOutPutDTOSchema = z.object({
|
||||
success: z.boolean(),
|
||||
const DataSchema = z.object({
|
||||
id: z.string(),
|
||||
chatRoomId: z.string(),
|
||||
wxUserId: z.number(),
|
||||
sender: z.string().nullable(),
|
||||
message: z.string(),
|
||||
data: z.any()
|
||||
messageType: z.number(),
|
||||
sentAt: z.string().datetime(),
|
||||
deliverAt: z.string().datetime().nullable(),
|
||||
canEdit: z.boolean(),
|
||||
oneShot: z.boolean(),
|
||||
requireUnlock: z.boolean()
|
||||
});
|
||||
|
||||
export type MessageOutPutDTO = z.infer<typeof MessageOutPutDTOSchema>
|
||||
|
||||
const ResponseSchema = z.object({
|
||||
success: z.boolean(),
|
||||
message: z.string(),
|
||||
data: DataSchema
|
||||
});
|
||||
|
||||
export type MessageOutPutDTO = z.infer<typeof ResponseSchema>
|
||||
|
||||
@@ -3,7 +3,7 @@ import { MessageRemoteDataSourceService } from '../data-source/message/message-r
|
||||
import { MessageLiveDataSourceService } from '../data-source/message/message-live-data-source.service';
|
||||
import { MessageListInputDTO } from '../dto/message/messageListInputDTO';
|
||||
import { MessageInputDTO } from '../dto/message/messageInputDtO';
|
||||
import { MessageLocalDataSourceService } from '../data-source/message/message-local-data-source.service';
|
||||
import { MessageLocalDataSourceService, TableMessage } from '../data-source/message/message-local-data-source.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
@@ -22,12 +22,32 @@ export class MessageRepositoryService {
|
||||
|
||||
if(localActionResult.isOk()) {
|
||||
const sendMessageResult = await this.messageRemoteDataSourceService.sendMessage(data)
|
||||
|
||||
|
||||
if(sendMessageResult.isOk()) {
|
||||
|
||||
let clone: TableMessage = sendMessageResult.value.data
|
||||
|
||||
clone.messageId = sendMessageResult.value.data.id
|
||||
clone.id = localActionResult.value
|
||||
|
||||
return this.messageLocalDataSourceService.update(clone)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
async listAllMessagesByRoomId() {
|
||||
this.messageRemoteDataSourceService
|
||||
}
|
||||
|
||||
async getMessagesFromRoom(data: MessageListInputDTO) {
|
||||
const result = await this.messageRemoteDataSourceService.getMessagesFromRoom(data)
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
getItemsLive (roomId: string) {
|
||||
return this.messageLocalDataSourceService.getItemsLive(roomId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,8 @@
|
||||
MESSAGE
|
||||
|
||||
<p>Room ID: {{ roomData.id }}</p>
|
||||
|
||||
{{ roomMessage$ | async | json }}
|
||||
</ion-list>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -110,6 +110,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
||||
textField = ''
|
||||
|
||||
roomData$: Observable<RoomListItemOutPutDTO | undefined>
|
||||
roomMessage$: Observable<RoomListOutPutDTO>
|
||||
|
||||
constructor(
|
||||
public popoverController: PopoverController,
|
||||
@@ -141,6 +142,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
|
||||
|
||||
ngOnChanges(changes: SimpleChanges): void {
|
||||
this.roomData$ = this.roomRepositoryService.getItemByIdLive(this.roomId)
|
||||
this.roomMessage$ = this.messageRepositoryService.getItemsLive(this.roomId)
|
||||
}
|
||||
|
||||
sendTyping() {}
|
||||
|
||||
Reference in New Issue
Block a user