mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
add message status
This commit is contained in:
@@ -2,9 +2,10 @@ import { Injectable } from '@angular/core';
|
||||
import { Dexie, EntityTable, liveQuery } from 'Dexie';
|
||||
import { err, ok, Result } from 'neverthrow';
|
||||
import { z } from 'zod';
|
||||
import { from, Observable, Subject } from 'rxjs';
|
||||
import { filter, switchMap } from 'rxjs/operators';
|
||||
import { Observable, Subject } from 'rxjs';
|
||||
import { filter } from 'rxjs/operators';
|
||||
import { MessageInputDTO } from '../../dto/message/messageInputDtO';
|
||||
import { MessageEntity } from '../../../domain/entity/message';
|
||||
|
||||
|
||||
const tableSchema = z.object({
|
||||
@@ -55,6 +56,7 @@ export const messageDataSource = new Dexie('chat-message') as Dexie & {
|
||||
messageDataSource.version(1).stores({
|
||||
message: '++$id, id, roomId, message, messageType, canEdit, oneShot, requireUnlock, messageId, info'
|
||||
});
|
||||
messageDataSource.message.mapToClass(MessageEntity);
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
import { z } from "zod";
|
||||
|
||||
const MessageEntitySchema = z.object({
|
||||
$id: z.any().optional(),
|
||||
id: z.string().optional(),
|
||||
roomId: z.string().uuid(),
|
||||
message: z.string(),
|
||||
messageType: z.number(),
|
||||
canEdit: z.boolean(),
|
||||
oneShot: z.boolean(),
|
||||
sentAt: z.string().optional(),
|
||||
requireUnlock: z.boolean(),
|
||||
sender: z.object({
|
||||
wxUserId: z.number(),
|
||||
wxFullName: z.string(),
|
||||
wxeMail: z.string(),
|
||||
userPhoto: z.string(),
|
||||
}),
|
||||
sending: z.boolean().optional()
|
||||
})
|
||||
|
||||
type Message = z.infer<typeof MessageEntitySchema>;
|
||||
|
||||
export class MessageEntity implements Message {
|
||||
|
||||
$id: number
|
||||
id: string
|
||||
roomId: string
|
||||
message: string
|
||||
messageType: number
|
||||
canEdit: boolean
|
||||
oneShot: boolean
|
||||
sentAt: string
|
||||
requireUnlock: boolean
|
||||
sender: {
|
||||
wxUserId: number,
|
||||
wxFullName: string,
|
||||
wxeMail: string,
|
||||
userPhoto: string,
|
||||
}
|
||||
sending: boolean
|
||||
|
||||
constructor() {}
|
||||
|
||||
get messageStatus() {
|
||||
if(this.id) {
|
||||
return 'send'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user