From 7d69413c805a7017aeb6015bc4634c6436f96ca9 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Wed, 5 Jul 2023 11:53:01 -0300
Subject: [PATCH] Fix blog post/comment sorting

---
 .../org/briarproject/briar/desktop/blog/BlogPostItem.kt   | 5 +++--
 .../org/briarproject/briar/desktop/blog/BlogPostView.kt   | 1 +
 .../org/briarproject/briar/desktop/blog/FeedViewModel.kt  | 8 ++------
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/BlogPostItem.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/BlogPostItem.kt
index 5366298b12..2c4fb589b7 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/BlogPostItem.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/BlogPostItem.kt
@@ -28,7 +28,7 @@ import org.briarproject.briar.api.identity.AuthorInfo
 sealed class BlogPost(
     open val header: BlogPostHeader,
     open val text: String?,
-) : Comparable<BlogPostItem> {
+) : Comparable<BlogPost> {
     abstract val postHeader: BlogPostHeader
     val isRead: Boolean get() = header.isRead
     val id: MessageId get() = header.id
@@ -38,7 +38,7 @@ sealed class BlogPost(
     val authorInfo: AuthorInfo get() = header.authorInfo
     val isRssFeed: Boolean get() = header.isRssFeed
 
-    override operator fun compareTo(other: BlogPostItem): Int {
+    override fun compareTo(other: BlogPost): Int {
         return if (this === other) 0 else other.header.timeReceived.compareTo(header.timeReceived)
     }
 }
@@ -71,6 +71,7 @@ data class BlogCommentItem(
 
     init {
         collectComments(header)
+        // comments are sorted in reverse order, so newest is at the end
         _comments.sortBy { it.timeReceived }
     }
 
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/BlogPostView.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/BlogPostView.kt
index b3e4f86732..d7d3ad73e0 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/BlogPostView.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/blog/BlogPostView.kt
@@ -166,6 +166,7 @@ private fun RepeatAuthorView(item: BlogPost, modifier: Modifier = Modifier) {
             horizontalArrangement = spacedBy(8.dp),
             verticalAlignment = CenterVertically,
         ) {
+            // TODO we may eventually want to move this into its own composable or integrate into ProfileCircle
             Box(
                 contentAlignment = BottomEnd,
                 modifier = Modifier.size(36.dp),
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 5f5172e461..99ff47bd5d 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
@@ -86,9 +86,7 @@ class FeedViewModel @Inject constructor(
     private fun loadAllBlogPosts(txn: Transaction) {
         val posts = blogManager.getBlogIds(txn).flatMap { g ->
             loadBlogPosts(txn, g)
-        }.sortedByDescending { blogPost ->
-            blogPost.header.timeReceived
-        }
+        }.sortedDescending()
         txn.attach {
             _posts.addAll(posts)
             _isLoading.value = false
@@ -108,9 +106,7 @@ class FeedViewModel @Inject constructor(
             val item = getItem(txn, header)
             txn.attach {
                 _posts.add(item)
-                _posts.sortByDescending { blogPost ->
-                    blogPost.header.timeReceived
-                }
+                _posts.sortDescending()
                 _isLoading.value = false
             }
         }
-- 
GitLab