From c963baa93e4a3f9ea2cc7ac279f521e47a76badc Mon Sep 17 00:00:00 2001 From: Degit22 Date: Thu, 21 Apr 2022 22:53:41 +0700 Subject: [PATCH 1/4] Cleanup database --- modules/database.js | 14 +++++++++++++- ui/feedlist.js | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/database.js b/modules/database.js index c3dbcfe8..3071ddfd 100644 --- a/modules/database.js +++ b/modules/database.js @@ -935,8 +935,20 @@ export let Database = { return tree; }, + + async cleanupEntries() { + //TODO: Do not delete entries that are in the feed now. + let query = this.query({ + deleted: 'deleted' + }); + let ids = await query.getIds(); + for(const id of ids.values()) { + let tx = this.db().transaction(['entries'], 'readwrite'); + let request = tx.objectStore('entries').delete(id); + DbUtil.requestPromise(request); + } + } }; -//TODO: database cleanup //TODO: bookmark to starred sync function Query(filters) { diff --git a/ui/feedlist.js b/ui/feedlist.js index 83cb05f0..e5fc2fe9 100644 --- a/ui/feedlist.js +++ b/ui/feedlist.js @@ -1163,6 +1163,7 @@ export let Commands = { emptyTrash: function cmd_emptyTrash() { ViewList.db.query(ViewList.getQueryForView('trash-folder')).markDeleted('deleted'); + ViewList.db.cleanupEntries(); }, toggleSelectedEntryRead: function cmd_toggleSelectedEntryRead() { From 045c07aea0b82f3bbed8d3320eb2a62cb175f0b0 Mon Sep 17 00:00:00 2001 From: Degit22 Date: Sat, 23 Apr 2022 02:01:47 +0700 Subject: [PATCH 2/4] cleanup revisions --- modules/database.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/database.js b/modules/database.js index 3071ddfd..ab05f96a 100644 --- a/modules/database.js +++ b/modules/database.js @@ -946,6 +946,10 @@ export let Database = { let tx = this.db().transaction(['entries'], 'readwrite'); let request = tx.objectStore('entries').delete(id); DbUtil.requestPromise(request); + + let tx2 = this.db().transaction(['revisions'], 'readwrite'); + let request2 = tx2.objectStore('revisions').delete(id); + DbUtil.requestPromise(request2); } } }; From 633c1c8e182100f1cbe6946a43b81df4d983a297 Mon Sep 17 00:00:00 2001 From: Degit22 Date: Sun, 24 Apr 2022 02:07:15 +0700 Subject: [PATCH 3/4] one transaction --- modules/database.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/database.js b/modules/database.js index ab05f96a..2c569e4f 100644 --- a/modules/database.js +++ b/modules/database.js @@ -943,12 +943,11 @@ export let Database = { }); let ids = await query.getIds(); for(const id of ids.values()) { - let tx = this.db().transaction(['entries'], 'readwrite'); + let tx = this.db().transaction(['entries', 'revisions'], 'readwrite'); let request = tx.objectStore('entries').delete(id); DbUtil.requestPromise(request); - let tx2 = this.db().transaction(['revisions'], 'readwrite'); - let request2 = tx2.objectStore('revisions').delete(id); + let request2 = tx.objectStore('revisions').delete(id); DbUtil.requestPromise(request2); } } From 07742bd4cc36ba9a6515173ac1aee92e7cba415b Mon Sep 17 00:00:00 2001 From: Degit22 Date: Mon, 2 May 2022 13:16:15 +0700 Subject: [PATCH 4/4] cleanupHiddenFeeds --- modules/database.js | 33 +++++++++++++++++++++++++++++++++ ui/feedlist.js | 1 + 2 files changed, 34 insertions(+) diff --git a/modules/database.js b/modules/database.js index 2c569e4f..6c61cbbf 100644 --- a/modules/database.js +++ b/modules/database.js @@ -950,6 +950,39 @@ export let Database = { let request2 = tx.objectStore('revisions').delete(id); DbUtil.requestPromise(request2); } + }, + + async cleanupHiddenFeeds() { + + var transaction = this._db.transaction(['feeds'], 'readonly'); + var objectStore = transaction.objectStore('feeds'); + + const request = objectStore.getAll(); + request.onsuccess = async ()=> { + const feeds = request.result; + + for (let feed of feeds) { + if (feed.hidden == 0) { + continue; + } + let query = new Query({ + feeds: [feed.feedID], + }); + let ids = await query.getIds(); + for(const id of ids.values()) { + let tx = this.db().transaction(['entries', 'revisions'], 'readwrite'); + let request = tx.objectStore('entries').delete(id); + DbUtil.requestPromise(request); + + let request2 = tx.objectStore('revisions').delete(id); + DbUtil.requestPromise(request2); + } + + let tx = this.db().transaction(['feeds'], 'readwrite'); + let request = tx.objectStore('feeds').delete(feed.feedID); + DbUtil.requestPromise(request); + } + } } }; //TODO: bookmark to starred sync diff --git a/ui/feedlist.js b/ui/feedlist.js index e5fc2fe9..7cd1fd6f 100644 --- a/ui/feedlist.js +++ b/ui/feedlist.js @@ -1163,6 +1163,7 @@ export let Commands = { emptyTrash: function cmd_emptyTrash() { ViewList.db.query(ViewList.getQueryForView('trash-folder')).markDeleted('deleted'); + ViewList.db.cleanupHiddenFeeds(); ViewList.db.cleanupEntries(); },