anaso_components_stela 0.0.8

Components for Ana.so's Stela API
Documentation
use std::{ops::Deref, sync::Arc};

use anaso_site_api_models::stela;
use leptos::prelude::*;
use server_fn::codec::MultipartData;

#[derive(Clone, Copy)]
pub struct FormSubmitContext(pub StoredValue<Arc<dyn FormSubmitContextTrait>, LocalStorage>);

impl Deref for FormSubmitContext {
    type Target = StoredValue<Arc<dyn FormSubmitContextTrait>, LocalStorage>;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

#[async_trait::async_trait]
pub trait FormSubmitContextTrait {
    fn url(&self) -> &'static str;
    async fn submit(&self, data: MultipartData) -> Result<stela::FormResponse, ServerFnError>;
}