load game.db
This commit is contained in:
@@ -31,6 +31,7 @@ tauri-build = { version = "2", features = [] }
|
||||
lanspread-peer = { path = "../../lanspread-peer" }
|
||||
lanspread-db = { path = "../../lanspread-db" }
|
||||
lanspread-mdns = { path = "../../lanspread-mdns" }
|
||||
lanspread-compat = { path = "../../lanspread-compat" }
|
||||
|
||||
# external
|
||||
eyre = { workspace = true }
|
||||
|
||||
Binary file not shown.
@@ -5,8 +5,9 @@ use std::{
|
||||
};
|
||||
|
||||
use eyre::bail;
|
||||
use lanspread_compat::eti::get_games;
|
||||
use lanspread_db::db::{Game, GameDB};
|
||||
use lanspread_peer::{PeerCommand, PeerEvent, start_peer};
|
||||
use lanspread_peer::{EtiGamesLoader, PeerCommand, PeerEvent, start_peer_with_eti_loader};
|
||||
use tauri::{AppHandle, Emitter as _, Manager};
|
||||
use tauri_plugin_shell::{ShellExt, process::Command};
|
||||
use tokio::sync::{RwLock, mpsc::UnboundedSender};
|
||||
@@ -520,12 +521,33 @@ pub fn run() {
|
||||
};
|
||||
|
||||
if !games_folder.is_empty() {
|
||||
// Create ETI games loader that can access the Tauri resource
|
||||
let app_handle_for_loader = app_handle_clone.clone();
|
||||
let eti_games_loader: EtiGamesLoader = Arc::new(move || {
|
||||
let app_handle = app_handle_for_loader.clone();
|
||||
// Use tokio's block_in_place to call async function from sync context
|
||||
tokio::task::block_in_place(move || {
|
||||
tokio::runtime::Handle::current().block_on(async move {
|
||||
// Resolve the game.db resource path
|
||||
match app_handle.path().resolve("game.db", tauri::path::BaseDirectory::Resource) {
|
||||
Ok(game_db_path) => {
|
||||
get_games(&game_db_path).await
|
||||
}
|
||||
Err(e) => {
|
||||
log::error!("Failed to resolve game.db resource: {e}");
|
||||
Err(eyre::eyre!("Failed to resolve game.db resource: {e}"))
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
// Only start peer system when we have a valid games directory
|
||||
match start_peer(games_folder, tx_peer_event_clone) {
|
||||
match start_peer_with_eti_loader(games_folder, tx_peer_event_clone, Some(eti_games_loader)) {
|
||||
Ok(peer_ctrl) => {
|
||||
let state = app_handle_clone.state::<LanSpreadState>();
|
||||
*state.peer_ctrl.write().await = Some(peer_ctrl);
|
||||
log::info!("Peer system initialized successfully with games directory");
|
||||
log::info!("Peer system initialized successfully with games directory and ETI loader");
|
||||
|
||||
// Start peer discovery and request games from other peers
|
||||
request_games(state);
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
],
|
||||
"externalBin": [
|
||||
"binaries/unrar"
|
||||
],
|
||||
"resources": [
|
||||
"game.db"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user