Philipp Hörist pushed to branch master at gajim / gajim
Commits:
8e119c4a by Nicoco at 2025-10-01T21:50:50+00:00
feat: Reactions: Add support for max_reactions_per_user
- - - - -
3 changed files:
- data/gajim.doap
- gajim/common/modules/contacts.py
- gajim/gtk/conversation/rows/message.py
Changes:
=====================================
data/gajim.doap
=====================================
@@ -723,9 +723,10 @@
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0444.html"/>
- <xmpp:status>complete</xmpp:status>
- <xmpp:version>0.1.0</xmpp:version>
+ <xmpp:status>partial</xmpp:status>
+ <xmpp:version>0.2.1</xmpp:version>
<xmpp:since>1.9.0</xmpp:since>
+ <xmpp:note>Partial restriction support, when max_reactions_per_user =
1.</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
=====================================
gajim/common/modules/contacts.py
=====================================
@@ -661,6 +661,13 @@ def is_bot(self) -> bool:
return any(r.is_bot for r in self.iter_resources())
+ @property
+ def reactions_per_user(self) -> int | None:
+ disco = app.storage.cache.get_last_disco_info(self._jid.domain)
+ if disco is None:
+ return None
+ return disco.reactions_per_user
+
class ResourceContact(CommonContact):
def __init__(self, logger: LogAdapter, jid: JID, account: str) -> None:
@@ -952,6 +959,18 @@ def has_composing_participants(self) -> bool:
def get_composers(self) -> list['GroupchatParticipant']:
return self.get_module('Chatstate').get_composers(self._jid)
+ @property
+ def reactions_per_user(self) -> int | None:
+ for entity in (self._jid, self._jid.domain):
+ disco = app.storage.cache.get_last_disco_info(entity)
+ if disco is None:
+ continue
+
+ if disco.reactions_per_user is not None:
+ return disco.reactions_per_user
+
+ return None
+
class GroupchatParticipant(CommonContact):
def __init__(self, logger: LogAdapter, jid: JID, account: str) -> None:
@@ -1099,6 +1118,10 @@ def is_blocked(self) -> bool:
return client.get_module('MucBlocking').is_blocked(
self.room.jid, self.occupant_id)
+ @property
+ def reactions_per_user(self) -> int | None:
+ return self.room.reactions_per_user
+
def can_add_to_roster(contact: BareContact) -> bool:
if contact.is_self:
=====================================
gajim/gtk/conversation/rows/message.py
=====================================
@@ -488,6 +488,8 @@ def send_reaction(self, emoji: str, toggle: bool = True) ->
None:
if emoji in our_reactions:
our_reactions.discard(emoji)
+ elif self._contact.reactions_per_user == 1:
+ our_reactions = {emoji}
else:
our_reactions.add(emoji)
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/8e119c4afd0a779cc90fbaf85026f09a1b35c4be
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/8e119c4afd0a779cc90fbaf85026f09a1b35c4be
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]