use crate::model::id::{SkuId, StickerId, StickerPackBannerId, StickerPackId};
use crate::model::sticker::Sticker;
#[derive(Clone, Debug, Deserialize, Serialize)]
#[non_exhaustive]
pub struct StickerPack {
pub id: StickerPackId,
pub stickers: Vec<Sticker>,
pub name: String,
pub sku_id: SkuId,
pub cover_sticker_id: Option<StickerId>,
pub description: String,
pub banner_asset_id: StickerPackBannerId,
}
#[cfg(feature = "model")]
impl StickerPack {
#[must_use]
pub fn cover_sticker(&self) -> Option<&Sticker> {
self.cover_sticker_id.and_then(|id| self.stickers.iter().find(|s| s.id == id))
}
#[must_use]
pub fn banner_url(&self) -> String {
banner_url(self.banner_asset_id)
}
}
#[cfg(feature = "model")]
fn banner_url(banner_asset_id: StickerPackBannerId) -> String {
cdn!("/app-assets/710982414301790216/store/{}.webp?size=1024", banner_asset_id.0)
}