xmtp_api_d14n/protocol/extractors/
orphaned_envelope.rs1use crate::protocol::{
3 BytesExtractor, CursorExtractor, DependsOnExtractor, ExtractionError, Extractor,
4 GroupMessageExtractor,
5};
6use xmtp_proto::types::OrphanedEnvelope;
7
8#[derive(Default, Clone, Debug)]
10pub struct OrphanExtractor {
11 inner: (
12 CursorExtractor,
13 DependsOnExtractor,
14 BytesExtractor,
15 GroupMessageExtractor,
16 ),
17}
18
19delegate_envelope_visitor!(OrphanExtractor);
20
21impl Extractor for OrphanExtractor {
22 type Output = Result<OrphanedEnvelope, ExtractionError>;
23
24 fn get(self) -> Self::Output {
25 let extracted = self.inner;
26 let mut envelope = OrphanedEnvelope::builder();
27 envelope.cursor(extracted.0.get()?);
28 envelope.depends_on(extracted.1.get().unwrap_or_default());
29 envelope.payload(extracted.2.get());
30 envelope.group_id(extracted.3.get()?.group_id);
31 Ok(envelope.build()?)
32 }
33}