use crate::locales::LocaleCode; use super::ThemeType; // use bus::{Bus, BusReader}; use serde::{Deserialize, Serialize}; // use strum_macros::EnumIter; // use web_sys::js_sys::Object; // pub struct EventChannels { // pub handshake: Bus, // pub response: Bus, // pub redirect: Bus, // pub theme: Bus, // pub locale_changed: Bus, // pub token_refreshed: Bus, // } // // impl EventChannels { // pub fn new() -> Self { // Self { // handshake: Bus::new(10), // response: Bus::new(10), // redirect: Bus::new(10), // theme: Bus::new(10), // locale_changed: Bus::new(10), // token_refreshed: Bus::new(10), // } // } // // pub fn subscribe_handshake(&mut self) -> BusReader { // self.handshake.add_rx() // } // // pub fn subscribe_response(&mut self) -> BusReader { // self.response.add_rx() // } // // pub fn subscribe_redirect(&mut self) -> BusReader { // self.redirect.add_rx() // } // // pub fn subscribe_theme(&mut self) -> BusReader { // self.theme.add_rx() // } // // pub fn subscribe_locale_changed(&mut self) -> BusReader { // self.locale_changed.add_rx() // } // // pub fn subscribe_token_refreshed(&mut self) -> BusReader { // self.token_refreshed.add_rx() // } // } // #[derive(EnumIter, Debug)] // pub enum EventType { // Handshake, // Response, // Redirect, // Theme, // LocaleChanged, // TokenRefreshed, // } #[derive(Deserialize, Serialize, Debug)] #[serde(tag = "type", content = "payload")] #[serde(rename_all = "camelCase")] pub enum Event { Handshake(PayloadHanshake), Response(PayloadResponse), Redirect(PayloadRedirect), Theme(PayloadTheme), LocaleChanged(PayloadLocaleChanged), TokenRefreshed(PayloadTokenRefreshed), NotifyReady(String), } #[derive(Deserialize, Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct PayloadHanshake { pub token: String, pub version: String, pub saleor_version: Option, pub dashboard_version: Option, } #[derive(Deserialize, Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct PayloadResponse { pub action_id: String, pub ok: bool, } #[derive(Deserialize, Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct PayloadRedirect { pub path: String, } #[derive(Deserialize, Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct PayloadTheme { pub theme: ThemeType, } #[derive(Deserialize, Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct PayloadLocaleChanged { pub locale: LocaleCode, } #[derive(Deserialize, Serialize, Debug)] #[serde(rename_all = "camelCase")] pub struct PayloadTokenRefreshed { pub token: String, }