subspace_runtime/
domains.rs1#[cfg(not(feature = "std"))]
2extern crate alloc;
3
4use crate::{Balance, Block, Domains, RuntimeCall, UncheckedExtrinsic};
5#[cfg(not(feature = "std"))]
6use alloc::vec::Vec;
7use domain_runtime_primitives::opaque::Header as DomainHeader;
8use sp_domains::DomainId;
9
10pub(crate) fn extract_successful_bundles(
11 domain_id: DomainId,
12 extrinsics: Vec<UncheckedExtrinsic>,
13) -> sp_domains::OpaqueBundles<Block, DomainHeader, Balance> {
14 let successful_bundles = Domains::successful_bundles(domain_id);
15 extrinsics
16 .into_iter()
17 .filter_map(|uxt| match uxt.function {
18 RuntimeCall::Domains(pallet_domains::Call::submit_bundle { opaque_bundle })
19 if opaque_bundle.domain_id() == domain_id
20 && successful_bundles.contains(&opaque_bundle.hash()) =>
21 {
22 Some(opaque_bundle)
23 }
24 _ => None,
25 })
26 .collect()
27}