game_manager_lib/commands/platforms/
amazon.rs1use crate::commands::platforms::core::{format_login_success, spawn_import};
2use crate::errors::AppError;
3use crate::sources::amazon::AmazonSource;
4use tauri::AppHandle;
5
6#[tauri::command]
7pub async fn amazon_login(app: AppHandle) -> Result<String, AppError> {
8 let source = AmazonSource::new(app);
9 source.login().await?;
10 Ok(format_login_success("Amazon"))
11}
12
13#[tauri::command]
14pub async fn amazon_logout(app: AppHandle) -> Result<(), AppError> {
15 let source = AmazonSource::new(app);
16 source.logout().await
17}
18
19#[tauri::command]
20pub fn amazon_is_authenticated(app: AppHandle) -> Result<bool, AppError> {
21 let source = AmazonSource::new(app);
22 source.is_authenticated()
23}
24
25#[tauri::command]
26pub async fn import_amazon_games(app: AppHandle) -> Result<(), AppError> {
27 spawn_import(app, "Amazon", |app| async move {
28 let source = AmazonSource::new(app.clone());
29 let local_games = crate::sources::amazon::import_installed()?;
30
31 let mut games = if source.is_authenticated().unwrap_or(false) {
32 source.fetch_library_detailed().await?
33 } else {
34 Vec::new()
35 };
36
37 crate::sources::amazon::merge_local_install_status(&mut games, local_games);
38 Ok(games)
39 });
40 Ok(())
41}