moment/src/gui/Popups/RedactPopup.qml

87 lines
2.0 KiB
QML
Raw Normal View History

2020-03-27 07:31:57 +11:00
// SPDX-License-Identifier: LGPL-3.0-or-later
import QtQuick 2.12
import QtQuick.Layouts 1.12
import "../Base"
import "../Base/ButtonLayout"
2020-03-27 07:31:57 +11:00
HFlickableColumnPopup {
id: popup
2020-04-03 01:19:43 +11:00
property string preferUserId: ""
property string roomId: ""
2020-03-27 07:31:57 +11:00
property var eventSenderAndIds: [] // [[senderId, event.id], ...]
property bool onlyOwnMessageWarning: false
property bool isLast: false
2020-03-27 07:31:57 +11:00
function remove() {
const idsForSender = {} // {senderId: [event.id, ...]}
2020-03-27 07:31:57 +11:00
for (const [senderId, eventClientId] of eventSenderAndIds) {
if (! idsForSender[senderId])
idsForSender[senderId] = []
2020-04-03 01:19:43 +11:00
idsForSender[senderId].push(eventClientId)
}
for (const [senderId, eventClientIds] of Object.entries(idsForSender))
py.callClientCoro(
mainUI.accountIds.includes(senderId) ? senderId : preferUserId,
"room_mass_redact",
[roomId, reasonField.item.text, ...eventClientIds]
)
popup.close()
}
page.footer: ButtonLayout {
ApplyButton {
text: qsTr("Remove")
icon.name: "remove-message"
onClicked: remove()
}
CancelButton {
onClicked: popup.close()
}
}
onOpened: reasonField.item.forceActiveFocus()
2020-03-27 07:31:57 +11:00
2020-04-03 01:19:43 +11:00
SummaryLabel {
text:
isLast ?
qsTr("Remove your last message?") :
eventSenderAndIds.length > 1 ?
qsTr("Remove %1 messages?").arg(eventSenderAndIds.length) :
qsTr("Remove this message?")
}
DetailsLabel {
color: theme.colors.warningText
text:
onlyOwnMessageWarning ?
qsTr("Only your messages can be removed") :
""
}
2020-04-03 01:19:43 +11:00
HLabeledItem {
2020-04-03 01:19:43 +11:00
id: reasonField
label.text: qsTr("Optional reason:")
2020-04-03 01:19:43 +11:00
Layout.fillWidth: true
HTextField {
width: parent.width
onAccepted: popup.remove()
}
2020-04-03 01:19:43 +11:00
}
2020-03-27 07:31:57 +11:00
}