mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-18 20:47:54 +00:00
85 lines
2.9 KiB
TypeScript
85 lines
2.9 KiB
TypeScript
import { IRoom, RoomEntitySchema } from "src/app/core/chat/entity/group";
|
|
import { MessageAttachmentSource } from "src/app/core/chat/entity/message";
|
|
import { isDocument } from "src/app/utils/document-mimetype";
|
|
import { MessageViewModal } from "./message";
|
|
|
|
export class RoomViewModel implements IRoom {
|
|
|
|
$id: typeof RoomEntitySchema._input.$id
|
|
id?: typeof RoomEntitySchema._input.id
|
|
roomName: typeof RoomEntitySchema._input.roomName
|
|
createdBy: typeof RoomEntitySchema._input.createdBy
|
|
createdAt: typeof RoomEntitySchema._input.createdAt
|
|
expirationDate: typeof RoomEntitySchema._input.expirationDate
|
|
roomType: typeof RoomEntitySchema._input.roomType
|
|
members: typeof RoomEntitySchema._input.members
|
|
messages: MessageViewModal[]
|
|
local: typeof RoomEntitySchema._input.local
|
|
receiverId?: typeof RoomEntitySchema._input.receiverId
|
|
displayDate = ''
|
|
lastMessageImage = false
|
|
lastMessageAudio = false
|
|
lastMessageDocument = false
|
|
|
|
constructor(model: IRoom) {
|
|
Object.assign(this, model)
|
|
this.formatarData()
|
|
|
|
this.check()
|
|
}
|
|
|
|
check() {
|
|
if(this.messages?.[0]?.attachments[0]?.mimeType?.startsWith('image/') ) {
|
|
this.lastMessageImage = true
|
|
} else if (this.messages?.[0]?.attachments[0]?.mimeType && isDocument({mimeType: this.messages?.[0]?.attachments[0]?.mimeType})) {
|
|
this.lastMessageDocument = true
|
|
} else if (this.messages?.[0]?.attachments[0]?.source == MessageAttachmentSource.Webtrix) {
|
|
this.lastMessageDocument = true
|
|
} else if (this.messages?.[0]?.attachments[0]?.mimeType?.startsWith('audio/')) {
|
|
this.lastMessageAudio = true;
|
|
}
|
|
|
|
}
|
|
|
|
formatarData() {
|
|
if(this.messages?.[0]?.sentAt) {
|
|
|
|
const dataMensagem = new Date(this.messages[0].sentAt);
|
|
const agora = new Date();
|
|
|
|
const hoje = new Date(agora.getFullYear(), agora.getMonth(), agora.getDate());
|
|
const ontem = new Date(hoje);
|
|
ontem.setDate(hoje.getDate() - 1);
|
|
|
|
const diasDaSemana = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"];
|
|
|
|
// Verifica se a mensagem foi enviada hoje
|
|
if (dataMensagem >= hoje) {
|
|
this.displayDate = dataMensagem.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });
|
|
return
|
|
}
|
|
|
|
// Verifica se a mensagem foi enviada ontem
|
|
if (dataMensagem >= ontem && dataMensagem < hoje) {
|
|
this.displayDate = "Ontem";
|
|
return
|
|
}
|
|
|
|
// Verifica se a mensagem foi enviada nesta semana
|
|
const inicioDaSemana = new Date(hoje);
|
|
inicioDaSemana.setDate(hoje.getDate() - hoje.getDay());
|
|
|
|
if (dataMensagem >= inicioDaSemana) {
|
|
this.displayDate = diasDaSemana[dataMensagem.getDay()];
|
|
return
|
|
}
|
|
|
|
// Se a mensagem foi enviada antes desta semana
|
|
this.displayDate = dataMensagem.toLocaleDateString("pt-BR"); // Formato: DD/MM/AAAA
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
}
|