Skip to content
This repository was archived by the owner on Jan 11, 2023. It is now read-only.

Commit efe36f8

Browse files
committed
Fix delete old articles logic
- Fix double-negative in delete query - Change logic to use days instead of weeks - Use to_start_date() consistently
1 parent 9ea9b37 commit efe36f8

File tree

4 files changed

+20
-22
lines changed

4 files changed

+20
-22
lines changed

plugins/backend/decsync/decsyncInterface.vala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -482,9 +482,7 @@ public class FeedReader.decsyncInterface : FeedServerInterface {
482482
var feeds = DataBase.readOnly().read_feeds();
483483
var articles = new Gee.ArrayList<Article>();
484484
GLib.Mutex mutex = GLib.Mutex();
485-
var now = new GLib.DateTime.now_local();
486-
int? weeks = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_weeks();
487-
var dropDate = weeks == null ? null : now.add_weeks(-(int)weeks);
485+
DateTime? dropDate = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_start_date();
488486

489487
try
490488
{

src/Backend/FeedServer.vala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,10 +279,10 @@ public class FeedReader.FeedServer : GLib.Object {
279279
Notification.send(newArticles, new_and_unread);
280280
}
281281

282-
var drop_weeks = drop_articles.to_weeks();
283-
if(drop_weeks != null)
282+
var article_max_age_days = drop_articles.to_days();
283+
if(article_max_age_days != null)
284284
{
285-
db.dropOldArticles(-(int)drop_weeks);
285+
db.dropOldArticles(article_max_age_days);
286286
}
287287

288288
int last_modified = db.getLastModified();

src/DataBaseWriteAccess.vala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ public class FeedReader.DataBase : DataBaseReadOnly {
8383
Settings.state().set_int("last-spring-cleaning", (int)now.to_unix());
8484
}
8585

86-
public void dropOldArticles(int weeks)
86+
public void dropOldArticles(int max_age_days)
8787
{
8888
var query = new QueryBuilder(QueryType.SELECT, "main.articles");
8989
query.select_field("articleID");
9090
query.select_field("feedID");
91-
query.where("datetime(date, 'unixepoch', 'localtime') <= datetime('now', '-%i days')".printf(weeks*7));
91+
query.where(@"datetime(date, 'unixepoch', 'localtime') <= datetime('now', '-$(max_age_days) days')");
9292
query.where_equal_int("marked", ArticleStatus.UNMARKED.to_int());
9393
if(FeedServer.get_default().useMaxArticles())
9494
{
@@ -456,6 +456,7 @@ public class FeedReader.DataBase : DataBaseReadOnly {
456456
assert (guidHash_position > 0);
457457
assert (modified_position > 0);
458458

459+
DateTime? drop_date = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_start_date();
459460
foreach(var article in articles)
460461
{
461462
// if article time is in the future
@@ -465,8 +466,7 @@ public class FeedReader.DataBase : DataBaseReadOnly {
465466
article.SetDate(now);
466467
}
467468

468-
int? weeks = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_weeks();
469-
if(weeks != null && article.getDate().compare(now.add_weeks(-(int)weeks)) == -1)
469+
if(drop_date != null && article.getDate().compare(drop_date) == -1)
470470
{
471471
Logger.info("Ignoring old article: %s".printf(article.getTitle()));
472472
continue;

src/Enums.vala

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -177,32 +177,32 @@ namespace FeedReader {
177177
ONE_MONTH,
178178
SIX_MONTHS;
179179

180-
public int? to_weeks()
180+
public int? to_days()
181181
{
182182
switch(this)
183183
{
184-
case NEVER:
184+
case NEVER:
185185
return null;
186-
case ONE_WEEK:
187-
return 1;
188-
case ONE_MONTH:
189-
return 4;
190-
case SIX_MONTHS:
191-
return 24;
192-
default:
186+
case ONE_WEEK:
187+
return 7;
188+
case ONE_MONTH:
189+
return 31;
190+
case SIX_MONTHS:
191+
return 186;
192+
default:
193193
assert_not_reached();
194194
}
195195
}
196196

197197
public DateTime? to_start_date()
198198
{
199-
int? weeks = to_weeks();
200-
if(weeks == null)
199+
int? days = to_days();
200+
if(days == null)
201201
{
202202
return null;
203203
}
204204

205-
return new DateTime.now_utc().add_weeks(-(int)weeks);
205+
return new DateTime.now_utc().add_days(-(int)days);
206206
}
207207
}
208208

0 commit comments

Comments
 (0)