Compare commits

...

4 commits

2 changed files with 54 additions and 5 deletions

View file

@ -15,7 +15,7 @@ Make sure to set the BUGSPRAY_DB environment variable so that bugspray can popul
TODO:
- [x] User registration
- [x] User login
- [ ] Navbar
- [x] Navbar
- [ ] Link issues to users
- [ ] Comments
- [ ] Open/Close issues

View file

@ -86,17 +86,42 @@ pub enum AppRoutes {
}
fn switch<G: Html>(route: ReadSignal<AppRoutes>) -> View<G> {
let logged_in = if G::IS_BROWSER {
local_storage::getItem("token").is_some()
} else {
false
};
view! {
div(class="wrapper") {
(match route.get().as_ref() {
AppRoutes::Index => view! {
h1(class="text-align-center") { "Bugspray" }
a(href="/add_issue") { "+ New Issue" }
(if !logged_in {
view! {
a(href="/register") { "Register" }
" | "
a(href="/login") { "Log in" }
}
} else {
view! {
a(href="/add_issue") { "+ New Issue" }
}
})
HomeScreen()
},
AppRoutes::IssueDetail(index) => view! {
h1(class="text-align-center") { "Bugspray" }
a(href="/add_issue") { "+ New Issue" }
(if !logged_in {
view! {
a(href="/register") { "Register" }
" | "
a(href="/login") { "Log in" }
}
} else {
view! {
a(href="/add_issue") { "+ New Issue" }
}
})
IssueDetail(*index)
},
AppRoutes::IssueCreate => view! {
@ -115,6 +140,18 @@ fn switch<G: Html>(route: ReadSignal<AppRoutes>) -> View<G> {
_ => view! {
h1(class="text-align-center") { "Bugspray" }
(if !logged_in {
view! {
a(href="/register") { "Register" }
" | "
a(href="/login") { "Log in" }
br {}
}
} else {
view! {
a(href="/add_issue") { "+ New Issue" }
}
})
"404 Not Found"
},
})
@ -364,6 +401,10 @@ pub fn register() -> View<G> {
div(style="justify-content: right") {
button(on:click=on_click) { "Register" }
}
small {
a(href="/login") { "Already have an account?" }
}
}
}
}
@ -473,6 +514,10 @@ pub fn login() -> View<G> {
div(style="justify-content: right") {
button(on:click=on_click) { (text.get()) }
}
small {
a(href="/register") { "Don't have an account?" }
}
}
}
}
@ -482,8 +527,12 @@ pub fn issue_detail(index: i64) -> View<G> {
let issue: Signal<Issue> = Signal::new(Issue::default());
if G::IS_BROWSER {
wasm_bindgen_futures::spawn_local(cloned!(issue => async move {
let resp = reqwasm::http::Request::get(&format!("/api/issues/{}", index)).send().await.unwrap().text().await.unwrap();
let parsed: Issue = serde_json::from_str(&resp).unwrap();
let resp = reqwasm::http::Request::get(&format!("/api/issues/{}", index)).send().await.unwrap();
if resp.status() == 404 {
setLocation("/not_found"); // lmao
}
let text = resp.text().await.unwrap();
let parsed: Issue = serde_json::from_str(&text).unwrap();
issue.set(parsed);
}));
}