Skip to main content

qualia_client_core/api/
downloads.rs

1//! Active downloads, remote manifest, imported accounts
2
3#![allow(non_snake_case)]
4
5use crate::state::*;
6use std::path::PathBuf;
7
8pub fn get_active_downloads() -> Vec<ProgressPayload> {
9    let state = crate::state::APP_STATE.get().unwrap();
10    state
11        .active_downloads
12        .lock()
13        .unwrap()
14        .values()
15        .cloned()
16        .collect()
17}
18
19// ── Remote manifest fetch ─────────────────────────────────────────────────────
20
21pub async fn fetch_remote_manifest(url: String) -> Result<String, String> {
22    reqwest::get(&url)
23        .await
24        .map_err(|e| format!("Network error: {}", e))?
25        .text()
26        .await
27        .map_err(|e| format!("Response error: {}", e))
28}
29
30// ── Imported accounts persistence ────────────────────────────────────────────
31
32pub fn imported_accounts_path() -> PathBuf {
33    app_meta_dir().join("imported_accounts.json")
34}
35
36pub fn load_imported_accounts() -> Result<serde_json::Value, String> {
37    let path = imported_accounts_path();
38    if !path.exists() {
39        return Ok(serde_json::json!([]));
40    }
41    let s = std::fs::read_to_string(&path).map_err(|e| e.to_string())?;
42    serde_json::from_str(&s).map_err(|e| e.to_string())
43}
44
45pub fn save_imported_accounts(accounts: serde_json::Value) -> Result<(), String> {
46    let meta = app_meta_dir();
47    std::fs::create_dir_all(&meta).map_err(|e| e.to_string())?;
48    let json = serde_json::to_string_pretty(&accounts).map_err(|e| e.to_string())?;
49    std::fs::write(imported_accounts_path(), json).map_err(|e| e.to_string())
50}