mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 19:08:58 +03:00
Allow to specify reason for removed message
# Previous commits: #5949173b
Add function to force focus on InputDialog input field #9482ac4e
Allow explicit selection of SSO method #ab05e2d8
Mobile message input (#962) #12a6da01
If you replace the txn id, replace a string the length of the txn id...
This commit is contained in:
parent
5949173ba2
commit
e390c39862
3 changed files with 29 additions and 5 deletions
|
@ -7,6 +7,7 @@ import "./components"
|
||||||
import "./delegates"
|
import "./delegates"
|
||||||
import "./emoji"
|
import "./emoji"
|
||||||
import "./ui"
|
import "./ui"
|
||||||
|
import "./dialogs"
|
||||||
import Qt.labs.platform 1.1 as Platform
|
import Qt.labs.platform 1.1 as Platform
|
||||||
import QtQuick 2.15
|
import QtQuick 2.15
|
||||||
import QtQuick.Controls 2.15
|
import QtQuick.Controls 2.15
|
||||||
|
@ -585,6 +586,21 @@ Item {
|
||||||
open();
|
open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: removeReason
|
||||||
|
InputDialog {
|
||||||
|
id: removeReasonDialog
|
||||||
|
|
||||||
|
property string eventId
|
||||||
|
|
||||||
|
title: qsTr("Reason for removal")
|
||||||
|
prompt: qsTr("Enter reason for removal or hit enter for no reason:")
|
||||||
|
onAccepted: function(text) {
|
||||||
|
room.redactEvent(eventId, text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Platform.MenuItem {
|
Platform.MenuItem {
|
||||||
visible: messageContextMenu.text
|
visible: messageContextMenu.text
|
||||||
enabled: visible
|
enabled: visible
|
||||||
|
@ -665,7 +681,13 @@ Item {
|
||||||
Platform.MenuItem {
|
Platform.MenuItem {
|
||||||
visible: (room ? room.permissions.canRedact() : false) || messageContextMenu.isSender
|
visible: (room ? room.permissions.canRedact() : false) || messageContextMenu.isSender
|
||||||
text: qsTr("Remo&ve message")
|
text: qsTr("Remo&ve message")
|
||||||
onTriggered: room.redactEvent(messageContextMenu.eventId)
|
onTriggered: function() {
|
||||||
|
var dialog = removeReason.createObject(timelineRoot);
|
||||||
|
dialog.eventId = messageContextMenu.eventId;
|
||||||
|
dialog.show();
|
||||||
|
dialog.forceActiveFocus();
|
||||||
|
timelineRoot.destroyOnClose(dialog);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Platform.MenuItem {
|
Platform.MenuItem {
|
||||||
|
|
|
@ -1240,7 +1240,7 @@ TimelineModel::showReadReceipts(QString id)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TimelineModel::redactEvent(const QString &id)
|
TimelineModel::redactEvent(const QString &id, const QString &reason)
|
||||||
{
|
{
|
||||||
if (!id.isEmpty()) {
|
if (!id.isEmpty()) {
|
||||||
auto edits = events.edits(id.toStdString());
|
auto edits = events.edits(id.toStdString());
|
||||||
|
@ -1255,7 +1255,8 @@ TimelineModel::redactEvent(const QString &id)
|
||||||
}
|
}
|
||||||
|
|
||||||
emit dataAtIdChanged(id);
|
emit dataAtIdChanged(id);
|
||||||
});
|
},
|
||||||
|
reason.toStdString());
|
||||||
|
|
||||||
// redact all edits to prevent leaks
|
// redact all edits to prevent leaks
|
||||||
for (const auto &e : edits) {
|
for (const auto &e : edits) {
|
||||||
|
@ -1271,7 +1272,8 @@ TimelineModel::redactEvent(const QString &id)
|
||||||
}
|
}
|
||||||
|
|
||||||
emit dataAtIdChanged(id);
|
emit dataAtIdChanged(id);
|
||||||
});
|
},
|
||||||
|
reason.toStdString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -272,7 +272,7 @@ public:
|
||||||
Q_INVOKABLE void unpin(const QString &id);
|
Q_INVOKABLE void unpin(const QString &id);
|
||||||
Q_INVOKABLE void pin(const QString &id);
|
Q_INVOKABLE void pin(const QString &id);
|
||||||
Q_INVOKABLE void showReadReceipts(QString id);
|
Q_INVOKABLE void showReadReceipts(QString id);
|
||||||
Q_INVOKABLE void redactEvent(const QString &id);
|
Q_INVOKABLE void redactEvent(const QString &id, const QString &reason = "");
|
||||||
Q_INVOKABLE int idToIndex(const QString &id) const;
|
Q_INVOKABLE int idToIndex(const QString &id) const;
|
||||||
Q_INVOKABLE QString indexToId(int index) const;
|
Q_INVOKABLE QString indexToId(int index) const;
|
||||||
Q_INVOKABLE void openMedia(const QString &eventId);
|
Q_INVOKABLE void openMedia(const QString &eventId);
|
||||||
|
|
Loading…
Reference in a new issue