diff --git a/crates/television-channels/src/channels/dirs.rs b/crates/television-channels/src/channels/dirs.rs index b5df262..d01e47a 100644 --- a/crates/television-channels/src/channels/dirs.rs +++ b/crates/television-channels/src/channels/dirs.rs @@ -37,7 +37,11 @@ impl From<&mut TelevisionChannel> for Channel { fn from(value: &mut TelevisionChannel) -> Self { match value { c @ TelevisionChannel::GitRepos(_) => { - let entries = c.results(c.result_count(), 0); + let entries = if c.selected_entries().is_empty() { + c.results(c.result_count(), 0) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::new( entries .iter() @@ -46,7 +50,11 @@ impl From<&mut TelevisionChannel> for Channel { ) } c @ TelevisionChannel::Dirs(_) => { - let entries = c.results(c.result_count(), 0); + let entries = if c.selected_entries().is_empty() { + c.results(c.result_count(), 0) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::new( entries .iter() diff --git a/crates/television-channels/src/channels/files.rs b/crates/television-channels/src/channels/files.rs index e1b200b..5d866f1 100644 --- a/crates/television-channels/src/channels/files.rs +++ b/crates/television-channels/src/channels/files.rs @@ -37,7 +37,11 @@ impl From<&mut TelevisionChannel> for Channel { fn from(value: &mut TelevisionChannel) -> Self { match value { c @ TelevisionChannel::GitRepos(_) => { - let entries = c.results(c.result_count(), 0); + let entries = if c.selected_entries().is_empty() { + c.results(c.result_count(), 0) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::new( entries .iter() @@ -46,7 +50,11 @@ impl From<&mut TelevisionChannel> for Channel { ) } c @ TelevisionChannel::Files(_) => { - let entries = c.results(c.result_count(), 0); + let entries = if c.selected_entries().is_empty() { + c.results(c.result_count(), 0) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::new( entries .iter() @@ -55,7 +63,11 @@ impl From<&mut TelevisionChannel> for Channel { ) } c @ TelevisionChannel::Text(_) => { - let entries = c.results(c.result_count(), 0); + let entries = if c.selected_entries().is_empty() { + c.results(c.result_count(), 0) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::new( entries .iter() diff --git a/crates/television-channels/src/channels/text.rs b/crates/television-channels/src/channels/text.rs index 0d034a6..84f7879 100644 --- a/crates/television-channels/src/channels/text.rs +++ b/crates/television-channels/src/channels/text.rs @@ -124,12 +124,16 @@ impl From<&mut TelevisionChannel> for Channel { fn from(value: &mut TelevisionChannel) -> Self { match value { c @ TelevisionChannel::Files(_) => { - let entries = c.results( - c.result_count().min( - u32::try_from(MAX_PIPED_FILES).unwrap_or(u32::MAX), - ), - 0, - ); + let entries = if c.selected_entries().is_empty() { + c.results( + c.result_count().min( + u32::try_from(MAX_PIPED_FILES).unwrap_or(u32::MAX), + ), + 0, + ) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::from_file_paths( entries .iter() @@ -140,7 +144,11 @@ impl From<&mut TelevisionChannel> for Channel { ) } c @ TelevisionChannel::GitRepos(_) => { - let entries = c.results(c.result_count(), 0); + let entries = if c.selected_entries().is_empty() { + c.results(c.result_count(), 0) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::new( entries .iter() @@ -151,11 +159,19 @@ impl From<&mut TelevisionChannel> for Channel { ) } c @ TelevisionChannel::Text(_) => { - let entries = c.results(c.result_count(), 0); + let entries = if c.selected_entries().is_empty() { + c.results(c.result_count(), 0) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::from_text_entries(entries) } c @ TelevisionChannel::Dirs(_) => { - let entries = c.results(c.result_count(), 0); + let entries = if c.selected_entries().is_empty() { + c.results(c.result_count(), 0) + } else { + c.selected_entries().iter().cloned().collect() + }; Self::new( entries .iter()