flare: update patches and upstream source

This commit is contained in:
2026-05-06 15:21:53 -04:00
parent f1321d2223
commit 78d6aa01d5
10 changed files with 201 additions and 757 deletions

View File

@@ -1,4 +1,4 @@
From 9ec9203bd47b7369e2a97fee2d6896576da23da0 Mon Sep 17 00:00:00 2001
From 7ab41203098dd868ee70249fcd78c8444438d80c Mon Sep 17 00:00:00 2001
From: Simon Gardling <titaniumtown@proton.me>
Date: Wed, 29 Apr 2026 19:00:12 -0400
Subject: [PATCH 1/6] feat(typing): Implement typing indicators
@@ -20,15 +20,15 @@ Subject: [PATCH 1/6] feat(typing): Implement typing indicators
data/resources/ui/channel_messages.blp | 33 +++
data/resources/ui/preferences_window.blp | 15 ++
src/backend/channel.rs | 59 +++++-
src/backend/manager.rs | 43 +++-
src/backend/manager.rs | 32 ++-
src/backend/manager_thread.rs | 8 +-
src/backend/message/mod.rs | 12 +-
src/gui/channel_messages.rs | 249 ++++++++++++++++++++++-
src/gui/preferences_window.rs | 23 +++
11 files changed, 441 insertions(+), 21 deletions(-)
11 files changed, 430 insertions(+), 21 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 20dc578..2bde927 100644
index 20dc578e..2bde927c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
@@ -44,7 +44,7 @@ index 20dc578..2bde927 100644
### Fixed
diff --git a/data/de.schmidhuberj.Flare.gschema.xml b/data/de.schmidhuberj.Flare.gschema.xml
index 8a58415..0705a73 100644
index 8a584152..0705a73e 100644
--- a/data/de.schmidhuberj.Flare.gschema.xml
+++ b/data/de.schmidhuberj.Flare.gschema.xml
@@ -58,6 +58,15 @@
@@ -64,7 +64,7 @@ index 8a58415..0705a73 100644
<default>"firstname"</default>
<summary>How to sort contacts, e.g with "firstname" or "surname"</summary>
diff --git a/data/resources/style.css b/data/resources/style.css
index dcd0569..00e4783 100644
index dcd05695..00e47833 100644
--- a/data/resources/style.css
+++ b/data/resources/style.css
@@ -13,6 +13,12 @@
@@ -81,7 +81,7 @@ index dcd0569..00e4783 100644
padding:0;
}
diff --git a/data/resources/ui/channel_messages.blp b/data/resources/ui/channel_messages.blp
index 53be7ab..7f438e4 100644
index 53be7ab0..7f438e44 100644
--- a/data/resources/ui/channel_messages.blp
+++ b/data/resources/ui/channel_messages.blp
@@ -102,6 +102,39 @@ template $FlChannelMessages: Box {
@@ -125,7 +125,7 @@ index 53be7ab..7f438e4 100644
styles [
"toolbar",
diff --git a/data/resources/ui/preferences_window.blp b/data/resources/ui/preferences_window.blp
index dd84f74..2068cab 100644
index dd84f748..2068cab1 100644
--- a/data/resources/ui/preferences_window.blp
+++ b/data/resources/ui/preferences_window.blp
@@ -66,6 +66,21 @@ template $FlPreferencesWindow: Adw.PreferencesDialog {
@@ -151,7 +151,7 @@ index dd84f74..2068cab 100644
}
diff --git a/src/backend/channel.rs b/src/backend/channel.rs
index 73e82f3..4bb1d38 100644
index 73e82f31..4bb1d385 100644
--- a/src/backend/channel.rs
+++ b/src/backend/channel.rs
@@ -15,8 +15,9 @@ use glib::Bytes;
@@ -229,7 +229,7 @@ index 73e82f3..4bb1d38 100644
/// This does the following (based on the type of message):
/// - Add a quote to the message if needed.
diff --git a/src/backend/manager.rs b/src/backend/manager.rs
index c25fba0..eaa41e0 100644
index 47c3dd42..c9079612 100644
--- a/src/backend/manager.rs
+++ b/src/backend/manager.rs
@@ -8,7 +8,7 @@ use libsignal_service::protocol::DeviceId;
@@ -241,22 +241,7 @@ index c25fba0..eaa41e0 100644
protocol::ServiceId,
sender::{AttachmentSpec, AttachmentUploadError},
websocket::account::DeviceInfo,
@@ -490,20 +490,42 @@ impl Manager {
Thread::Contact(uuid)
};
+ // Fast path: return the cached channel if we already know it.
+ // Without this, callers that arrive after initial channel discovery
+ // (incoming TypingMessage routing, in particular) would receive a
+ // freshly-built Channel object whose property notifications never
+ // reach widgets bound to the cached one in the UI — typing
+ // indicators on both the header bar and the channel-messages view
+ // would silently never light up.
+ if let Some(cached) = self.imp().channels.borrow().get(&thread).cloned() {
+ return cached;
+ }
+
let contact = Contact::from_service_address(&uuid, self).await;
@@ -499,16 +499,27 @@ impl Manager {
let channel = Channel::from_contact_or_group(contact, group, self).await;
channel.initialize_avatar().await;
@@ -291,7 +276,7 @@ index c25fba0..eaa41e0 100644
}
pub fn channel_from_thread(&self, thread: Thread) -> Option<Channel> {
@@ -737,14 +759,15 @@ impl Manager {
@@ -742,14 +753,15 @@ impl Manager {
pub(super) async fn send_message_to_group(
&self,
group_key: Vec<u8>,
@@ -310,7 +295,7 @@ index c25fba0..eaa41e0 100644
})
.await
diff --git a/src/backend/manager_thread.rs b/src/backend/manager_thread.rs
index 1f6a885..cba62ae 100644
index 1f6a8854..cba62ae5 100644
--- a/src/backend/manager_thread.rs
+++ b/src/backend/manager_thread.rs
@@ -21,7 +21,7 @@ use libsignal_service::{
@@ -350,7 +335,7 @@ index 1f6a885..cba62ae 100644
sender,
))
diff --git a/src/backend/message/mod.rs b/src/backend/message/mod.rs
index 11ccd7c..74952ac 100644
index 11ccd7ca..74952acc 100644
--- a/src/backend/message/mod.rs
+++ b/src/backend/message/mod.rs
@@ -270,14 +270,16 @@ impl Message {
@@ -376,7 +361,7 @@ index 11ccd7c..74952ac 100644
let Some(channel) = channel else {
diff --git a/src/gui/channel_messages.rs b/src/gui/channel_messages.rs
index 0e8ae4e..831fc25 100644
index 0d64d25d..2b494a61 100644
--- a/src/gui/channel_messages.rs
+++ b/src/gui/channel_messages.rs
@@ -5,6 +5,16 @@ use crate::ApplicationError;
@@ -650,7 +635,7 @@ index 0e8ae4e..831fc25 100644
if let Some(active_chan) = self.active_channel.borrow().as_ref() {
active_chan.set_property("draft", self.text_entry.text());
}
@@ -195,6 +430,7 @@ pub mod imp {
@@ -202,6 +437,7 @@ pub mod imp {
}
self.obj().focus_input();
@@ -658,7 +643,7 @@ index 0e8ae4e..831fc25 100644
}
#[template_callback(function)]
@@ -501,7 +737,18 @@ pub mod imp {
@@ -508,7 +744,18 @@ pub mod imp {
s.obj().set_reply_message(None::<TextMessage>);
if let Some(channel) = s.active_channel.borrow().as_ref() {
let draft = channel.property("draft");
@@ -678,7 +663,7 @@ index 0e8ae4e..831fc25 100644
}
),
diff --git a/src/gui/preferences_window.rs b/src/gui/preferences_window.rs
index 8137af7..b2b6405 100644
index 8137af7e..b2b64053 100644
--- a/src/gui/preferences_window.rs
+++ b/src/gui/preferences_window.rs
@@ -78,6 +78,11 @@ pub mod imp {