You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.7 KiB
56 lines
1.7 KiB
import { UserModel } from "../model/UserModel";
|
|
import { ChatModel } from "../model/ChatModel";
|
|
import { UserView } from "../view/UserView";
|
|
import { ChatView } from "../view/ChatView";
|
|
import { UserController } from "../controller/UserController";
|
|
import { ChatController } from "../controller/ChatController";
|
|
import { Client } from "@stomp/stompjs";
|
|
import { ChatMessageDTO } from "../../common/dto/ChatMessageDTO";
|
|
import log from "loglevel";
|
|
import { ChatMessageViewModel } from "../viewmodel/ChatMessageViewModel";
|
|
|
|
export interface Props {
|
|
// userModel: UserModel;
|
|
// chatModel: ChatModel;
|
|
// userView: UserView;
|
|
// chatView: ChatView;
|
|
userController: UserController;
|
|
chatController: ChatController;
|
|
chatStompClient: Client;
|
|
}
|
|
|
|
export interface State {}
|
|
|
|
export class ChatComponent {
|
|
private readonly _props: Props;
|
|
private readonly _state: State;
|
|
|
|
constructor(props: Props, state: State) {
|
|
this._props = props;
|
|
this._state = state;
|
|
}
|
|
|
|
private async wsHandler() {
|
|
this._props.chatStompClient.onConnect = () => {
|
|
this._props.chatStompClient.subscribe("/user/queue/reply", (reply) => {
|
|
const data = JSON.parse(reply.body) as ChatMessageDTO;
|
|
const plainText = this._props.userController.decryptForUser(
|
|
data,
|
|
data.fromUser
|
|
);
|
|
this._props.chatController.store(data.fromUser, <ChatMessageViewModel>{
|
|
...data,
|
|
message: plainText,
|
|
messageTime: new Date(data.messageTime),
|
|
});
|
|
// log.debug(
|
|
// message,
|
|
// this._props.encryptionService.decrypt(
|
|
// "password",
|
|
// message.messageCipher
|
|
// )
|
|
// );
|
|
});
|
|
};
|
|
}
|
|
}
|