plugin XEP-0428: Add missing "for" attribute:
The "for" attribute was missing from <fallback> element. rel 461
This commit is contained in:
parent
16f9e07ce1
commit
030be64c45
2 changed files with 19 additions and 6 deletions
|
|
@ -16,7 +16,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import time
|
||||
from typing import Any, Dict
|
||||
from typing import Any, Dict, cast
|
||||
|
||||
from sqlalchemy.orm.attributes import flag_modified
|
||||
from twisted.internet import defer
|
||||
|
|
@ -31,6 +31,7 @@ from libervia.backend.core.core_types import MessageDataLegacy, SatXMPPEntity
|
|||
from libervia.backend.core.i18n import D_, _
|
||||
from libervia.backend.core.log import getLogger
|
||||
from libervia.backend.memory.sqla_mapping import History
|
||||
from libervia.backend.plugins.plugin_xep_0428 import XEP_0428
|
||||
from libervia.backend.tools.common import data_format
|
||||
|
||||
log = getLogger(__name__)
|
||||
|
|
@ -111,8 +112,10 @@ class XEP_0424:
|
|||
message_elt["type"] = history.type
|
||||
retract_elt = message_elt.addElement((NS_MESSAGE_RETRACT, "retract"))
|
||||
retract_elt["id"] = retract_id
|
||||
self.host.plugins["XEP-0428"].add_fallback_elt(
|
||||
fallback = cast(XEP_0428, self.host.plugins["XEP-0428"])
|
||||
fallback.add_fallback_elt(
|
||||
message_elt,
|
||||
NS_MESSAGE_RETRACT,
|
||||
"[A message retraction has been requested, but your client doesn't support "
|
||||
"it]",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -43,25 +43,35 @@ PLUGIN_INFO = {
|
|||
NS_FALLBACK = "urn:xmpp:fallback:0"
|
||||
|
||||
|
||||
class XEP_0428(object):
|
||||
class XEP_0428:
|
||||
|
||||
def __init__(self, host):
|
||||
log.info(_("XEP-0428 (Fallback Indication) plugin initialization"))
|
||||
host.register_namespace("fallback", NS_FALLBACK)
|
||||
|
||||
def add_fallback_elt(
|
||||
self, message_elt: domish.Element, msg: Optional[str] = None
|
||||
self,
|
||||
message_elt: domish.Element,
|
||||
for_: str,
|
||||
msg: str|None = None
|
||||
) -> None:
|
||||
"""Add the fallback indication element
|
||||
|
||||
@param message_elt: <message> element where the indication must be
|
||||
set
|
||||
@param for_: Specification namespace that the fallback is meant to replace.
|
||||
see https://xmpp.org/extensions/xep-0428.html#sect-idm46381699903600
|
||||
@param msg: message to show as fallback
|
||||
Will be added as <body>
|
||||
"""
|
||||
message_elt.addElement((NS_FALLBACK, "fallback"))
|
||||
fallback_elt = message_elt.addElement((NS_FALLBACK, "fallback"))
|
||||
fallback_elt["for"] = for_
|
||||
if msg is not None:
|
||||
message_elt.addElement("body", content=msg)
|
||||
body_elt = message_elt.body
|
||||
if body_elt is None:
|
||||
message_elt.addElement("body", content=msg)
|
||||
else:
|
||||
body_elt.addContent(msg)
|
||||
|
||||
def has_fallback(self, message_elt: domish.Element) -> bool:
|
||||
"""Tell if a message has a fallback indication"""
|
||||
|
|
|
|||
Loading…
Reference in a new issue