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"; } }