fix(tui): removed a ton of use_username_dirs references

feat(tui): username is now appended to download_dir before passed as parameter
fix(tui): username is sanitized before appended to path
This commit is contained in:
Maik Steiger
2026-10-09 13:33:22 +02:00
parent 5e979a7425
commit 9805b807e5
28 changed files with 69 additions and 77 deletions
-2
View File
@@ -221,7 +221,6 @@ impl MainTui {
let sender = self.downloads_sender();
let client = self.client.clone();
let download_dir = self.download_dir.clone();
let use_username_dirs = self.use_username_dirs;
thread::spawn(move || {
for (path, size) in files {
match client.download(
@@ -229,7 +228,6 @@ impl MainTui {
username.clone(),
size,
download_dir.clone(),
use_username_dirs,
) {
Ok((download, rx)) => {
let _ = sender.send((download, rx));
+14 -10
View File
@@ -1,8 +1,10 @@
use super::MainTui;
use crate::models::{DownloadEntry, FileDisplayData};
use crate::ui::panes::{InfoSubject, selected_transfer};
use crate::ui::sanitize_path_component;
use soulseek_rs::types::UploadStatus;
use soulseek_rs::{DownloadStatus, types::Download};
use std::path::Path;
use std::{sync::mpsc, thread};
impl MainTui {
@@ -48,16 +50,9 @@ impl MainTui {
self.state.downloads.remove(index);
self.select_download_after_removal(index);
let _ = self.client.remove_download(&username, &filename);
let use_username_dirs = self.use_username_dirs;
thread::spawn(move || {
match client.download(
filename.clone(),
username,
size,
directory,
use_username_dirs,
) {
match client.download(filename.clone(), username, size, directory) {
Ok((download, rx)) => {
let _ = sender.send((download, rx));
}
@@ -214,12 +209,21 @@ impl MainTui {
peer_upload_speed: Some(file.speed),
peer_free_slots: Some(file.slots),
};
let download_dir = if use_username_dirs {
let sanitized_username =
sanitize_path_component(file.username.as_str());
Path::new(download_dir.as_str())
.join(sanitized_username.as_str())
.display()
.to_string()
} else {
download_dir.clone()
};
match client.download_with_metadata(
file.filename.clone(),
file.username.clone(),
file.size,
download_dir.clone(),
use_username_dirs,
download_dir,
metadata,
) {
Ok((download, rx)) => {
+14 -3
View File
@@ -12,11 +12,13 @@ use crate::persist::{
snapshot::{Snapshot, restore_messages, restore_searches},
state::{PersistedMessage, StateStore},
};
use crate::ui::sanitize_path_component;
use color_eyre::Result;
use ratatui::{
DefaultTerminal,
crossterm::event::{self, Event, KeyEventKind, poll},
};
use std::path::Path;
use std::{sync::Arc, time::Duration};
pub struct MainTui {
@@ -121,7 +123,6 @@ impl MainTui {
token: 0,
size: entry.size,
download_directory: entry.download_directory,
use_username_dirs: entry.use_username_dirs,
status: soulseek_rs::DownloadStatus::Completed,
sender: std::sync::mpsc::channel().0,
queue_position: None,
@@ -133,13 +134,23 @@ impl MainTui {
} else {
let client = self.client.clone();
let sender = sender.clone();
let use_username_dirs = self.use_username_dirs;
std::thread::spawn(move || {
let sanitized_username =
sanitize_path_component(entry.username.as_str());
let download_dir = if use_username_dirs {
Path::new(entry.download_directory.as_str())
.join(sanitized_username.as_str())
.display()
.to_string()
} else {
entry.download_directory
};
match client.download(
entry.filename.clone(),
entry.username,
entry.size,
entry.download_directory,
entry.use_username_dirs,
download_dir,
) {
Ok((download, rx)) => {
let _ = sender.send((download, rx));
+1 -1
View File
@@ -20,7 +20,7 @@ impl MainTui {
account,
self.download_dir.clone(),
self.client.shared_directories(),
self.use_username_dirs.clone(),
self.use_username_dirs,
));
}
-3
View File
@@ -84,7 +84,6 @@ fn at_status(
token: 1,
size: 4096,
download_directory: "/tmp".to_string(),
use_username_dirs: false,
status,
sender,
queue_position: None,
@@ -161,7 +160,6 @@ impl SessionApi for TalkativeSession {
_username: String,
_size: u64,
_directory: String,
_use_username_dirs: bool,
) -> soulseek_rs::Result<(
soulseek_rs::types::Download,
std::sync::mpsc::Receiver<soulseek_rs::DownloadStatus>,
@@ -174,7 +172,6 @@ impl SessionApi for TalkativeSession {
_username: String,
_size: u64,
_directory: String,
_use_username_dirs: bool,
_metadata: soulseek_rs::types::DownloadMetadata,
) -> soulseek_rs::Result<(
soulseek_rs::types::Download,