preload all defined lists independent of status

This commit is contained in:
yggverse 2026-03-28 06:11:20 +02:00
parent ad617a7f9a
commit cda06f0811

View file

@ -15,11 +15,9 @@ pub struct List {
impl List { impl List {
pub async fn init(src: &str, is_enabled: bool) -> Result<Self> { pub async fn init(src: &str, is_enabled: bool) -> Result<Self> {
let mut rules = HashSet::new();
let source = Source::from_str(src)?; let source = Source::from_str(src)?;
if is_enabled { let mut rules = HashSet::new();
reload(&mut rules, &source).await?; load(&mut rules, &source).await?;
}
Ok(Self { Ok(Self {
rules, rules,
source, source,
@ -31,10 +29,8 @@ impl List {
let was_enabled = self.is_enabled; let was_enabled = self.is_enabled;
self.is_enabled = is_enabled; self.is_enabled = is_enabled;
if self.is_enabled { if self.is_enabled {
reload(&mut self.rules, &self.source).await?;
debug!("List `{}` enabled", &self.source); debug!("List `{}` enabled", &self.source);
} else { } else {
self.rules.clear();
debug!("List `{}` disabled", &self.source); debug!("List `{}` disabled", &self.source);
} }
Ok(was_enabled) Ok(was_enabled)
@ -44,9 +40,8 @@ impl List {
self.is_enabled && self.rules.iter().any(|rule| rule.contains(value)) self.is_enabled && self.rules.iter().any(|rule| rule.contains(value))
} }
} }
async fn reload(rules: &mut HashSet<Rule>, source: &Source) -> Result<()> { async fn load(rules: &mut HashSet<Rule>, source: &Source) -> Result<()> {
debug!("Reload list `{source}`..."); debug!("Load list `{source}`...");
rules.clear();
for line in source.get().await?.lines() { for line in source.get().await?.lines() {
if line.starts_with("/") || line.starts_with("#") || line.is_empty() { if line.starts_with("/") || line.starts_with("#") || line.is_empty() {
continue; // skip comments continue; // skip comments