game_manager_lib/commands/platforms/
ea.rs1use crate::commands::platforms::core::{
4 format_import_empty, format_import_summary, persist_source_games,
5};
6use crate::database::AppState;
7use crate::errors::AppError;
8use crate::sources::ea::EaSource;
9use tauri::{AppHandle, Emitter, State};
10use tracing::info;
11
12#[tauri::command]
17pub async fn import_ea_games(
18 app: AppHandle,
19 state: State<'_, AppState>,
20 ea_install_dir: Option<String>,
21) -> Result<String, AppError> {
22 let install_dir = ea_install_dir
23 .filter(|s| !s.trim().is_empty())
24 .map(std::path::PathBuf::from);
25
26 let source = EaSource::new(install_dir);
27 let games = source.import_installed().await?;
28
29 if games.is_empty() {
30 return Ok(format_import_empty("EA"));
31 }
32
33 let (inserted, updated, _newly_imported) = persist_source_games(&state, games).await?;
34 let message = format_import_summary("EA", inserted, updated);
35 info!("{}", message);
36
37 let _ = app.emit("library_updated", ());
38
39 Ok(message)
40}