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 c66f2b2f63d2ef2c163b8b027311b4125512aedd..ff663fc29f09e2ea6f7bd0c33b3b40497562199a 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) {