xmpp-parsers: Implement XEP-0490: Message Displayed Synchronization

This XEP is used to synchronize where each client has stopped reading a
conversation, so that we can e.g. stop displaying a notification when
the user has read this particular message on a different device.
This commit is contained in:
Emmanuel Gil Peyrot 2024-12-15 16:10:45 +01:00 committed by xmpp ftw
commit af0bd35e7a
5 changed files with 34 additions and 0 deletions

View file

@ -290,3 +290,6 @@ pub mod stream_limits;
/// XEP-0484: Fast Authentication Streamlining Tokens
pub mod fast;
/// XEP-0490: Message Displayed Synchronization
pub mod message_displayed;

View file

@ -0,0 +1,19 @@
// Copyright (c) 2024 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
use xso::{AsXml, FromXml};
use crate::ns;
use crate::stanza_id::StanzaId;
/// Mention that a particular message has been displayed by at least one client.
#[derive(FromXml, AsXml, PartialEq, Debug, Clone)]
#[xml(namespace = ns::MDS, name = "displayed")]
pub struct Displayed {
/// Reference to the message having been displayed.
#[xml(child)]
pub stanza_id: StanzaId,
}

View file

@ -308,6 +308,9 @@ pub const STREAM_LIMITS: &str = "urn:xmpp:stream-limits:0";
/// XEP-0484: Fast Authentication Streamlining Tokens
pub const FAST: &str = "urn:xmpp:fast:0";
/// XEP-0490: Message Displayed Synchronization
pub const MDS: &str = "urn:xmpp:mds:displayed:0";
/// Alias for the main namespace of the stream, that is "jabber:client" when
/// the component feature isnt enabled.
#[cfg(not(feature = "component"))]