diff --git a/src/app.rs b/src/app.rs
index 9e91878..50cad40 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -59,8 +59,8 @@ pub fn App() -> impl IntoView {
-
-
+ } />
+ } />
diff --git a/src/pages/login.rs b/src/pages/login.rs
index 1fda5ca..585f2f0 100644
--- a/src/pages/login.rs
+++ b/src/pages/login.rs
@@ -3,9 +3,10 @@ use leptos::leptos_dom::*;
use leptos::*;
use leptos_icons::*;
use crate::users::UserCredentials;
+use crate::app::LoggedInUserResource;
#[component]
-pub fn Login() -> impl IntoView {
+pub fn Login(user: LoggedInUserResource) -> impl IntoView {
let (username_or_email, set_username_or_email) = create_signal("".to_string());
let (password, set_password) = create_signal("".to_string());
@@ -32,13 +33,22 @@ pub fn Login() -> impl IntoView {
if let Err(err) = login_result {
// Handle the error here, e.g., log it or display to the user
log!("Error logging in: {:?}", err);
- } else if let Ok(Some(_)) = login_result {
+
+ // Since we're not sure what the state is, manually refetch the user
+ user.refetch();
+ } else if let Ok(Some(login_user)) = login_result {
+ // Manually set the user to the new user, avoiding a refetch
+ user.set(Some(login_user));
+
// Redirect to the login page
log!("Logged in Successfully!");
leptos_router::use_navigate()("/", Default::default());
log!("Navigated to home page after login");
} else if let Ok(None) = login_result {
log!("Invalid username or password");
+
+ // User could be already logged in or not, so refetch the user
+ user.refetch();
}
});
};
diff --git a/src/pages/signup.rs b/src/pages/signup.rs
index f02dfab..8e9a0ac 100644
--- a/src/pages/signup.rs
+++ b/src/pages/signup.rs
@@ -3,9 +3,10 @@ use crate::models::User;
use leptos::leptos_dom::*;
use leptos::*;
use leptos_icons::*;
+use crate::app::LoggedInUserResource;
#[component]
-pub fn Signup() -> impl IntoView {
+pub fn Signup(user: LoggedInUserResource) -> impl IntoView {
let (username, set_username) = create_signal("".to_string());
let (email, set_email) = create_signal("".to_string());
let (password, set_password) = create_signal("".to_string());
@@ -19,7 +20,7 @@ pub fn Signup() -> impl IntoView {
let on_submit = move |ev: leptos::ev::SubmitEvent| {
ev.prevent_default();
- let new_user = User {
+ let mut new_user = User {
id: None,
username: username.get(),
email: email.get(),
@@ -30,10 +31,17 @@ pub fn Signup() -> impl IntoView {
log!("new user: {:?}", new_user);
spawn_local(async move {
- if let Err(err) = signup(new_user).await {
+ if let Err(err) = signup(new_user.clone()).await {
// Handle the error here, e.g., log it or display to the user
log!("Error signing up: {:?}", err);
+
+ // Since we're not sure what the state is, manually refetch the user
+ user.refetch();
} else {
+ // Manually set the user to the new user, avoiding a refetch
+ new_user.password = None;
+ user.set(Some(new_user));
+
// Redirect to the login page
log!("Signed up successfully!");
leptos_router::use_navigate()("/", Default::default());