From 1af6c8ee2c24165e8bd5a6557fdd8de9767f1031 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Mon, 17 Jul 2023 10:43:05 -0300
Subject: [PATCH] Use new transactional methods in FeedViewModel

---
 .../briar/desktop/blog/FeedViewModel.kt       | 21 ++++++++++---------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/FeedViewModel.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/FeedViewModel.kt
index c66f2b2f63..ff663fc29f 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/FeedViewModel.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/FeedViewModel.kt
@@ -129,8 +129,8 @@ class FeedViewModel @Inject constructor(
     @UiExecutor
     fun createBlogPost(text: String) {
         val parentPost = selectedPost.value
-        runOnDbThread {
-            val author = identityManager.localAuthor
+        runOnDbThreadWithTransaction(false) { txn ->
+            val author = identityManager.getLocalAuthor(txn)
             val blog = blogManager.getPersonalBlog(author)
             if (parentPost == null) {
                 val p = blogPostFactory.createBlogPost(
@@ -140,10 +140,10 @@ class FeedViewModel @Inject constructor(
                     author,
                     text,
                 )
-                blogManager.addLocalPost(p)
+                blogManager.addLocalPost(txn, p)
             } else {
                 val comment = text.takeIf { it.isNotBlank() }
-                blogManager.addLocalComment(author, blog.id, comment, parentPost.header)
+                blogManager.addLocalComment(txn, author, blog.id, comment, parentPost.header)
             }
         }
         _selectedPost.value = null
@@ -151,9 +151,9 @@ class FeedViewModel @Inject constructor(
 
     @UiExecutor
     fun markPostsRead(postIds: List<MessageId>) {
-        runOnDbThread {
+        runOnDbThreadWithTransaction(false) { txn ->
             postIds.forEach { id ->
-                blogManager.setReadFlag(id, true)
+                blogManager.setReadFlag(txn, id, true)
             }
         }
     }
@@ -189,12 +189,13 @@ class FeedViewModel @Inject constructor(
             item.id
         }
         if (readIds.isNotEmpty()) {
-            runOnDbThread {
+            runOnDbThreadWithTransaction(false) { txn ->
                 readIds.forEach { id ->
-                    blogManager.setReadFlag(id, false)
+                    blogManager.setReadFlag(txn, id, false)
+                }
+                txn.attach {
+                    eventBus.broadcast(BlogPostsReadEvent(readIds.size))
                 }
-                // TODO introduce Transaction for BlogManager#setReadFlag() and attach event there
-                eventBus.broadcast(BlogPostsReadEvent(readIds.size))
             }
             _posts.replaceIf({ it.id in readIds }) {
                 when (it) {
-- 
GitLab