Skip to main content

ReactionChange

Enum ReactionChange 

Source
#[non_exhaustive]
pub enum ReactionChange<'a> { Add { sender_reaction_id: &'a str, emoji: &'a str, sent_at: &'a UTCDate, }, Remove { sender_reaction_id: &'a str, }, }
Expand description

A single reaction change in a Message/set patch (JMAP Chat §4.5).

The patch key is reactions/<senderReactionId> (JSON Pointer). senderReactionId is a caller-generated ID (e.g. ULID) that uniquely identifies this reaction slot for the sending user in this message.

§Precondition: sender_reaction_id

On both variants, sender_reaction_id is embedded in a JSON Pointer (RFC 6901) as the patch key reactions/<id>. SessionClient::message_update rejects an Add or Remove whose sender_reaction_id is empty, or contains / or ~, with ClientError::InvalidArgument. The slash/tilde restriction is unintuitive — emoji-shortcode systems (e.g. :slight_smile:/+1) and any user-supplied string source naturally produce these characters. Generate IDs from a constrained alphabet (ULID, UUID v4, base64url) rather than from user input.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Add

Add a reaction. Patch value: {emoji, sentAt}.

Fields

§sender_reaction_id: &'a str

Caller-generated id (e.g. ULID) identifying this reaction slot.

Precondition: must be non-empty and must NOT contain / or ~. See the enum-level “Precondition” section.

§emoji: &'a str

Emoji shortcode or Unicode emoji to react with.

§sent_at: &'a UTCDate

RFC 3339 timestamp when the reaction was made.

§

Remove

Remove a reaction. Patch value: null.

Fields

§sender_reaction_id: &'a str

Caller-generated id identifying the reaction slot to remove.

Precondition: must be non-empty and must NOT contain / or ~. See the enum-level “Precondition” section.

Trait Implementations§

Source§

impl<'a> Debug for ReactionChange<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for ReactionChange<'a>

§

impl<'a> RefUnwindSafe for ReactionChange<'a>

§

impl<'a> Send for ReactionChange<'a>

§

impl<'a> Sync for ReactionChange<'a>

§

impl<'a> Unpin for ReactionChange<'a>

§

impl<'a> UnsafeUnpin for ReactionChange<'a>

§

impl<'a> UnwindSafe for ReactionChange<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more