diff options
Diffstat (limited to 'gajim/common/modules/receipts.py')
-rw-r--r-- | gajim/common/modules/receipts.py | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/gajim/common/modules/receipts.py b/gajim/common/modules/receipts.py index b783b059a..7f1114cfc 100644 --- a/gajim/common/modules/receipts.py +++ b/gajim/common/modules/receipts.py @@ -28,6 +28,7 @@ from gajim.common import app from gajim.common import types from gajim.common.events import ReceiptReceived from gajim.common.modules.base import BaseModule +from gajim.common.storage.archive.structs import DbUpsertMarkerRowData class Receipts(BaseModule): @@ -46,6 +47,7 @@ class Receipts(BaseModule): stanza: Message, properties: MessageProperties ) -> None: + if not properties.is_receipt: return @@ -58,7 +60,6 @@ class Receipts(BaseModule): if (properties.type.is_groupchat or properties.is_self_message or - properties.is_mam_message or properties.is_carbon_message and properties.carbon.is_sent): if properties.receipt.is_received: @@ -66,7 +67,7 @@ class Receipts(BaseModule): raise nbxmpp.NodeProcessed return - if properties.receipt.is_request: + if properties.receipt.is_request and not properties.is_mam_message: if not app.settings.get_account_setting(self._account, 'answer_receipts'): return @@ -87,20 +88,23 @@ class Receipts(BaseModule): properties.jid, properties.receipt.id) - jid = properties.jid - if not properties.is_muc_pm: - jid = jid.new_as_bare() + if properties.is_mam_message: + timestamp = properties.mam.timestamp + else: + timestamp = properties.timestamp - app.storage.archive.set_marker( - app.get_jid_from_account(self._account), - jid, - properties.receipt.id, - 'received') + marker_data = DbUpsertMarkerRowData( + account=self._account, + remote_jid=properties.remote_jid, + fk_occupant_ek=None, + marker_id=properties.receipt.id, + received_ts=timestamp) + app.storage.archive.upsert_row(marker_data) app.ged.raise_event( ReceiptReceived( account=self._account, - jid=jid, + jid=properties.remote_jid, receipt_id=properties.receipt.id)) raise nbxmpp.NodeProcessed |