// rocie - An enterprise grocery management system - Web app // // Copyright (C) 2026 Benedikt Peetz // SPDX-License-Identifier: GPL-3.0-or-later // // This file is part of Rocie. // // You should have received a copy of the License along with this program. // If not, see . use leptos::{ IntoView, component, prelude::{Get, Show, signal}, task::spawn_local, view, }; use leptos_router::{NavigateOptions, hooks::use_navigate}; use log::info; use rocie_client::models::BarcodeId; use crate::{ api::{buy_barcode_external_wrapped, get_config}, components::{ banner::Banner, catch_errors::CatchErrors, form::Form, login_wall::LoginWall, site_header::SiteHeader, }, }; #[component] pub fn Buy() -> impl IntoView { let (on_submit_errored, on_submit_errored_set) = signal(None); view! { { Form! { on_submit = |barcode_number, times| { let config = get_config!(); let navigate = use_navigate(); spawn_local(async move { match buy_barcode_external_wrapped( &config, BarcodeId { value: barcode_number }, u32::from(times) ).await { Ok(()) => { navigate("/buy", NavigateOptions::default()); on_submit_errored_set.set(None); }, Err(err) => { let error = format!( "Error in form \ on-submit for barcode \ `{barcode_number}`: {err}" ); on_submit_errored_set.set(Some(error)); }, } info!("Bought barcode {barcode_number} {times} times"); }); }; } } } }