feat: remove attempt

This commit is contained in:
Asger Juul Brunshøj 2025-03-11 21:24:46 +01:00
parent 2e83efcf12
commit 3740224f79
2 changed files with 11 additions and 6 deletions

View File

@ -276,24 +276,27 @@ fn WithUserInteraction(
}); });
let onclick_flash = move |_| { let onclick_flash = move |_| {
let attempt = if ui_is_flash.get() { None } else { Some(models::Attempt::Flash) };
submit_attempt.dispatch(RonEncoded(server_functions::UpsertTodaysAttempt { submit_attempt.dispatch(RonEncoded(server_functions::UpsertTodaysAttempt {
wall_uid: wall_uid.get(), wall_uid: wall_uid.get(),
problem_uid: problem_uid.get(), problem_uid: problem_uid.get(),
attempt: models::Attempt::Flash, attempt,
})); }));
}; };
let onclick_send = move |_| { let onclick_send = move |_| {
let attempt = if ui_is_send.get() { None } else { Some(models::Attempt::Send) };
submit_attempt.dispatch(RonEncoded(server_functions::UpsertTodaysAttempt { submit_attempt.dispatch(RonEncoded(server_functions::UpsertTodaysAttempt {
wall_uid: wall_uid.get(), wall_uid: wall_uid.get(),
problem_uid: problem_uid.get(), problem_uid: problem_uid.get(),
attempt: models::Attempt::Send, attempt,
})); }));
}; };
let onclick_attempt = move |_| { let onclick_attempt = move |_| {
let attempt = if ui_is_attempt.get() { None } else { Some(models::Attempt::Attempt) };
submit_attempt.dispatch(RonEncoded(server_functions::UpsertTodaysAttempt { submit_attempt.dispatch(RonEncoded(server_functions::UpsertTodaysAttempt {
wall_uid: wall_uid.get(), wall_uid: wall_uid.get(),
problem_uid: problem_uid.get(), problem_uid: problem_uid.get(),
attempt: models::Attempt::Attempt, attempt,
})); }));
}; };

View File

@ -217,7 +217,7 @@ pub(crate) async fn get_problem_by_uid(
pub(crate) async fn upsert_todays_attempt( pub(crate) async fn upsert_todays_attempt(
wall_uid: models::WallUid, wall_uid: models::WallUid,
problem_uid: models::ProblemUid, problem_uid: models::ProblemUid,
attempt: models::Attempt, attempt: Option<models::Attempt>,
) -> Result<RonEncoded<models::UserInteraction>, ServerFnError> { ) -> Result<RonEncoded<models::UserInteraction>, ServerFnError> {
use crate::server::db::Database; use crate::server::db::Database;
use crate::server::db::DatabaseOperationError; use crate::server::db::DatabaseOperationError;
@ -233,7 +233,7 @@ pub(crate) async fn upsert_todays_attempt(
DatabaseOperation(DatabaseOperationError), DatabaseOperation(DatabaseOperationError),
} }
async fn inner(wall_uid: models::WallUid, problem_uid: models::ProblemUid, attempt: models::Attempt) -> Result<UserInteraction, Error> { async fn inner(wall_uid: models::WallUid, problem_uid: models::ProblemUid, attempt: Option<models::Attempt>) -> Result<UserInteraction, Error> {
let db = expect_context::<Database>(); let db = expect_context::<Database>();
let user_interaction = db let user_interaction = db
@ -260,7 +260,9 @@ pub(crate) async fn upsert_todays_attempt(
} }
} }
user_interaction.attempted_on.insert(chrono::Utc::now(), attempt); if let Some(attempt) = attempt {
user_interaction.attempted_on.insert(chrono::Utc::now(), attempt);
}
user_table.insert(key, user_interaction.clone())?; user_table.insert(key, user_interaction.clone())?;