medea_jason/platform/dart/
send_parameters.rs1use dart_sys::Dart_Handle;
6use derive_more::From;
7use medea_macro::dart_bridge;
8
9use super::{
10 send_encoding_parameters::SendEncodingParameters, utils::list::DartList,
11};
12use crate::platform::dart::utils::handle::DartHandle;
13
14#[dart_bridge("flutter/lib/src/native/platform/send_parameters.g.dart")]
15mod send_parameters {
16 use dart_sys::Dart_Handle;
17
18 use crate::platform::Error;
19
20 extern "C" {
21 pub fn encodings(parameters: Dart_Handle)
27 -> Result<Dart_Handle, Error>;
28 }
29}
30
31#[derive(Clone, Debug, From)]
35pub struct SendParameters(DartHandle);
36
37impl SendParameters {
38 #[must_use]
40 pub fn encodings(&self) -> Box<[SendEncodingParameters]> {
41 let encodings =
42 unsafe { send_parameters::encodings(self.0.get()) }.unwrap();
43
44 let encodings: Vec<_> =
45 Vec::from(DartList::from(unsafe { DartHandle::new(encodings) }))
46 .into_iter()
47 .map(|encoding: DartHandle| {
48 SendEncodingParameters::from(encoding)
49 })
50 .collect();
51
52 encodings.into_boxed_slice()
53 }
54
55 #[must_use]
57 pub fn handle(&self) -> Dart_Handle {
58 self.0.get()
59 }
60}