use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::config::{ApplyLayer, ApplyOptExt};
#[derive(Debug, Serialize, Clone)]
pub struct SocialConfig {
pub image: Option<String>,
pub image_alt: Option<String>,
pub twitter_account: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SocialLayer {
pub image: Option<String>,
pub image_alt: Option<String>,
pub twitter_account: Option<String>,
}
impl Default for SocialConfig {
fn default() -> Self {
SocialConfig {
image: None,
image_alt: None,
twitter_account: None,
}
}
}
impl ApplyLayer for SocialConfig {
type Layer = SocialLayer;
fn apply_layer(&mut self, layer: Self::Layer) {
let SocialLayer {
image,
image_alt,
twitter_account,
} = layer;
self.image.apply_opt(image);
self.image_alt.apply_opt(image_alt);
self.twitter_account.apply_opt(twitter_account);
}
}