fix(lib): don't create '~' in $HOME (#166)

* fix(lib): don't create '~' in $HOME

* throw an error wen fail to get home directory

---------

Co-authored-by: arabian <a.tevg@ya.ru>
This commit is contained in:
tonoco
2026-07-20 19:02:10 +03:00
committed by GitHub
co-authored by arabianq
parent 322b93efa1
commit 6130a99c4b
3 changed files with 11 additions and 6 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ async fn download_audio_from_url(uri: &str) -> Result<PathBuf> {
.and_then(|n| n.to_str()) .and_then(|n| n.to_str())
.unwrap_or("downloaded_audio.mp3"); .unwrap_or("downloaded_audio.mp3");
let save_path = ensure_pwsp_audio_dir().join(sanitized_file_name); let save_path = ensure_pwsp_audio_dir()?.join(sanitized_file_name);
let response = reqwest::get(target_url) let response = reqwest::get(target_url)
.await? .await?
+1 -1
View File
@@ -121,7 +121,7 @@ impl Default for GuiConfig {
save_scale_factor: false, save_scale_factor: false,
pause_on_exit: false, pause_on_exit: false,
dirs: vec![ensure_pwsp_audio_dir()], dirs: vec![ensure_pwsp_audio_dir().unwrap()],
preferred_theme: PreferredTheme::System, preferred_theme: PreferredTheme::System,
dirs_settings: HashMap::new(), dirs_settings: HashMap::new(),
+9 -4
View File
@@ -9,6 +9,7 @@ use crate::{
}; };
use anyhow::{Result, anyhow}; use anyhow::{Result, anyhow};
use std::{ use std::{
fs,
path::PathBuf, path::PathBuf,
sync::{Arc, Mutex}, sync::{Arc, Mutex},
time::Instant, time::Instant,
@@ -37,15 +38,19 @@ pub fn make_request_async(request: Request) {
}); });
} }
pub fn ensure_pwsp_audio_dir() -> PathBuf { pub fn ensure_pwsp_audio_dir() -> Result<PathBuf> {
let audio_dir = dirs::audio_dir().unwrap_or("~/Music".into()); let audio_dir = dirs::audio_dir().unwrap_or(
dirs::home_dir()
.map(|p| p.join("Music"))
.ok_or_else(|| anyhow!("Failed to get home directory. Is your system ok?"))?,
);
let pwsp_audio_dir = audio_dir.join("PWSP"); let pwsp_audio_dir = audio_dir.join("PWSP");
if !pwsp_audio_dir.exists() { if !pwsp_audio_dir.exists() {
std::fs::create_dir_all(&pwsp_audio_dir).ok(); fs::create_dir_all(&pwsp_audio_dir)?;
} }
pwsp_audio_dir Ok(pwsp_audio_dir)
} }
pub fn format_time_pair(position: f32, duration: f32) -> String { pub fn format_time_pair(position: f32, duration: f32) -> String {