Page MenuHomePhorge

No OneTemporary

Authored By
Unknown
Size
7 KB
Referenced Files
None
Subscribers
None
diff --git a/src/contents/ui/EventSourceView.qml b/src/contents/ui/EventSourceView.qml
new file mode 100644
index 0000000..f0d0dbf
--- /dev/null
+++ b/src/contents/ui/EventSourceView.qml
@@ -0,0 +1,41 @@
+/*
+ * This file is part of kazv.
+ * SPDX-FileCopyrightText: 2023 tusooa <tusooa@kazv.moe>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import QtQuick 2.15
+import QtQuick.Layouts 1.15
+import QtQuick.Controls 2.15
+
+ColumnLayout {
+ property var event
+
+ Label {
+ text: l10n.get('event-source-decrypted')
+ visible: event.decrypted
+ }
+
+ TextArea {
+ objectName: 'decryptedSourceView'
+ text: stringify(event.decryptedSource)
+ readOnly: true
+ font.family: 'monospace'
+ visible: event.decrypted
+ }
+
+ Label {
+ text: l10n.get('event-source-original')
+ }
+
+ TextArea {
+ objectName: 'originalSourceView'
+ text: stringify(event.originalSource)
+ readOnly: true
+ font.family: 'monospace'
+ }
+
+ function stringify(json) {
+ return JSON.stringify(json, null, 2);
+ }
+}
diff --git a/src/resources.qrc b/src/resources.qrc
index b2b3658..26af15a 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -1,56 +1,57 @@
<RCC>
<qresource prefix="/">
<file alias="main.qml">contents/ui/main.qml</file>
<file alias="LoginPage.qml">contents/ui/LoginPage.qml</file>
<file alias="MainPage.qml">contents/ui/MainPage.qml</file>
<file alias="TabView.qml">contents/ui/TabView.qml</file>
<file alias="Tab.qml">contents/ui/Tab.qml</file>
<file alias="RoomListView.qml">contents/ui/RoomListView.qml</file>
<file alias="RoomPage.qml">contents/ui/RoomPage.qml</file>
<file alias="RoomTimelineView.qml">contents/ui/RoomTimelineView.qml</file>
<file alias="SendMessageBox.qml">contents/ui/SendMessageBox.qml</file>
<file alias="EventView.qml">contents/ui/EventView.qml</file>
+ <file alias="EventSourceView.qml">contents/ui/EventSourceView.qml</file>
<file alias="Bubble.qml">contents/ui/Bubble.qml</file>
<file alias="MediaFileMenu.qml">contents/ui/MediaFileMenu.qml</file>
<file alias="KazvIOMenu.qml">contents/ui/KazvIOMenu.qml</file>
<file alias="event-types/Simple.qml">contents/ui/event-types/Simple.qml</file>
<file alias="event-types/Text.qml">contents/ui/event-types/Text.qml</file>
<file alias="event-types/Emote.qml">contents/ui/event-types/Emote.qml</file>
<file alias="event-types/Notice.qml">contents/ui/event-types/Notice.qml</file>
<file alias="event-types/State.qml">contents/ui/event-types/State.qml</file>
<file alias="event-types/TextTemplate.qml">contents/ui/event-types/TextTemplate.qml</file>
<file alias="event-types/Image.qml">contents/ui/event-types/Image.qml</file>
<file alias="event-types/File.qml">contents/ui/event-types/File.qml</file>
<file alias="event-types/Video.qml">contents/ui/event-types/Video.qml</file>
<file alias="event-types/Audio.qml">contents/ui/event-types/Audio.qml</file>
<file alias="event-types/MediaBubble.qml">contents/ui/event-types/MediaBubble.qml</file>
<file alias="event-types/Redacted.qml">contents/ui/event-types/Redacted.qml</file>
<file alias="ActionSettingsPage.qml">contents/ui/ActionSettingsPage.qml</file>
<file alias="CreateRoomPage.qml">contents/ui/CreateRoomPage.qml</file>
<file alias="JoinRoomPage.qml">contents/ui/JoinRoomPage.qml</file>
<file alias="AsyncHandler.qml">contents/ui/AsyncHandler.qml</file>
<file alias="UploadFileHelper.qml">contents/ui/UploadFileHelper.qml</file>
<file alias="SettingsPage.qml">contents/ui/SettingsPage.qml</file>
<file alias="settings/ProfileSettings.qml">contents/ui/settings/ProfileSettings.qml</file>
<file alias="device-mgmt/Device.qml">contents/ui/device-mgmt/Device.qml</file>
<file alias="device-mgmt/DeviceList.qml">contents/ui/device-mgmt/DeviceList.qml</file>
<file alias="UserPage.qml">contents/ui/UserPage.qml</file>
<file alias="shortcuts/ActionCollection.qml">contents/ui/shortcuts/ActionCollection.qml</file>
<file alias="shortcuts/ActionItem.qml">contents/ui/shortcuts/ActionItem.qml</file>
<file alias="shortcuts/ActionSettings.qml">contents/ui/shortcuts/ActionSettings.qml</file>
<file alias="shortcuts/ShortcutInput.qml">contents/ui/shortcuts/ShortcutInput.qml</file>
<file alias="l10n.js">js/l10n.js</file>
<file alias="fluent-bundle.js">js/transformed-libs/fluent-bundle.js</file>
<file alias="fluent-sequence.js">js/transformed-libs/fluent-sequence.js</file>
<file alias="fluent-langneg.js">js/transformed-libs/fluent-langneg.js</file>
<file alias="bundled-deps.js">js/transformed-libs/bundled-deps.js</file>
<file alias="global-this.js">js/global-this.js</file>
<file alias="matrix-helpers.js">js/matrix-helpers.js</file>
</qresource>
</RCC>
diff --git a/src/tests/quick-tests/tst_EventSourceView.qml b/src/tests/quick-tests/tst_EventSourceView.qml
new file mode 100644
index 0000000..1215100
--- /dev/null
+++ b/src/tests/quick-tests/tst_EventSourceView.qml
@@ -0,0 +1,90 @@
+/*
+ * This file is part of kazv.
+ * SPDX-FileCopyrightText: 2023 tusooa <tusooa@kazv.moe>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import QtQuick 2.3
+import QtQuick.Layouts 1.15
+import QtTest 1.0
+
+import '../../contents/ui' as Kazv
+import 'test-helpers.js' as Helpers
+import 'test-helpers' as TestHelpers
+
+Item {
+ id: item
+ width: 800
+ height: 600
+ property var l10n: Helpers.fluentMock
+ property var unencryptedEvent: ({
+ encrypted: false,
+ decrypted: false,
+ originalSource: {
+ event_id: '$foo',
+ content: {},
+ },
+ })
+
+ property var encryptedEvent: ({
+ encrypted: true,
+ decrypted: false,
+ originalSource: {
+ event_id: '$foo',
+ content: {},
+ },
+ })
+
+ property var decryptedEvent: ({
+ encrypted: true,
+ decrypted: true,
+ originalSource: {
+ event_id: '$foo',
+ content: {},
+ },
+ decryptedSource: {
+ content: {
+ msgtype: 'm.text',
+ body: 'foo',
+ },
+ },
+ })
+
+ ColumnLayout {
+ Kazv.EventSourceView {
+ id: evUnencrypted
+ event: unencryptedEvent
+ }
+
+ Kazv.EventSourceView {
+ id: evEncrypted
+ event: encryptedEvent
+ }
+
+ Kazv.EventSourceView {
+ id: evDecrypted
+ event: decryptedEvent
+ }
+ }
+
+ TestCase {
+ id: eventSourceViewTest
+ name: 'EventSourceViewTest'
+ when: windowShown
+
+ function test_unencrypted() {
+ verify(!findChild(evUnencrypted, 'decryptedSourceView').visible);
+ verify(findChild(evUnencrypted, 'originalSourceView').visible);
+ }
+
+ function test_encrypted() {
+ verify(!findChild(evEncrypted, 'decryptedSourceView').visible);
+ verify(findChild(evEncrypted, 'originalSourceView').visible);
+ }
+
+ function test_decrypted() {
+ verify(findChild(evDecrypted, 'decryptedSourceView').visible);
+ verify(findChild(evDecrypted, 'originalSourceView').visible);
+ }
+ }
+}

File Metadata

Mime Type
text/x-diff
Expires
Mon, Nov 2, 8:56 AM (3 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1804008
Default Alt Text
(7 KB)

Event Timeline