Skip to main content

game_manager_lib/commands/platforms/
ea.rs

1//! EA - Importa jogos instalados via EA Desktop (Electronic Arts)
2
3use 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/// Importa jogos instalados via EA App, escaneando a pasta de instalação informada.
13///
14/// - `ea_install_dir` — pasta onde o EA App instala os jogos (configurável no client EA Desktop).
15/// **Observação:** Sem esse caminho, não há detecção possível.
16#[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}