shared/model_ui/user_messages.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
use crate::model;
use serde::{Deserialize, Serialize};
use std::collections::VecDeque;
#[derive(Serialize, Deserialize, Clone)]
pub struct UiUserMessages {
pub messages: VecDeque<UiUserMessage>,
// current_id: u64,
}
impl From<model::UserMessages> for UiUserMessages {
fn from(value: model::UserMessages) -> Self {
let temp: VecDeque<UiUserMessage> = value
.messages
.into_iter()
.map(|value| value.into())
.collect();
UiUserMessages { messages: temp }
}
}
#[derive(Clone, Serialize, Deserialize)]
pub struct UiUserMessage {
pub message: String,
pub level: UiLevel,
pub id: u64,
}
impl From<model::UserMessage> for UiUserMessage {
fn from(value: model::UserMessage) -> Self {
UiUserMessage {
message: value.message.clone(),
level: value.level.into(),
id: value.id,
}
}
}
#[derive(Clone, Serialize, Deserialize)]
pub enum UiLevel {
/// The "error" level.
///
/// Designates very serious errors.
// This way these line up with the discriminants for LevelFilter below
// This works because Rust treats field-less enums the same way as C does:
// https://doc.rust-lang.org/reference/items/enumerations.html#custom-discriminant-values-for-field-less-enumerations
Error = 1,
/// The "warn" level.
///
/// Designates hazardous situations.
Warn,
/// The "info" level.
///
/// Designates useful information.
Info,
/// The "debug" level.
///
/// Designates lower priority information.
Debug,
/// The "trace" level.
///
/// Designates very low priority, often extremely verbose, information.
Trace,
}
impl From<log::Level> for UiLevel {
fn from(value: log::Level) -> Self {
match value {
log::Level::Error => UiLevel::Error,
log::Level::Warn => UiLevel::Warn,
log::Level::Info => UiLevel::Info,
log::Level::Debug => UiLevel::Debug,
log::Level::Trace => UiLevel::Trace,
}
}
}