fix(logic): exclude incomplete paused torrents from completed filter

This commit is contained in:
spinline
2026-02-04 23:32:02 +03:00
parent 97753762b4
commit 07cfd41cd1
2 changed files with 56 additions and 17 deletions

View File

@@ -1,15 +1,49 @@
use leptos::*;
use leptos::wasm_bindgen::JsCast;
use leptos::*;
#[component]
pub fn Sidebar() -> impl IntoView {
let store = use_context::<crate::store::TorrentStore>().expect("store not provided");
let total_count = move || store.torrents.get().len();
let downloading_count = move || store.torrents.get().iter().filter(|t| t.status == shared::TorrentStatus::Downloading).count();
let seeding_count = move || store.torrents.get().iter().filter(|t| t.status == shared::TorrentStatus::Seeding).count();
let completed_count = move || store.torrents.get().iter().filter(|t| t.status == shared::TorrentStatus::Seeding || t.status == shared::TorrentStatus::Paused).count();
let inactive_count = move || store.torrents.get().iter().filter(|t| t.status == shared::TorrentStatus::Paused || t.status == shared::TorrentStatus::Error).count();
let downloading_count = move || {
store
.torrents
.get()
.iter()
.filter(|t| t.status == shared::TorrentStatus::Downloading)
.count()
};
let seeding_count = move || {
store
.torrents
.get()
.iter()
.filter(|t| t.status == shared::TorrentStatus::Seeding)
.count()
};
let completed_count = move || {
store
.torrents
.get()
.iter()
.filter(|t| {
t.status == shared::TorrentStatus::Seeding
|| (t.status == shared::TorrentStatus::Paused && t.percent_complete >= 100.0)
})
.count()
};
let inactive_count = move || {
store
.torrents
.get()
.iter()
.filter(|t| {
t.status == shared::TorrentStatus::Paused
|| t.status == shared::TorrentStatus::Error
})
.count()
};
let close_drawer = move || {
if let Some(element) = document().get_element_by_id("my-drawer") {
@@ -25,7 +59,11 @@ pub fn Sidebar() -> impl IntoView {
};
let filter_class = move |f: crate::store::FilterStatus| {
if store.filter.get() == f { "active" } else { "" }
if store.filter.get() == f {
"active"
} else {
""
}
};
view! {

View File

@@ -65,7 +65,8 @@ pub fn TorrentTable() -> impl IntoView {
}
crate::store::FilterStatus::Completed => {
t.status == shared::TorrentStatus::Seeding
|| t.status == shared::TorrentStatus::Paused
|| (t.status == shared::TorrentStatus::Paused
&& t.percent_complete >= 100.0)
} // Approximate
crate::store::FilterStatus::Inactive => {
t.status == shared::TorrentStatus::Paused