diff options
| author | fiaxh <git@lightrise.org> | 2025-06-13 19:38:49 +0200 |
|---|---|---|
| committer | fiaxh <git@lightrise.org> | 2025-06-13 19:40:09 +0200 |
| commit | 915b18789f002fa8f4c50fe1e626d34cc47c5c9b (patch) | |
| tree | 34fc929c3dd7543cafa971e6b86ac2d2c5b3c15d /xmpp-vala | |
| parent | 2e6454a92e85e87e17ce88924155d825b2b6eca3 (diff) | |
Disregard SFS fallback messages even without source attachment given a full-body fallback indication
Diffstat (limited to 'xmpp-vala')
| -rw-r--r-- | xmpp-vala/src/module/xep/0428_fallback_indication.vala | 7 | ||||
| -rw-r--r-- | xmpp-vala/src/module/xep/0447_stateless_file_sharing.vala | 10 |
2 files changed, 13 insertions, 4 deletions
diff --git a/xmpp-vala/src/module/xep/0428_fallback_indication.vala b/xmpp-vala/src/module/xep/0428_fallback_indication.vala index 3cad689b..d07ec9be 100644 --- a/xmpp-vala/src/module/xep/0428_fallback_indication.vala +++ b/xmpp-vala/src/module/xep/0428_fallback_indication.vala @@ -6,10 +6,9 @@ namespace Xmpp.Xep.FallbackIndication { public class Fallback { public string ns_uri { get; set; } - public FallbackLocation[] locations; + public Gee.List<FallbackLocation> locations; - - public Fallback(string ns_uri, FallbackLocation[] locations) { + public Fallback(string ns_uri, Gee.List<FallbackLocation> locations) { this.ns_uri = ns_uri; this.locations = locations; } @@ -73,7 +72,7 @@ namespace Xmpp.Xep.FallbackIndication { } } if (locations.is_empty) continue; - ret.add(new Fallback(ns_uri, locations.to_array())); + ret.add(new Fallback(ns_uri, locations)); } return ret; diff --git a/xmpp-vala/src/module/xep/0447_stateless_file_sharing.vala b/xmpp-vala/src/module/xep/0447_stateless_file_sharing.vala index 63cab59f..86da6a3a 100644 --- a/xmpp-vala/src/module/xep/0447_stateless_file_sharing.vala +++ b/xmpp-vala/src/module/xep/0447_stateless_file_sharing.vala @@ -44,6 +44,16 @@ namespace Xmpp.Xep.StatelessFileSharing { return ret; } + public static bool is_sfs_fallback_message(MessageStanza message) { + Gee.List<FallbackIndication.Fallback> fallbacks = Xep.FallbackIndication.get_fallbacks(message); + foreach (var fallback in fallbacks) { + if (fallback.ns_uri == StatelessFileSharing.NS_URI && fallback.locations.any_match((it) => it.is_whole)) { + return true; + } + } + return false; + } + // Currently only returns a single http source private static Gee.List<Source>? get_sources(StanzaNode sources_node) { string? url = HttpSchemeForUrlData.get_url(sources_node); |
