diff --git a/.gitignore b/.gitignore index 2f7896d..b439660 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ target/ +cache/ \ No newline at end of file diff --git a/backend/src/main.rs b/backend/src/main.rs index 17fa79e..790b19d 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -123,6 +123,26 @@ async fn get_game_thumbnail( title: &str, game_list: &rocket::State>>, ) -> Option<(rocket::http::ContentType, Vec)> { + // 1. Sanitize title for filename + let safe_title: String = title + .chars() + .map(|c| if c.is_alphanumeric() { c } else { '_' }) + .collect(); + + let cache_dir = "cache"; + let _ = std::fs::create_dir_all(cache_dir); + let cache_path_bin = format!("{}/{}.bin", cache_dir, safe_title); + let cache_path_type = format!("{}/{}.type", cache_dir, safe_title); + + // 2. Check cache + if let (Ok(bytes), Ok(type_str)) = ( + std::fs::read(&cache_path_bin), + std::fs::read_to_string(&cache_path_type), + ) && let Some(ct) = rocket::http::ContentType::parse_flexible(&type_str) + { + return Some((ct, bytes)); + } + let games = game_list.lock().await; let game = games.iter().find(|g| g.title == title)?; @@ -174,6 +194,11 @@ async fn get_game_thumbnail( .and_then(rocket::http::ContentType::parse_flexible) .unwrap_or(rocket::http::ContentType::Binary); let bytes = resp.bytes().await.ok()?.to_vec(); + + // 3. Write to cache + let _ = std::fs::write(&cache_path_bin, &bytes); + let _ = std::fs::write(&cache_path_type, content_type.to_string()); + Some((content_type, bytes)) } Err(_) => None, diff --git a/frontend/src/GameFilter.tsx b/frontend/src/GameFilter.tsx index 0f0c2fb..83252a3 100644 --- a/frontend/src/GameFilter.tsx +++ b/frontend/src/GameFilter.tsx @@ -125,20 +125,26 @@ export function GameFilter() { style={{ textDecoration: "none", color: "inherit", - display: "block", + display: "flex", + justifyContent: "space-between", + alignItems: "center", }} > - {game} -
- ✓ All {selectedPeople.size} selected would play +
+ {game} +
+ ✓ All {selectedPeople.size} selected would play +
+
+
+
- ))} diff --git a/state.json b/state.json index 6559c1c..47013d2 100644 --- a/state.json +++ b/state.json @@ -45,6 +45,10 @@ { "title": " Asylum Life", "would_play": true + }, + { + "title": "Factorio", + "would_play": true } ] },