Schedule pickers, and target progress at one row
"Check feeds every" becomes a number plus a unit dropdown in both global and per-feed settings; parse_interval gained weeks to back it. The per-feed dropdown can select the global default, clearing the override. Fixes progress painting every pending row: the event carried no enclosure id, so the handler had nothing to target and set the width on all of them. Adding a feed looked like it was downloading everything. Progress, DownloadDone and DownloadError now carry the enclosure id. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AdXho5tTkjFLeUXKbEjKBh
This commit is contained in:
@@ -333,6 +333,7 @@ impl Db {
|
||||
/// An enclosure waiting to be downloaded.
|
||||
#[derive(Debug)]
|
||||
pub struct Pending {
|
||||
pub id: i64,
|
||||
pub url: String,
|
||||
pub mime: Option<String>,
|
||||
}
|
||||
@@ -343,12 +344,12 @@ impl Db {
|
||||
pub fn pending(&self, feed_id: &str, limit: usize) -> Result<Vec<Pending>> {
|
||||
let conn = self.conn.lock().unwrap();
|
||||
let mut stmt = conn.prepare(
|
||||
"SELECT url, mime FROM enclosures
|
||||
"SELECT id, url, mime FROM enclosures
|
||||
WHERE feed_id = ?1 AND state = 'pending' ORDER BY id LIMIT ?2",
|
||||
)?;
|
||||
let rows = stmt
|
||||
.query_map(rusqlite::params![feed_id, limit as i64], |r| {
|
||||
Ok(Pending { url: r.get(0)?, mime: r.get(1)? })
|
||||
Ok(Pending { id: r.get(0)?, url: r.get(1)?, mime: r.get(2)? })
|
||||
})?
|
||||
.collect::<rusqlite::Result<Vec<_>>>()?;
|
||||
Ok(rows)
|
||||
|
||||
Reference in New Issue
Block a user