plugin XEP-0359: if no origin ID is found, use <message> ID instead:
This way, we always have the right ID to check for non groupchat message in `History.origin_id`.
This commit is contained in:
parent
79fd3d7c13
commit
5470bbf7b9
1 changed files with 20 additions and 9 deletions
|
|
@ -1,8 +1,7 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
# SAT plugin for Message Archive Management (XEP-0359)
|
||||
# Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
|
||||
# Libervia plugin for Message Archive Management (XEP-0359)
|
||||
# Copyright (C) 2009-2023 Jérôme Poisson (goffi@goffi.org)
|
||||
# Copyright (C) 2013-2016 Adrien Cossa (souliane@mailoo.org)
|
||||
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
|
|
@ -20,14 +19,18 @@
|
|||
|
||||
from typing import Optional
|
||||
import uuid
|
||||
from zope.interface import implementer
|
||||
|
||||
from twisted.words.protocols.jabber import xmlstream
|
||||
from twisted.words.xish import domish
|
||||
from wokkel import disco
|
||||
from libervia.backend.core.constants import Const as C
|
||||
from zope.interface import implementer
|
||||
|
||||
from libervia.backend.core import exceptions
|
||||
from libervia.backend.core.constants import Const as C
|
||||
from libervia.backend.core.core_types import SatXMPPEntity
|
||||
from libervia.backend.core.i18n import _
|
||||
from libervia.backend.core.log import getLogger
|
||||
from twisted.words.xish import domish
|
||||
from libervia.backend.models.core import MessageData
|
||||
|
||||
log = getLogger(__name__)
|
||||
|
||||
|
|
@ -55,13 +58,21 @@ class XEP_0359(object):
|
|||
host.trigger.add("message_parse", self._message_parse_trigger)
|
||||
host.trigger.add("send_message_data", self._send_message_data_trigger)
|
||||
|
||||
def _message_parse_trigger(self, client, message_elt, mess_data):
|
||||
def _message_parse_trigger(
|
||||
self,
|
||||
client: SatXMPPEntity,
|
||||
message_elt: domish.Element,
|
||||
mess_data: MessageData
|
||||
) -> bool:
|
||||
"""Check if message has a stanza-id"""
|
||||
stanza_id = self.get_stanza_id(message_elt, client.jid.userhostJID())
|
||||
if stanza_id is not None:
|
||||
mess_data['extra']['stanza_id'] = stanza_id
|
||||
origin_id = self.get_origin_id(message_elt)
|
||||
if origin_id is not None:
|
||||
try:
|
||||
origin_id = self.get_origin_id(message_elt) or message_elt["id"]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
mess_data['extra']['origin_id'] = origin_id
|
||||
return True
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue