actix_htmx/
trigger_payload.rs1use serde::Serialize;
2use serde_json::{to_value, Value};
3
4#[derive(Clone, Debug)]
10pub struct TriggerPayload {
11 inner: Value,
12}
13
14impl TriggerPayload {
15 pub fn json<T>(value: T) -> serde_json::Result<Self>
17 where
18 T: Serialize,
19 {
20 to_value(value).map(Self::from_value)
21 }
22
23 pub fn from_value(value: Value) -> Self {
25 TriggerPayload { inner: value }
26 }
27
28 pub fn text(value: impl Into<String>) -> Self {
30 TriggerPayload::from_value(Value::String(value.into()))
31 }
32
33 pub fn boolean(value: bool) -> Self {
35 TriggerPayload::from_value(Value::Bool(value))
36 }
37
38 pub fn number<N>(value: N) -> serde_json::Result<Self>
40 where
41 N: Serialize,
42 {
43 TriggerPayload::json(value)
44 }
45
46 pub(crate) fn as_json_value(&self) -> Value {
47 self.inner.clone()
48 }
49}