Philipp Hörist pushed to branch master at gajim / gajim
Commits:
17fc8ff9 by Philipp Hörist at 2018-02-21T19:23:26+01:00
Limit deduplication to correct archive
We limit the search to non-groupchat messages because a stanza id
is only unique within an archive
- - - - -
0c7f1937 by Philipp Hörist at 2018-02-21T22:09:13+01:00
Fix duplicates for self messages and MUC PMs
Fixes #8812
- - - - -
015d99ea by Philipp Hörist at 2018-02-21T22:21:35+01:00
Print correct archive jid in log message
- - - - -
2 changed files:
- gajim/common/connection_handlers_events.py
- gajim/common/logger.py
Changes:
=====================================
gajim/common/connection_handlers_events.py
=====================================
--- a/gajim/common/connection_handlers_events.py
+++ b/gajim/common/connection_handlers_events.py
@@ -163,6 +163,23 @@ class HelperEvent:
if forwarded is not None:
return forwarded.getTag('message', protocol=True)
+ def _is_self_message(self, message):
+ if self.self_message is not None:
+ return self.self_message
+ own_jid = self.conn.get_own_jid()
+ frm = message.getFrom()
+ to = message.getTo()
+ # If 'to' is not set we assume own jid
+ self.self_message = frm.bareMatch(to or own_jid)
+ return self.self_message
+
+ def _is_muc_pm(self, message):
+ if self.muc_pm is not None:
+ return self.muc_pm
+ self.muc_pm = message.getTag(
+ 'x', namespace=nbxmpp.NS_MUC_USER) is not None
+ return self.muc_pm
+
class HttpAuthReceivedEvent(nec.NetworkIncomingEvent):
name = 'http-auth-received'
base_network_events = []
@@ -1015,6 +1032,8 @@ class MamMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.encrypted = False
self.groupchat = False
self.nick = None
+ self.self_message = None
+ self.muc_pm = None
def generate(self):
account = self.conn.name
@@ -1081,6 +1100,11 @@ class MamMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
def get_unique_id(self):
stanza_id = self.get_stanza_id(self.result, query=True)
+
+ if self._is_self_message(self.msg_) or self._is_muc_pm(self.msg_):
+ origin_id = self.msg_.getOriginID()
+ return stanza_id, origin_id
+
if self.conn.get_own_jid().bareMatch(self.msg_.getFrom()):
# message we sent
origin_id = self.msg_.getOriginID()
@@ -1217,6 +1241,8 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.forwarded = False
self.sent = False
self.encrypted = False
+ self.self_message = None
+ self.muc_pm = None
account = self.conn.name
if self.stanza.getFrom() == self.conn.get_own_jid(warn=True):
@@ -1250,11 +1276,16 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
self.unique_id = self.get_unique_id()
# Check groupchat messages for duplicates,
# We do this because of MUC History messages
- if self.stanza.getType() == 'groupchat':
+ type_ = self.stanza.getType()
+ if type_ == 'groupchat' or self.self_message or self.muc_pm:
+ if type_ == 'groupchat':
+ archive_jid = self.stanza.getFrom().getStripped()
+ else:
+ archive_jid = self.conn.get_own_jid()
if app.logger.find_stanza_id(account,
- self.stanza.getFrom().getStripped(),
+ archive_jid,
self.unique_id,
- groupchat=True):
+ groupchat=type_ == 'groupchat'):
return
address_tag = self.stanza.getTag('addresses',
@@ -1406,6 +1437,21 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
return True
def get_unique_id(self):
+ '''
+ Messages to self:
+
+ Messages to self are stored multiple times in MAM so we cant use
+ stanza-id to deduplicate. We use origin-id instead. Its not perfect
+ but there is no better way for now.
+ We drop "received"-Carbons of Message to self, so we dont have to
+ parse origin-id in that case.
+
+ MUC PMs:
+
+ MUC PMs are also stored multiple times, we also depend on origin-id
+ for now.
+ '''
+
if self.stanza.getType() == 'groupchat':
# TODO: Disco the MUC check if 'urn:xmpp:mam:2' is announced
return self.get_stanza_id(self.stanza)
@@ -1424,6 +1470,8 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
protocol=True)
if sent_carbon is not None:
message = self.get_forwarded_message(sent_carbon)
+ if self._is_self_message(message) or self._is_muc_pm(message):
+ return message.getOriginID()
return self.get_stanza_id(message)
# Received Carbon
@@ -1432,9 +1480,13 @@ class MessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent):
protocol=True)
if received_carbon is not None:
message = self.get_forwarded_message(received_carbon)
+ if self._is_muc_pm(message):
+ return message.getOriginID()
return self.get_stanza_id(message)
# Normal Message
+ if self._is_self_message(self.stanza) or self._is_muc_pm(self.stanza):
+ return self.stanza.getOriginID()
return self.get_stanza_id(self.stanza)
class ZeroconfMessageReceivedEvent(MessageReceivedEvent):
=====================================
gajim/common/logger.py
=====================================
--- a/gajim/common/logger.py
+++ b/gajim/common/logger.py
@@ -1158,6 +1158,7 @@ class Logger:
:param account: The account
:param archive_jid: The jid of the archive the stanza-id belongs to
+ only used if groupchat=True
:param stanza_id: The stanza-id
@@ -1182,7 +1183,7 @@ class Logger:
if groupchat:
# Stanza ID is only unique within a specific archive.
# So a Stanza ID could be repeated in different MUCs, so we
- # filter also for the archive JID
+ # filter also for the archive JID which is the bare MUC jid.
sql = '''
SELECT stanza_id FROM logs
WHERE stanza_id IN ({values})
@@ -1193,14 +1194,14 @@ class Logger:
else:
sql = '''
SELECT stanza_id FROM logs
- WHERE stanza_id IN ({values}) AND account_id = ? LIMIT 1
+ WHERE stanza_id IN ({values}) AND account_id = ? AND kind != ? LIMIT 1
'''.format(values=', '.join('?' * len(ids)))
result = self.con.execute(
- sql, tuple(ids) + (account_id,)).fetchone()
+ sql, tuple(ids) + (account_id, KindConstant.GC_MSG)).fetchone()
if result is not None:
log.info('Found duplicated message, stanza-id: %s, origin-id: %s, '
- 'archive-jid: %s, account: %s', stanza_id, origin_id, archive_id, account_id)
+ 'archive-jid: %s, account: %s', stanza_id, origin_id, archive_jid, account_id)
return True
return False
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/d6bfea1b19f11183edb25a086c3faa0b1…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/d6bfea1b19f11183edb25a086c3faa0b1…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
27ffae2a by Philipp Hörist at 2018-02-20T22:03:57+01:00
Fix MessagTextview height
On some Desktops eg. Mate, the MessageTextview was to big, because
the default height seems to be 82.
What influences the default height (compare Windows where it is 46),
is unclear.
- - - - -
d6bfea1b by Philipp Hörist at 2018-02-20T22:51:28+01:00
Add extension point for GC tooltip
- - - - -
2 changed files:
- gajim/chat_control_base.py
- gajim/tooltips.py
Changes:
=====================================
gajim/chat_control_base.py
=====================================
--- a/gajim/chat_control_base.py
+++ b/gajim/chat_control_base.py
@@ -1380,13 +1380,12 @@ class ScrolledWindow(Gtk.ScrolledWindow):
def do_get_preferred_height(self):
min_height, natural_height = Gtk.ScrolledWindow.do_get_preferred_height(self)
- child = self.get_child()
# Gtk Bug: If policy is set to Automatic, the ScrolledWindow
- # has a min size of around 46 depending on the System. Because
- # we want it smaller, we set policy NEVER if the height is < 50
+ # has a min size of around 46-82 depending on the System. Because
+ # we want it smaller, we set policy NEVER if the height is < 90
# so the ScrolledWindow will shrink to around 26 (1 line heigh).
- # Once it gets over 50 its no problem to restore the policy.
- if natural_height < 50:
+ # Once it gets over 90 its no problem to restore the policy.
+ if natural_height < 90:
GLib.idle_add(self.set_policy,
Gtk.PolicyType.AUTOMATIC,
Gtk.PolicyType.NEVER)
=====================================
gajim/tooltips.py
=====================================
--- a/gajim/tooltips.py
+++ b/gajim/tooltips.py
@@ -252,6 +252,9 @@ class GCTooltip():
self.avatar.show()
self.fillelement.show()
+ app.plugin_manager.gui_extension_point(
+ 'gc_tooltip_populate', self, contact, self.tooltip_grid)
+
@staticmethod
def colorize_affiliation(affiliation):
"""
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/64d743de3ee25e9ba4686d0d368a5ba2b…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/64d743de3ee25e9ba4686d0d368a5ba2b…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch master at gajim / gajim
Commits:
d38e8532 by Philipp Hörist at 2018-02-17T19:10:39+01:00
Update ChangeLog
- - - - -
1 changed file:
- ChangeLog
Changes:
=====================================
ChangeLog
=====================================
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Gajim 0.99.2 (17 February 2018)
+
+ * Speed up DB querys on MAM sync
+ * Fix config file encoding
+ * Bug fixes
+
Gajim 0.99.1 (08 February 2018)
* Integrate HTTPUpload
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/d38e8532e7b9b2216414e46507d19c7473…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/d38e8532e7b9b2216414e46507d19c7473…
You're receiving this email because of your account on dev.gajim.org.
Philipp Hörist pushed to branch gajim_1.0 at gajim / gajim
Commits:
44521fcb by Philipp Hörist at 2018-02-17T19:09:15+01:00
Update ChangeLog
- - - - -
1 changed file:
- ChangeLog
Changes:
=====================================
ChangeLog
=====================================
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Gajim 0.99.2 (17 February 2018)
+
+ * Speed up DB querys on MAM sync
+ * Fix config file encoding
+ * Bug fixes
+
Gajim 0.99.1 (08 February 2018)
* Integrate HTTPUpload
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/44521fcbaa8759f5a540a687d465272195…
---
View it on GitLab: https://dev.gajim.org/gajim/gajim/commit/44521fcbaa8759f5a540a687d465272195…
You're receiving this email because of your account on dev.gajim.org.