use chrono::{Datelike, Days, Months, NaiveDate}; use common::web_api; use gloo::storage::{LocalStorage, Storage}; use ron::ser::{PrettyConfig, to_string_pretty}; use serde::{Deserialize, Serialize}; use thiserror::Error; use crate::{calendar, ron_request}; #[derive(Error, Debug)] pub enum Error { #[error("Request error: {0}")] Request(#[from] ron_request::Error), } type Result = std::result::Result; #[derive(Clone, Copy)] pub struct ShoppingList { is_local: bool, } impl ShoppingList { pub fn new(is_local: bool) -> Self { Self { is_local } } pub async fn get_items(&self) -> Result> { if self.is_local { Ok(vec![]) // TODO } else { Ok(ron_request::get("/ron-api/shopping_list").await?) } } pub async fn set_item_checked(&self, item_id: i64, is_checked: bool) -> Result<()> { if self.is_local { todo!(); } else { ron_request::patch( "/ron-api/shopping_list/checked", web_api::KeyValue { id: item_id, value: is_checked, }, ) .await .map_err(Error::from) } } }