]> uap-core.de Git - rssreader.git/commitdiff
improve SyncJob: fetch feed list in IO thread
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 7 Sep 2025 10:42:10 +0000 (12:42 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sun, 7 Sep 2025 10:42:10 +0000 (12:42 +0200)
rss-application/src/main/kotlin/de/unixwork/rssreader/App.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/SyncJob.kt

index c1a3bac3957182d727776067d1f72afc97bcaf46..33eeec18a7be5c581f4b6278ee39cf480f33fd1b 100644 (file)
@@ -14,7 +14,7 @@ class App : Application {
     fun initToolbar() {
         toolbarItem(name = "reload", icon = "view-refresh") { event ->
             val window = event.windowData as MainWindow
-            SyncJob().sync() {
+            SyncJob({ Database.getAllFeeds()}).sync() {
                 window.sourceList.invalidateCache()
                 window.sourceList.reloadStatus()
                 window.feedList.reloadCurrentFeed()
index 70d19e95567b63acad110f2758ff922a7d948693..f205f7dcd5384243db7080b8b25e93fde332da81 100644 (file)
@@ -14,16 +14,14 @@ import java.net.http.HttpClient
 import java.net.http.HttpRequest
 import java.net.http.HttpResponse
 
-class SyncJob {
-    val feeds: List<Feed>
+class SyncJob(feeds: () -> List<Feed>) {
+    val getFeeds: () -> List<Feed> = feeds
     var completionContext = ToolkitDispatcher
 
-    init {
-        feeds = Database.getAllFeeds()
-    }
-
     fun sync(completion: () -> Unit = {}) {
         GlobalScope.launch(Dispatchers.IO) {
+            val feeds = getFeeds()
+
             val client = HttpClient.newBuilder().build()
             val jobs = feeds.map { feed ->
                 async {
@@ -81,11 +79,9 @@ class SyncJob {
                             }
                             Database.addItems(items)
                             Database.updateFeedDate(feed)
-                            syndFeed
                         }
                     } catch (e: Exception) {
                         println("Failed to fetch ${feed.uri}: ${e.message}")
-                        null
                     }
                 }
             }