Make sure that only text messages can be edited
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
// SPDX-License-Identifier: GPL-3.0-only
|
// SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
|
||||||
#include "messageeventmodel.h"
|
#include "messageeventmodel.h"
|
||||||
|
#include "messagecomponenttype.h"
|
||||||
#include "messageeventmodel_logging.h"
|
#include "messageeventmodel_logging.h"
|
||||||
|
|
||||||
#include "neochatconfig.h"
|
#include "neochatconfig.h"
|
||||||
@@ -58,6 +59,7 @@ QHash<int, QByteArray> MessageEventModel::roleNames() const
|
|||||||
roles[IsPendingRole] = "isPending";
|
roles[IsPendingRole] = "isPending";
|
||||||
roles[ContentModelRole] = "contentModel";
|
roles[ContentModelRole] = "contentModel";
|
||||||
roles[MediaInfoRole] = "mediaInfo";
|
roles[MediaInfoRole] = "mediaInfo";
|
||||||
|
roles[IsEditableRole] = "isEditable";
|
||||||
return roles;
|
return roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -618,6 +620,10 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
|
|||||||
return eventHandler.getMediaInfo();
|
return eventHandler.getMediaInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (role == IsEditableRole) {
|
||||||
|
return eventHandler.messageComponentType() == MessageComponentType::Text && evt.senderId() == m_currentRoom->localUser()->id();
|
||||||
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ public:
|
|||||||
AuthorDisplayNameRole, /**< The displayname for the event's sender; for name change events, the old displayname. */
|
AuthorDisplayNameRole, /**< The displayname for the event's sender; for name change events, the old displayname. */
|
||||||
IsRedactedRole, /**< Whether an event has been deleted. */
|
IsRedactedRole, /**< Whether an event has been deleted. */
|
||||||
IsPendingRole, /**< Whether an event is waiting to be accepted by the server. */
|
IsPendingRole, /**< Whether an event is waiting to be accepted by the server. */
|
||||||
|
IsEditableRole, /**< Whether the event can be edited by the user. */
|
||||||
LastRole, // Keep this last
|
LastRole, // Keep this last
|
||||||
};
|
};
|
||||||
Q_ENUM(EventRoles)
|
Q_ENUM(EventRoles)
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ QQC2.Control {
|
|||||||
onTriggered: emojiDialog.open()
|
onTriggered: emojiDialog.open()
|
||||||
},
|
},
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
visible: root.delegate && root.delegate.author.isLocalUser && (root.delegate.delegateType === DelegateType.Emote || root.delegate.delegateType === DelegateType.Message) && !root.currentRoom.readOnly
|
visible: root.delegate && root.delegate.isEditable && !root.currentRoom.readOnly
|
||||||
text: i18n("Edit")
|
text: i18n("Edit")
|
||||||
icon.name: "document-edit"
|
icon.name: "document-edit"
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
|
|||||||
@@ -146,6 +146,11 @@ TimelineDelegate {
|
|||||||
*/
|
*/
|
||||||
required property bool isPending
|
required property bool isPending
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Whether the event can be edited by the local user.
|
||||||
|
*/
|
||||||
|
required property bool isEditable
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Whether an encrypted message is sent in a verified session.
|
* @brief Whether an encrypted message is sent in a verified session.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user