2024-07-21 01:12:35 +02:00
|
|
|
// this file is responsible for managing individual chat messages.
|
|
|
|
|
|
|
|
|
|
import * as React from "bloatless-react";
|
|
|
|
|
|
|
|
|
|
import { ChatMessage, ChatModel } from "./chatModel";
|
|
|
|
|
|
2024-07-21 13:13:41 +02:00
|
|
|
import ChatViewModel from "../ViewModel/chatViewModel";
|
|
|
|
|
|
2024-07-21 01:12:35 +02:00
|
|
|
export default class ChatMessageViewModel {
|
2024-07-21 13:13:41 +02:00
|
|
|
chatViewModel: ChatViewModel;
|
2024-07-21 01:12:35 +02:00
|
|
|
|
|
|
|
|
// data
|
2024-07-21 13:13:41 +02:00
|
|
|
chatMessage: ChatMessage;
|
2024-07-21 01:12:35 +02:00
|
|
|
channel: string;
|
|
|
|
|
sender: string;
|
|
|
|
|
dateSent: string;
|
|
|
|
|
body: React.State<string> = new React.State("");
|
2024-07-21 01:53:25 +02:00
|
|
|
sentByUser: boolean;
|
2024-07-21 01:12:35 +02:00
|
|
|
|
2024-07-21 13:13:41 +02:00
|
|
|
// methods
|
|
|
|
|
copyMessage = (): void => {
|
|
|
|
|
navigator.clipboard.writeText(this.body.value);
|
|
|
|
|
};
|
|
|
|
|
resendMessage = (): void => {
|
|
|
|
|
this.chatViewModel.sendMessageFromBody(this.body.value);
|
|
|
|
|
};
|
|
|
|
|
decryptMessage = (): void => {
|
|
|
|
|
this.chatViewModel.decryptMessage(this);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// load
|
|
|
|
|
loadData = (): void => {
|
|
|
|
|
this.channel = this.chatMessage.channel;
|
|
|
|
|
this.sender = this.chatMessage.sender;
|
|
|
|
|
this.dateSent = new Date(this.chatMessage.dateSent).toLocaleString();
|
|
|
|
|
this.body.value = this.chatMessage.body;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// init
|
2024-07-21 01:53:25 +02:00
|
|
|
constructor(
|
2024-07-21 13:13:41 +02:00
|
|
|
chatViewModel: ChatViewModel,
|
2024-07-21 01:53:25 +02:00
|
|
|
chatMessage: ChatMessage,
|
|
|
|
|
sentByUser: boolean
|
|
|
|
|
) {
|
2024-07-21 13:13:41 +02:00
|
|
|
this.chatViewModel = chatViewModel;
|
2024-07-21 01:12:35 +02:00
|
|
|
|
2024-07-21 13:13:41 +02:00
|
|
|
this.chatMessage = chatMessage;
|
2024-07-21 01:53:25 +02:00
|
|
|
this.sentByUser = sentByUser;
|
2024-07-21 13:13:41 +02:00
|
|
|
this.loadData();
|
2024-07-21 01:12:35 +02:00
|
|
|
}
|
|
|
|
|
}
|