Skip to main content

game_manager_lib/commands/platforms/
battle_net.rs

1//! Battle.net - Importa jogos instalados via Battle.net (Blizzard/Activision)
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::battle_net::BattleNetSource;
9use tauri::{AppHandle, Emitter, State};
10use tracing::info;
11
12#[tauri::command]
13pub async fn import_battle_net_games(
14    app: AppHandle,
15    state: State<'_, AppState>,
16) -> Result<String, AppError> {
17    let source = BattleNetSource::new();
18    let games = source.import_installed().await?;
19
20    if games.is_empty() {
21        return Ok(format_import_empty("Battle.net"));
22    }
23
24    let (inserted, updated, _newly_imported) = persist_source_games(&state, games).await?;
25    let message = format_import_summary("Battle.net", inserted, updated);
26    info!("{}", message);
27
28    let _ = app.emit("library_updated", ());
29
30    Ok(message)
31}