From 1cf01601325b671e62ef4398d73e4aa61c9cffbc Mon Sep 17 00:00:00 2001 From: ymgyt Date: Sun, 5 May 2024 21:54:19 +0900 Subject: [PATCH] chore(term): prevent selection out of index --- crates/synd_term/src/ui/components/entries.rs | 4 ++++ crates/synd_term/src/ui/components/subscription.rs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/crates/synd_term/src/ui/components/entries.rs b/crates/synd_term/src/ui/components/entries.rs index 0866bf8e..4e1a346e 100644 --- a/crates/synd_term/src/ui/components/entries.rs +++ b/crates/synd_term/src/ui/components/entries.rs @@ -65,6 +65,10 @@ impl Entries { .filter(|(_idx, entry)| self.filter.entry(entry) == FilterResult::Use) .map(|(idx, _)| idx) .collect(); + // prevent selection from out of index + self.selected_entry_index = self + .selected_entry_index + .min(self.effective_entries.len().saturating_sub(1)); } pub fn remove_unsubscribed_entries(&mut self, url: &FeedUrl) { diff --git a/crates/synd_term/src/ui/components/subscription.rs b/crates/synd_term/src/ui/components/subscription.rs index 377b6a43..22f86660 100644 --- a/crates/synd_term/src/ui/components/subscription.rs +++ b/crates/synd_term/src/ui/components/subscription.rs @@ -119,6 +119,10 @@ impl Subscription { .filter(|(_idx, feed)| self.filter.feed(feed) == FilterResult::Use) .map(|(idx, _)| idx) .collect(); + // prevent selection from out of index + self.selected_feed_index = self + .selected_feed_index + .min(self.effective_feeds.len().saturating_sub(1)); } pub fn upsert_subscribed_feed(&mut self, feed: types::Feed) {