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 {
8 pub area: String,
9 pub current_platform: String,
10 pub available_on_current_platform: bool,
11 pub availability: String,
12 pub reason: Option<String>,
13 pub members: Vec<String>,
14 #[serde(default)]
15 pub notes: Vec<String>,
16}
17
18impl AreaSupportInfo {
19 #[must_use]
20 pub fn unavailable_error(&self) -> VisionKitError {
21 VisionKitError::UnavailableOnThisPlatform(self.reason.clone().unwrap_or_else(|| {
22 let area = &self.area;
23 let current_platform = &self.current_platform;
24 format!("{area} is unavailable on {current_platform}")
25 }))
26 }
27}