diff --git a/index.html b/index.html
index 0b36743..7335dbc 100644
--- a/index.html
+++ b/index.html
@@ -1,6 +1,7 @@
+ Knock Knock!
diff --git a/src/joke.rs b/src/joke.rs
index ad1bafa..4f64950 100644
--- a/src/joke.rs
+++ b/src/joke.rs
@@ -10,8 +10,15 @@ pub struct JokeStruct {
}
impl JokeStruct {
- pub async fn get_joke() -> Msg {
- let response = http::Request::get("http://localhost:3000/api/v1/joke")
+ pub async fn get_joke(key: Option) -> Msg {
+ let request = match &key {
+ None => "http://localhost:3000/api/v1/joke".to_string(),
+ Some(ref key) => format!(
+ "http://localhost:3000/api/v1/joke?id={}",
+ key,
+ ),
+ };
+ let response = http::Request::get(&request)
.send()
.await;
match response {
diff --git a/src/main.rs b/src/main.rs
index 12b5228..1eb8f53 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -22,6 +22,14 @@ struct App {
pub enum Msg {
GotJoke(JokeResult),
+ GetJoke(Option),
+}
+
+impl App {
+ fn refresh_joke(ctx: &Context, key: Option) {
+ let got_joke = JokeStruct::get_joke(key);
+ ctx.link().send_future(got_joke);
+ }
}
impl Component for App {
@@ -30,20 +38,20 @@ impl Component for App {
fn create(ctx: &Context) -> Self {
let cookie = acquire_cookie();
- let got_joke = JokeStruct::get_joke();
- ctx.link().send_future(got_joke);
+ App::refresh_joke(ctx, None);
let joke = Err(gloo_net::Error::GlooError("Loading Jokeā¦".to_string()));
Self { cookie, joke }
}
- fn update(&mut self, _ctx: &Context, msg: Self::Message) -> bool {
+ fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool {
match msg {
Msg::GotJoke(joke) => self.joke = joke,
+ Msg::GetJoke(key) => App::refresh_joke(ctx, key),
}
true
}
- fn view(&self, _ctx: &Context) -> Html {
+ fn view(&self, ctx: &Context) -> Html {
let cookie = &self.cookie;
let joke = &self.joke;
html! {
@@ -60,6 +68,9 @@ impl Component for App {
{format!("Server Error: {error}")}
}
+
+
+
>
}
}