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) {