From b35178d59d46a920c89ee551e8fe2bf8c7f424ef Mon Sep 17 00:00:00 2001 From: mtkennerly Date: Mon, 18 Dec 2023 00:33:49 +0800 Subject: [PATCH] Unify some refresh logic --- src/wiki.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/wiki.rs b/src/wiki.rs index 82841a31..c0956f82 100644 --- a/src/wiki.rs +++ b/src/wiki.rs @@ -267,18 +267,16 @@ impl WikiCache { let solo = titles.is_some(); let titles: Vec<_> = titles.unwrap_or_else(|| { self.0 - .keys() - .skip_while(|x| from.as_ref().is_some_and(|from| from != *x)) + .iter() + .filter(|(_, v)| !outdated_only || v.state == State::Outdated) + .skip_while(|(k, _)| from.as_ref().is_some_and(|from| from != *k)) .take(limit.unwrap_or(usize::MAX)) - .cloned() + .map(|(k, _)| k.to_string()) .collect() }); for title in &titles { let cached = self.0.get(title).cloned().unwrap_or_default(); - if outdated_only && cached.state != State::Outdated { - continue; - } println!("Wiki: {}", title); let latest = WikiCacheEntry::fetch_from_page(title.clone()).await;