mod finder; mod question; use finder::*; use question::*; use std::collections::HashSet; extern crate serde; // use gloo_console::log; use gloo_net::http; extern crate wasm_bindgen_futures; use web_sys::HtmlTextAreaElement; use yew::prelude::*; pub type QuestionResult = Result; struct App { question: QuestionResult, } pub enum Msg { GotQuestion(QuestionResult), GetQuestion(Option), } impl App { fn refresh_question(ctx: &Context, key: Option) { let got_question = QuestionStruct::get_question(key); ctx.link().send_future(got_question); } } impl Component for App { type Message = Msg; type Properties = (); fn create(ctx: &Context) -> Self { App::refresh_question(ctx, None); let question = Err(gloo_net::Error::GlooError("Loading Question…".to_string())); Self { question } } fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool { match msg { Msg::GotQuestion(question) => { self.question = question; true } Msg::GetQuestion(key) => { // log!(format!("GetQuestion: {:?}", key)); App::refresh_question(ctx, key); false } } } fn view(&self, ctx: &Context) -> Html { let question = &self.question; html! { <>

{ "Question and Answer" }

if let Ok(ref question) = question { } if let Err(ref error) = question {
{format!("Server Error: {error}")}
}
} } } fn main() { yew::Renderer::::new().render(); }