Compare commits

...

9 Commits

Author SHA1 Message Date
Tobias Fella
7d51d43709 Test 2026-02-20 00:18:27 +01:00
Tobias Fella
ded0a8a74e update snap 2026-02-20 00:18:27 +01:00
Tobias Fella
2a2ee9adb7 Adapt to change 2026-02-20 00:18:27 +01:00
Tobias Fella
f696a0bb37 Add corrosion to snap 2026-02-20 00:18:27 +01:00
Tobias Fella
a351f988ed Fix flatpak 2026-02-20 00:18:27 +01:00
Tobias Fella
ce5b527be9 Add license to generated-sources 2026-02-20 00:18:27 +01:00
Tobias Fella
fbf39ffcf5 Use rust target of libquotient 2026-02-20 00:18:27 +01:00
Tobias Fella
9498f76bfb Port flatpak 2026-02-20 00:18:27 +01:00
Tobias Fella
c8eb62989c Adapt to libquotient changes for matrix-rust-sdk-crypto 2026-02-20 00:18:27 +01:00
6 changed files with 3986 additions and 37 deletions

View File

@@ -4,3 +4,4 @@
[BlueprintSettings]
kde/applications/neochat.packageAppx=True
libs/qt.qtMajorVersion=6
qt-libs/libquotient.version=rust

View File

@@ -4,6 +4,17 @@
"runtime": "org.kde.Platform",
"runtime-version": "6.10",
"sdk": "org.kde.Sdk",
"sdk-extensions" : [
"org.freedesktop.Sdk.Extension.rust-stable"
],
"build-options": {
"append-path": "/usr/lib/sdk/rust-stable/bin",
"env": {
"RUST_BACKTRACE": "1",
"CARGO_NET_OFFLINE": "true",
"RUSTFLAGS": "--remap-path-prefix =../"
}
},
"command": "neochat",
"tags": [
"nightly"
@@ -61,26 +72,6 @@
}
]
},
{
"name": "olm",
"buildsystem": "cmake-ninja",
"config-opts": [
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5",
"-DOLM_TESTS=OFF"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.matrix.org/matrix-org/olm.git",
"tag": "3.2.16",
"x-checker-data": {
"type": "git",
"tag-pattern": "^([\\d.]+)$"
},
"commit": "7e0c8277032e40308987257b711b38af8d77cc69"
}
]
},
{
"name": "libsecret",
"buildsystem": "meson",
@@ -129,21 +120,37 @@
]
},
{
"name": "libQuotient",
"name": "corrosion",
"buildsystem": "cmake-ninja",
"sources": [
{
"type": "git",
"url": "https://github.com/quotient-im/libQuotient.git",
"branch": "dev",
"disable-submodules": true
"url": "https://github.com/corrosion-rs/corrosion",
"tag": "v0.6.0"
}
]
},
{
"name": "libQuotient",
"buildsystem": "cmake-ninja",
"sources": [
"flatpak/generated-sources.json",
{
"type": "git",
"url": "https://github.com/quotient-im/libquotient",
"branch": "tobias/rust-sdk-crypto"
}
],
"config-opts": [
"-DBUILD_WITH_QT6=ON",
"-DQuotient_ENABLE_E2EE=ON",
"-DBUILD_TESTING=OFF"
]
],
"build-options": {
"env": {
"CARGO_HOME": "/run/build/libQuotient/cargo"
}
}
},
{
"name": "cmark",

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: none
SPDX-License-Identifier: CC0-1.0

View File

@@ -41,10 +41,18 @@ slots:
bus: session
parts:
olm:
source: https://gitlab.matrix.org/matrix-org/olm.git
rustup:
plugin: rust
source: .
rust-channel: "1.76"
override-build: ""
override-prime: ""
corrosion:
after: [rustup]
source: https://github.com/corrosion-rs/corrosion.git
source-depth: 1
source-tag: '3.2.16'
source-tag: 'v0.6.0'
plugin: cmake
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
@@ -98,7 +106,7 @@ parts:
libquotient:
after:
- olm
- corrosion
- qtkeychain
source: https://github.com/quotient-im/libQuotient.git
source-tag: 0.9.2
@@ -114,8 +122,6 @@ parts:
- -DCMAKE_INSTALL_PREFIX=/usr
- -DCMAKE_BUILD_TYPE=Release
- -DBUILD_TESTING=OFF
- -DQuotient_ENABLE_E2EE=ON
- -DBUILD_WITH_QT6=ON
prime:
- -usr/include
- -usr/lib/*/pkgconfig

View File

@@ -29,7 +29,7 @@ Kirigami.Page {
},
State {
name: "waitingForVerification"
when: root.session.state === KeyVerificationSession.WAITINGFORVERIFICATION
when: root.session.state === KeyVerificationSession.TRANSITIONED && root.session.sasState === KeyVerificationSession.SASKEYSEXCHANGED
PropertyChanges {
stateLoader.sourceComponent: emojiSas
}
@@ -78,7 +78,15 @@ Kirigami.Page {
},
State {
name: "done"
when: root.session.state === KeyVerificationSession.DONE
when: root.session.sasState === KeyVerificationSession.SASDONE
PropertyChanges {
target: stateLoader
sourceComponent: message
}
},
State {
name: "confirmed"
when: root.session.state === KeyVerificationSession.TRANSITIONED && root.session.sasState === KeyVerificationSession.SASCONFIRMED
PropertyChanges {
stateLoader.sourceComponent: message
}
@@ -141,6 +149,14 @@ Kirigami.Page {
return "security-medium-symbolic";
case KeyVerificationSession.DONE:
return "security-high";
case KeyVerificationSession.TRANSITIONED: {
if (root.session.sasState === KeyVerificationSession.SASCONFIRMED) {
return "security-high";
}
if (root.session.sasState === KeyVerificationSession.SASDONE) {
return "security-high";
}
}
default:
return "";
}
@@ -149,16 +165,38 @@ Kirigami.Page {
switch (root.session.state) {
case KeyVerificationSession.WAITINGFORREADY:
return i18n("Waiting for device to accept verification.");
case KeyVerificationSession.INCOMING:
return i18n("Incoming key verification request from device **%1**", root.session.remoteDeviceId);
case KeyVerificationSession.INCOMING: {
if (root.session.remoteDeviceId.length > 0) {
return i18n("Incoming key verification request from device **%1**", root.session.remoteDeviceId);
} else {
return i18n("Incoming key verification request from **%1**", root.session.remoteUserId);
}
}
case KeyVerificationSession.WAITINGFORMAC:
return i18n("Waiting for other party to send us keys.");
case KeyVerificationSession.WAITINGFORKEY:
return i18n("Waiting for other party to confirm our keys.");
case KeyVerificationSession.WAITINGFORACCEPT:
return i18n("Waiting for other party to verify.");
case KeyVerificationSession.DONE:
return i18n("Successfully verified device **%1**", root.session.remoteDeviceId);
case KeyVerificationSession.DONE: {
if (root.session.remoteDeviceId.length > 0) {
return i18n("Successfully verified device **%1**", root.session.remoteDeviceId)
} else {
return i18nc("@info", "Successfully verified **%1**", root.session.remoteUserId)
}
}
case KeyVerificationSession.TRANSITIONED: {
if (root.session.sasState === KeyVerificationSession.SASCONFIRMED) {
return i18nc("@info", "Waiting for remote party to confirm verification");
}
if (root.session.sasState === KeyVerificationSession.SASDONE) {
if (root.session.remoteDeviceId.length > 0) {
return i18n("Successfully verified device **%1**", root.session.remoteDeviceId)
} else {
return i18nc("@info", "Successfully verified **%1**", root.session.remoteUserId)
}
}
}
default:
return "";
}