Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85637548
D349.1786787593.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
D349.1786787593.diff
View Options
diff --git a/src/contents/ui/event-types/Fallback.qml b/src/contents/ui/event-types/Fallback.qml
--- a/src/contents/ui/event-types/Fallback.qml
+++ b/src/contents/ui/event-types/Fallback.qml
@@ -16,6 +16,17 @@
id: upper
text: getText()
+ property var requestKeyAction: Kirigami.Action {
+ text: l10n.get('event-request-key-action')
+ onTriggered: matrixSession.requestShareRoomSessionKey(event)
+ }
+
+ property bool isUndecryptable: (
+ event.content.msgtype === 'moe.kazv.mxc.cannot.decrypt'
+ || event.content.msgtype === 'xyz.tusooa.kazv.not.yet.decrypted'
+ )
+ innerBubble.menuContent: isUndecryptable ? [requestKeyAction] : []
+
Kirigami.Icon {
objectName: 'fallbackIcon'
source: /* iconName: */ 'emblem-question'
@@ -25,8 +36,7 @@
function getText() {
if (event.type === 'm.room.message') {
- if (event.content.msgtype === 'moe.kazv.mxc.cannot.decrypt' ||
- event.content.msgtype === 'xyz.tusooa.kazv.not.yet.decrypted') {
+ if (isUndecryptable) {
return l10n.get('event-cannot-decrypt-text');
} else {
return l10n.get('event-msgtype-fallback-text', {
diff --git a/src/contents/ui/event-types/TextTemplate.qml b/src/contents/ui/event-types/TextTemplate.qml
--- a/src/contents/ui/event-types/TextTemplate.qml
+++ b/src/contents/ui/event-types/TextTemplate.qml
@@ -20,6 +20,7 @@
property var text
default property var children
property alias textFormat: label.textFormat
+ property alias innerBubble: bubble
property var linkToActivate
property var selectedUserId
diff --git a/src/l10n/cmn-Hans/100-ui.ftl b/src/l10n/cmn-Hans/100-ui.ftl
--- a/src/l10n/cmn-Hans/100-ui.ftl
+++ b/src/l10n/cmn-Hans/100-ui.ftl
@@ -270,6 +270,7 @@
event-unpin-cancel-action = 不取消置顶
event-unpin-success-prompt = 消息从房间取消置顶了。
event-unpin-failed-prompt = 无法取消置顶消息。错误代码:{ $errorCode }。错误讯息:{ $errorMsg }。
+event-request-key-action = 请求加密密钥
media-file-menu-option-view = 查看
media-file-menu-option-save-as = 保存为
diff --git a/src/l10n/en/100-ui.ftl b/src/l10n/en/100-ui.ftl
--- a/src/l10n/en/100-ui.ftl
+++ b/src/l10n/en/100-ui.ftl
@@ -292,6 +292,7 @@
event-unpin-cancel-action = Do not unpin
event-unpin-success-prompt = Message unpinned from room.
event-unpin-failed-prompt = Unable to unpin message. Error code: { $errorCode }. Error message: { $errorMsg }.
+event-request-key-action = Request encryption key
media-file-menu-option-view = View
media-file-menu-option-save-as = Save as
diff --git a/src/matrix-session.hpp b/src/matrix-session.hpp
--- a/src/matrix-session.hpp
+++ b/src/matrix-session.hpp
@@ -326,6 +326,16 @@
*/
MatrixPromise *requestVerifyDevice(QString userId, QString deviceId);
+ /**
+ * Request other sessions to send this a shared room key that can
+ * decrypt `event`.
+ *
+ * @param event An undecryptable event.
+ * @return A Promise that resolves when the request is sent, or when
+ * there is an error.
+ */
+ MatrixPromise *requestShareRoomSessionKey(MatrixEvent *event);
+
private:
MatrixPromise *sendAccountDataImpl(Kazv::Event event);
};
diff --git a/src/matrix-session.cpp b/src/matrix-session.cpp
--- a/src/matrix-session.cpp
+++ b/src/matrix-session.cpp
@@ -678,3 +678,18 @@
std::move(deviceId).toStdString()
));
}
+
+MatrixPromise *MatrixSession::requestShareRoomSessionKey(MatrixEvent *event)
+{
+ auto e = event->underlyingEvent();
+ if (!(e.originalJson().get().contains("room_id")
+ && e.originalJson().get().at("room_id").is_string())) {
+ return nullptr;
+ }
+ auto roomId = e.originalJson().get().at("room_id").template get<std::string>();
+
+ return new MatrixPromise(m_clientOnSecondaryRoot.requestShareRoomSessionKey(
+ roomId,
+ e
+ ));
+}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Aug 15, 2:53 AM (22 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1729576
Default Alt Text
D349.1786787593.diff (3 KB)
Attached To
Mode
D349: Allow user to request encryption key for undecryptable events
Attached
Detach File
Event Timeline
Log In to Comment