mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-21 05:45:50 +00:00
69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
import { SafeResourceUrl } from "@angular/platform-browser";
|
|
import { IMessageType, MessageEntity, MessageEntitySchema } from "src/app/core/chat/entity/message";
|
|
import { SessionStore } from "src/app/store/session.service";
|
|
|
|
export class MessageViewModal {
|
|
$id?: number
|
|
id?: string
|
|
roomId?: string
|
|
receiverId?: number
|
|
message?: string
|
|
messageType: number = 0
|
|
canEdit: boolean = false
|
|
oneShot: boolean = false
|
|
sentAt?: string
|
|
requireUnlock: boolean = false
|
|
info: typeof MessageEntitySchema._type.info = []
|
|
sender!: typeof MessageEntitySchema._type.sender
|
|
sending: boolean = false
|
|
sendAttemp = 0
|
|
|
|
attachments: typeof MessageEntitySchema._type.attachments = []
|
|
reactions: typeof MessageEntitySchema._type.reactions = []
|
|
requestId!: string
|
|
isDeleted: typeof MessageEntitySchema._type.isDeleted = false
|
|
|
|
status!: 'allViewed' | 'allReceived'| 'enviado'| 'enviar'
|
|
messageUiType!: 'info-meeting'| 'my-message'| 'other-message'
|
|
|
|
constructor(model: MessageEntity) {
|
|
Object.assign(this, model)
|
|
this.setMessageUIType()
|
|
}
|
|
|
|
setMessageUIType() {
|
|
if(this.messageType == IMessageType.information) {
|
|
this.messageUiType = 'info-meeting'
|
|
} else if (this.sender?.wxUserId === SessionStore.user.UserId) {
|
|
this.messageUiType = 'my-message'
|
|
} else {
|
|
this.messageUiType = 'other-message'
|
|
}
|
|
}
|
|
|
|
messageStatus(totalMembers: number) {
|
|
if(this.allViewed(totalMembers)) {
|
|
this.status = 'allViewed'
|
|
} else if(this.allReceived(totalMembers)) {
|
|
this.status = 'allReceived'
|
|
} else if (this.id) {
|
|
this.status = 'enviado'
|
|
} else {
|
|
this.status = 'enviar'
|
|
}
|
|
}
|
|
|
|
allReceived(totalMembers: number) {
|
|
return this.info.filter(e => typeof e.deliverAt == 'string').length == totalMembers
|
|
}
|
|
|
|
allViewed(totalMembers: number) {
|
|
return this.info.filter(e => typeof e.readAt == 'string').length == totalMembers
|
|
}
|
|
|
|
get hasAttachment() {
|
|
return this.attachments.length >= 1
|
|
}
|
|
|
|
}
|