use std::fmt;
use serde::{Serialize, Deserialize};
use super::{StorageQuota, DriveTheme, User};
#[derive(Default, Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct About {
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub storage_quota: Option<StorageQuota>,
#[serde(skip_serializing_if = "Option::is_none")]
pub drive_themes: Option<Vec<DriveTheme>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub can_create_drives: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub import_formats: Option< serde_json::Map<String, serde_json::Value> >,
#[serde(skip_serializing_if = "Option::is_none")]
pub export_formats: Option< serde_json::Map<String, serde_json::Value> >,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_installed: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user: Option<User>,
#[serde(skip_serializing_if = "Option::is_none")]
pub folder_color_palette: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_import_sizes: Option< serde_json::Map<String, serde_json::Value> >,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_upload_size: Option<String>,
}
impl fmt::Display for About {
fn fmt( &self, f: &mut fmt::Formatter<'_> ) -> fmt::Result {
let json = serde_json::to_string_pretty(&self)
.unwrap_or( format!("unable to parse JSON, this is the debug view:\n{:#?}", self) );
write!(f, "{}", json)
}
}
impl About {
pub fn new() -> Self {
Self { ..Default::default() }
}
}