dpp/group/
action_event.rs

1#[cfg(feature = "json-conversion")]
2use crate::serialization::JsonConvertible;
3#[cfg(feature = "value-conversion")]
4use crate::serialization::ValueConvertible;
5use crate::tokens::token_event::TokenEvent;
6use crate::ProtocolError;
7use bincode::{Decode, Encode};
8use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize};
9#[cfg(feature = "serde-conversion")]
10use serde::{Deserialize, Serialize};
11
12#[derive(
13    Debug, PartialEq, PartialOrd, Clone, Eq, Encode, Decode, PlatformDeserialize, PlatformSerialize,
14)]
15#[cfg_attr(
16    feature = "serde-conversion",
17    derive(Serialize, Deserialize),
18    serde(tag = "type", content = "data", rename_all = "camelCase")
19)]
20#[cfg_attr(feature = "value-conversion", derive(ValueConvertible))]
21#[platform_serialize(unversioned)] //versioned directly, no need to use platform_version
22pub enum GroupActionEvent {
23    TokenEvent(TokenEvent),
24}
25
26// Manual impl because GroupActionEvent is a flat enum (not versioned V0/V1).
27// Its inner type TokenEvent also has a manual impl — see token_event.rs.
28#[cfg(feature = "json-conversion")]
29impl JsonConvertible for GroupActionEvent {}
30
31use std::fmt;
32
33impl fmt::Display for GroupActionEvent {
34    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
35        match self {
36            GroupActionEvent::TokenEvent(event) => write!(f, "Token event: {}", event),
37        }
38    }
39}
40
41impl GroupActionEvent {
42    /// Returns a reference to the public note if the variant includes one.
43    pub fn public_note(&self) -> Option<&str> {
44        match self {
45            GroupActionEvent::TokenEvent(token_event) => token_event.public_note(),
46        }
47    }
48
49    /// Returns a name of the event
50    pub fn event_name(&self) -> String {
51        match self {
52            GroupActionEvent::TokenEvent(token_event) => {
53                format!("Token: {}", token_event.associated_document_type_name())
54            }
55        }
56    }
57}