diff --git a/src/components/Chat.vue b/src/components/Chat.vue
index 6035293..6c15f57 100644
--- a/src/components/Chat.vue
+++ b/src/components/Chat.vue
@@ -16,6 +16,7 @@
v-on:addreaction="addReaction"
v-on:addreply="addReply(selectedEvent)"
v-on:edit="edit(selectedEvent)"
+ v-on:redact="redact(selectedEvent)"
v-on:download="download(selectedEvent)"
:event="selectedEvent"
:incoming="selectedEvent.getSender() != $matrix.currentUserId"
@@ -823,6 +824,16 @@ export default {
this.$refs.messageInput.focus();
},
+ redact(event) {
+ this.$matrix.matrixClient.redactEvent(event.getRoomId(), event.getId())
+ .then(() => {
+ console.log("Message redacted");
+ })
+ .catch(err => {
+ console.log("Redaction failed: ", err);
+ })
+ },
+
download(event) {
util
.getAttachment(this.$matrix.matrixClient, event)
diff --git a/src/components/messages/MessageOperations.vue b/src/components/messages/MessageOperations.vue
index d16477d..0727887 100644
--- a/src/components/messages/MessageOperations.vue
+++ b/src/components/messages/MessageOperations.vue
@@ -9,6 +9,9 @@
edit
+
+ delete
+
get_app
@@ -43,6 +46,13 @@ export default {
isDownloadable() {
const msgtype = this.event.getContent().msgtype;
return ['m.video','m.audio','m.image','m.file'].includes(msgtype);
+ },
+ isRedactable() {
+ const room = this.$matrix.matrixClient.getRoom(this.event.getRoomId());
+ if (room && room.currentState && room.currentState.maySendRedactionForEvent(this.event, this.$matrix.currentUserId)) {
+ return true;
+ }
+ return false;
}
},
@@ -59,6 +69,10 @@ export default {
this.$emit("close");
this.$emit("edit", {event:this.event});
},
+ redact() {
+ this.$emit("close");
+ this.$emit("redact", {event:this.event});
+ },
download() {
this.$emit("close");
this.$emit("download", {event:this.event});