Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jangernert/FeedReader.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrendan Long <self@brendanlong.com>2019-05-27 22:46:57 +0300
committerBrendan Long <self@brendanlong.com>2019-05-27 22:57:26 +0300
commitefe36f89b49812e750b1a0c5493c7b88d2386da9 (patch)
tree925b2d4949a90da731e5e030fcbd8fd6fbbb8377
parent9ea9b37d9077e1abeb00a263ad1bf672e9fe9844 (diff)
Fix delete old articles logic
- Fix double-negative in delete query - Change logic to use days instead of weeks - Use to_start_date() consistently
-rw-r--r--plugins/backend/decsync/decsyncInterface.vala4
-rw-r--r--src/Backend/FeedServer.vala6
-rw-r--r--src/DataBaseWriteAccess.vala8
-rw-r--r--src/Enums.vala24
4 files changed, 20 insertions, 22 deletions
diff --git a/plugins/backend/decsync/decsyncInterface.vala b/plugins/backend/decsync/decsyncInterface.vala
index fa1650d6..fd0f89a6 100644
--- a/plugins/backend/decsync/decsyncInterface.vala
+++ b/plugins/backend/decsync/decsyncInterface.vala
@@ -482,9 +482,7 @@ public class FeedReader.decsyncInterface : FeedServerInterface {
var feeds = DataBase.readOnly().read_feeds();
var articles = new Gee.ArrayList<Article>();
GLib.Mutex mutex = GLib.Mutex();
- var now = new GLib.DateTime.now_local();
- int? weeks = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_weeks();
- var dropDate = weeks == null ? null : now.add_weeks(-(int)weeks);
+ DateTime? dropDate = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_start_date();
try
{
diff --git a/src/Backend/FeedServer.vala b/src/Backend/FeedServer.vala
index f12baa90..76600454 100644
--- a/src/Backend/FeedServer.vala
+++ b/src/Backend/FeedServer.vala
@@ -279,10 +279,10 @@ public class FeedReader.FeedServer : GLib.Object {
Notification.send(newArticles, new_and_unread);
}
- var drop_weeks = drop_articles.to_weeks();
- if(drop_weeks != null)
+ var article_max_age_days = drop_articles.to_days();
+ if(article_max_age_days != null)
{
- db.dropOldArticles(-(int)drop_weeks);
+ db.dropOldArticles(article_max_age_days);
}
int last_modified = db.getLastModified();
diff --git a/src/DataBaseWriteAccess.vala b/src/DataBaseWriteAccess.vala
index 26274b7f..cfae9673 100644
--- a/src/DataBaseWriteAccess.vala
+++ b/src/DataBaseWriteAccess.vala
@@ -83,12 +83,12 @@ public class FeedReader.DataBase : DataBaseReadOnly {
Settings.state().set_int("last-spring-cleaning", (int)now.to_unix());
}
- public void dropOldArticles(int weeks)
+ public void dropOldArticles(int max_age_days)
{
var query = new QueryBuilder(QueryType.SELECT, "main.articles");
query.select_field("articleID");
query.select_field("feedID");
- query.where("datetime(date, 'unixepoch', 'localtime') <= datetime('now', '-%i days')".printf(weeks*7));
+ query.where(@"datetime(date, 'unixepoch', 'localtime') <= datetime('now', '-$(max_age_days) days')");
query.where_equal_int("marked", ArticleStatus.UNMARKED.to_int());
if(FeedServer.get_default().useMaxArticles())
{
@@ -456,6 +456,7 @@ public class FeedReader.DataBase : DataBaseReadOnly {
assert (guidHash_position > 0);
assert (modified_position > 0);
+ DateTime? drop_date = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_start_date();
foreach(var article in articles)
{
// if article time is in the future
@@ -465,8 +466,7 @@ public class FeedReader.DataBase : DataBaseReadOnly {
article.SetDate(now);
}
- int? weeks = ((DropArticles)Settings.general().get_enum("drop-articles-after")).to_weeks();
- if(weeks != null && article.getDate().compare(now.add_weeks(-(int)weeks)) == -1)
+ if(drop_date != null && article.getDate().compare(drop_date) == -1)
{
Logger.info("Ignoring old article: %s".printf(article.getTitle()));
continue;
diff --git a/src/Enums.vala b/src/Enums.vala
index 1fe545f9..9212e7f9 100644
--- a/src/Enums.vala
+++ b/src/Enums.vala
@@ -177,32 +177,32 @@ namespace FeedReader {
ONE_MONTH,
SIX_MONTHS;
- public int? to_weeks()
+ public int? to_days()
{
switch(this)
{
- case NEVER:
+ case NEVER:
return null;
- case ONE_WEEK:
- return 1;
- case ONE_MONTH:
- return 4;
- case SIX_MONTHS:
- return 24;
- default:
+ case ONE_WEEK:
+ return 7;
+ case ONE_MONTH:
+ return 31;
+ case SIX_MONTHS:
+ return 186;
+ default:
assert_not_reached();
}
}
public DateTime? to_start_date()
{
- int? weeks = to_weeks();
- if(weeks == null)
+ int? days = to_days();
+ if(days == null)
{
return null;
}
- return new DateTime.now_utc().add_weeks(-(int)weeks);
+ return new DateTime.now_utc().add_days(-(int)days);
}
}