mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2024-12-26 21:15:21 +01:00
72 lines
1.5 KiB
JavaScript
72 lines
1.5 KiB
JavaScript
|
import {ViewModel} from "../../ViewModel.js";
|
||
|
|
||
|
export class ComposerViewModel extends ViewModel {
|
||
|
constructor(roomVM) {
|
||
|
super();
|
||
|
this._roomVM = roomVM;
|
||
|
this._isEmpty = true;
|
||
|
this._replyVM = null;
|
||
|
}
|
||
|
|
||
|
setReplyingTo(tile) {
|
||
|
const changed = this._replyVM !== tile;
|
||
|
this._replyVM = tile;
|
||
|
if (changed) {
|
||
|
this.emitChange("replyViewModel");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
clearReplyingTo() {
|
||
|
this.setReplyingTo(null);
|
||
|
}
|
||
|
|
||
|
get replyViewModel() {
|
||
|
return this._replyVM;
|
||
|
}
|
||
|
|
||
|
get isEncrypted() {
|
||
|
return this._roomVM.isEncrypted;
|
||
|
}
|
||
|
|
||
|
sendMessage(message) {
|
||
|
const success = this._roomVM._sendMessage(message, this._replyVM);
|
||
|
if (success) {
|
||
|
this._isEmpty = true;
|
||
|
this.emitChange("canSend");
|
||
|
this.clearReplyingTo();
|
||
|
}
|
||
|
return success;
|
||
|
}
|
||
|
|
||
|
sendPicture() {
|
||
|
this._roomVM._pickAndSendPicture();
|
||
|
}
|
||
|
|
||
|
sendFile() {
|
||
|
this._roomVM._pickAndSendFile();
|
||
|
}
|
||
|
|
||
|
sendVideo() {
|
||
|
this._roomVM._pickAndSendVideo();
|
||
|
}
|
||
|
|
||
|
get canSend() {
|
||
|
return !this._isEmpty;
|
||
|
}
|
||
|
|
||
|
async setInput(text) {
|
||
|
const wasEmpty = this._isEmpty;
|
||
|
this._isEmpty = text.length === 0;
|
||
|
if (wasEmpty && !this._isEmpty) {
|
||
|
this._roomVM._room.ensureMessageKeyIsShared();
|
||
|
}
|
||
|
if (wasEmpty !== this._isEmpty) {
|
||
|
this.emitChange("canSend");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
get kind() {
|
||
|
return "composer";
|
||
|
}
|
||
|
}
|