1use serde::{Deserialize, Serialize};
2
3use crate::error::VisionKitError;
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct AreaSupportInfo {
9 pub area: String,
11 pub current_platform: String,
13 pub available_on_current_platform: bool,
15 pub availability: String,
17 pub reason: Option<String>,
19 pub members: Vec<String>,
21 #[serde(default)]
22 pub notes: Vec<String>,
24}
25
26impl AreaSupportInfo {
27 #[must_use]
28 pub fn unavailable_error(&self) -> VisionKitError {
30 VisionKitError::UnavailableOnThisPlatform(self.reason.clone().unwrap_or_else(|| {
31 let area = &self.area;
32 let current_platform = &self.current_platform;
33 format!("{area} is unavailable on {current_platform}")
34 }))
35 }
36}