diff --git a/frontend/src/components/torrent/table.rs b/frontend/src/components/torrent/table.rs
index cddd311..edb5a4a 100644
--- a/frontend/src/components/torrent/table.rs
+++ b/frontend/src/components/torrent/table.rs
@@ -577,15 +577,11 @@ fn TorrentRow(
{
let on_action = on_action.clone();
move || {
- let t = torrent.get().unwrap();
- let t_name = t.name.clone();
-
let is_active_selection = Memo::new(move |_| {
let selected = store.selected_torrent.get();
selected.as_deref() == Some(stored_hash.get_value().as_str())
});
- let t_name_stored = StoredValue::new(t_name.clone());
let h_for_menu = stored_hash.get_value();
view! {
@@ -603,25 +599,29 @@ fn TorrentRow(
{move || visible_columns.get().contains("Name").then({
- move || view! {
-
- {t_name_stored.get_value()}
-
+ move || {
+ let name = torrent.get().map(|t| t.name).unwrap_or_default();
+ view! {
+
+ {name}
+
+ }
}
}).into_any()}
{move || visible_columns.get().contains("Size").then({
- let size_bytes = t.size;
move || {
- let size_str = format_bytes(size_bytes);
+ let size = torrent.get().map(|t| t.size).unwrap_or(0);
+ let size_str = format_bytes(size);
view! { {size_str} }
}
}).into_any()}
{move || visible_columns.get().contains("Progress").then({
- let percent = t.percent_complete;
- let status = t.status.clone();
move || {
+ let t = torrent.get().unwrap();
+ let percent = t.percent_complete;
+ let status = t.status.clone();
let class = if status == shared::TorrentStatus::Error {
"bg-destructive/20 [&>div]:bg-destructive".to_string()
} else {
@@ -642,48 +642,51 @@ fn TorrentRow(
}).into_any()}
{move || visible_columns.get().contains("Status").then({
- let status_text = format!("{:?}", t.status);
- let variant = match t.status {
- shared::TorrentStatus::Seeding => BadgeVariant::Success,
- shared::TorrentStatus::Downloading => BadgeVariant::Info,
- shared::TorrentStatus::Paused => BadgeVariant::Warning,
- shared::TorrentStatus::Error => BadgeVariant::Destructive,
- _ => BadgeVariant::Secondary,
- };
- move || view! {
-
- {status_text.clone()}
-
+ move || {
+ let t = torrent.get().unwrap();
+ let status_text = format!("{:?}", t.status);
+ let variant = match t.status {
+ shared::TorrentStatus::Seeding => BadgeVariant::Success,
+ shared::TorrentStatus::Downloading => BadgeVariant::Info,
+ shared::TorrentStatus::Paused => BadgeVariant::Warning,
+ shared::TorrentStatus::Error => BadgeVariant::Destructive,
+ _ => BadgeVariant::Secondary,
+ };
+ view! {
+
+ {status_text}
+
+ }
}
}).into_any()}
{move || visible_columns.get().contains("DownSpeed").then({
- let rate = t.down_rate;
move || {
+ let rate = torrent.get().map(|t| t.down_rate).unwrap_or(0);
let speed_str = format_speed(rate);
view! { {speed_str} }
}
}).into_any()}
{move || visible_columns.get().contains("UpSpeed").then({
- let rate = t.up_rate;
move || {
+ let rate = torrent.get().map(|t| t.up_rate).unwrap_or(0);
let speed_str = format_speed(rate);
view! { {speed_str} }
}
}).into_any()}
{move || visible_columns.get().contains("ETA").then({
- let eta = t.eta;
move || {
+ let eta = torrent.get().map(|t| t.eta).unwrap_or(0);
let eta_str = format_duration(eta);
view! { {eta_str} }
}
}).into_any()}
{move || visible_columns.get().contains("AddedDate").then({
- let date = t.added_date;
move || {
+ let date = torrent.get().map(|t| t.added_date).unwrap_or(0);
let date_str = format_date(date);
view! { {date_str} }
}
@@ -761,8 +764,8 @@ fn TorrentCard(
{format!("{:.1}%", t.percent_complete)}