Skip to main content

spark/
response.rs

1//! Wire types for `POST /_spark/update` response bodies.
2
3use std::collections::HashMap;
4
5use serde::{Deserialize, Serialize};
6
7use crate::component::{BrowserDispatch, ComponentEmit};
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct UpdateResponse {
11    pub components: Vec<ComponentResult>,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct ComponentResult {
16    pub snapshot: String,
17    pub html: String,
18    pub effects: Effects,
19}
20
21#[derive(Debug, Clone, Default, Serialize, Deserialize)]
22pub struct Effects {
23    #[serde(default)]
24    pub dispatched: Vec<BrowserDispatch>,
25    #[serde(default)]
26    pub emitted: Vec<ComponentEmit>,
27    #[serde(default, skip_serializing_if = "Option::is_none")]
28    pub redirect: Option<String>,
29    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
30    pub errors: HashMap<String, Vec<String>>,
31    #[serde(default, skip_serializing_if = "Vec::is_empty")]
32    pub islands: Vec<IslandHtml>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct IslandHtml {
37    pub name: String,
38    pub html: String,
39}