2024-11-08 00:10:59 +00:00
|
|
|
use crate::{locales::LocaleCode, manifest::AppPermission};
|
2024-06-17 20:18:13 +00:00
|
|
|
|
|
|
|
use super::ThemeType;
|
2024-09-27 17:11:10 +00:00
|
|
|
// use bus::{Bus, BusReader};
|
2024-06-17 20:18:13 +00:00
|
|
|
use serde::{Deserialize, Serialize};
|
2024-09-27 17:11:10 +00:00
|
|
|
// use strum_macros::EnumIter;
|
|
|
|
// use web_sys::js_sys::Object;
|
|
|
|
|
|
|
|
// pub struct EventChannels {
|
|
|
|
// pub handshake: Bus<PayloadHanshake>,
|
|
|
|
// pub response: Bus<PayloadResponse>,
|
|
|
|
// pub redirect: Bus<PayloadRedirect>,
|
|
|
|
// pub theme: Bus<PayloadTheme>,
|
|
|
|
// pub locale_changed: Bus<PayloadLocaleChanged>,
|
|
|
|
// pub token_refreshed: Bus<PayloadTokenRefreshed>,
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// 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<PayloadHanshake> {
|
|
|
|
// self.handshake.add_rx()
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// pub fn subscribe_response(&mut self) -> BusReader<PayloadResponse> {
|
|
|
|
// self.response.add_rx()
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// pub fn subscribe_redirect(&mut self) -> BusReader<PayloadRedirect> {
|
|
|
|
// self.redirect.add_rx()
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// pub fn subscribe_theme(&mut self) -> BusReader<PayloadTheme> {
|
|
|
|
// self.theme.add_rx()
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// pub fn subscribe_locale_changed(&mut self) -> BusReader<PayloadLocaleChanged> {
|
|
|
|
// self.locale_changed.add_rx()
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// pub fn subscribe_token_refreshed(&mut self) -> BusReader<PayloadTokenRefreshed> {
|
|
|
|
// self.token_refreshed.add_rx()
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
// #[derive(EnumIter, Debug)]
|
|
|
|
// pub enum EventType {
|
|
|
|
// Handshake,
|
|
|
|
// Response,
|
|
|
|
// Redirect,
|
|
|
|
// Theme,
|
|
|
|
// LocaleChanged,
|
|
|
|
// TokenRefreshed,
|
|
|
|
// }
|
2024-06-17 20:18:13 +00:00
|
|
|
|
|
|
|
#[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),
|
2024-11-08 00:10:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize, Serialize, Debug, Default)]
|
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
pub struct PayloadRequestPermissions {
|
|
|
|
pub permissions: Vec<AppPermission>,
|
|
|
|
pub redirect_path: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize, Serialize, Debug, Default)]
|
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
pub struct PayloadNotification {
|
|
|
|
pub status: Option<NotificationStatus>,
|
|
|
|
pub title: Option<String>,
|
|
|
|
pub text: Option<String>,
|
|
|
|
pub api_message: Option<String>,
|
2024-06-17 20:18:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize, Serialize, Debug)]
|
2024-11-08 00:10:59 +00:00
|
|
|
#[serde(rename_all = "lowercase")]
|
|
|
|
pub enum NotificationStatus {
|
|
|
|
Info,
|
|
|
|
Success,
|
|
|
|
Warning,
|
|
|
|
Error,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize, Serialize, Debug, Default)]
|
2024-06-17 20:18:13 +00:00
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
pub struct PayloadHanshake {
|
|
|
|
pub token: String,
|
2024-11-08 00:10:59 +00:00
|
|
|
pub version: f32,
|
2024-06-17 20:18:13 +00:00
|
|
|
pub saleor_version: Option<String>,
|
|
|
|
pub dashboard_version: Option<String>,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize, Serialize, Debug)]
|
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
pub struct PayloadResponse {
|
2024-11-08 00:10:59 +00:00
|
|
|
pub action_id: Option<String>,
|
2024-06-17 20:18:13 +00:00
|
|
|
pub ok: bool,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Deserialize, Serialize, Debug)]
|
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
pub struct PayloadRedirect {
|
2024-11-08 00:10:59 +00:00
|
|
|
pub to: String,
|
|
|
|
pub new_context: Option<bool>,
|
2024-06-17 20:18:13 +00:00
|
|
|
}
|
|
|
|
|
2024-11-08 00:10:59 +00:00
|
|
|
#[derive(Deserialize, Serialize, Debug, Default)]
|
2024-06-17 20:18:13 +00:00
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
pub struct PayloadTheme {
|
|
|
|
pub theme: ThemeType,
|
|
|
|
}
|
|
|
|
|
2024-11-08 00:10:59 +00:00
|
|
|
#[derive(Deserialize, Serialize, Debug, Default)]
|
2024-06-17 20:18:13 +00:00
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
pub struct PayloadLocaleChanged {
|
|
|
|
pub locale: LocaleCode,
|
|
|
|
}
|
|
|
|
#[derive(Deserialize, Serialize, Debug)]
|
|
|
|
#[serde(rename_all = "camelCase")]
|
|
|
|
pub struct PayloadTokenRefreshed {
|
|
|
|
pub token: String,
|
|
|
|
}
|