fix: dont panic when no problems are available

This commit is contained in:
Asger Juul Brunshøj 2025-01-22 23:32:45 +01:00
parent 2678d2d3dd
commit 426c2b463e
2 changed files with 7 additions and 3 deletions

1
README.md Normal file
View File

@ -0,0 +1 @@
# Ascend

View File

@ -49,7 +49,10 @@ fn Ready(data: InitialData) -> impl leptos::IntoView {
let problem_fetcher = LocalResource::new(move || async move {
tracing::info!("Loading random problem");
let problem = get_random_problem().await.expect("cannot get random problem");
current_problem_writer.set(Some(problem.into_inner()));
if problem.is_none() {
tracing::info!("No problem returned by server in response to request for random problem");
}
current_problem_writer.set(problem.into_inner());
});
let mut cells = vec![];
@ -112,7 +115,7 @@ async fn load_initial_data() -> Result<RonCodec<InitialData>, ServerFnError> {
}
#[server]
async fn get_random_problem() -> Result<RonCodec<models::Problem>, ServerFnError> {
async fn get_random_problem() -> Result<RonCodec<Option<models::Problem>>, ServerFnError> {
use crate::server::state::State;
use rand::seq::IteratorRandom;
@ -123,7 +126,7 @@ async fn get_random_problem() -> Result<RonCodec<models::Problem>, ServerFnError
.with(|s| {
let problems = &s.problems.problems;
let rng = &mut rand::thread_rng();
problems.iter().choose(rng).unwrap().clone()
problems.iter().choose(rng).cloned()
})
.await;