From af1bc944d89303d0bd9eea18bb3816b9bca3bc47 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Sun, 17 Mar 2024 20:52:39 -0500 Subject: [PATCH] feat: sort comments in api --- .../connections/comments/CommentsAPI.kt | 5 +++- .../media/comments/CommentsFragment.kt | 25 ++++++++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/connections/comments/CommentsAPI.kt b/app/src/main/java/ani/dantotsu/connections/comments/CommentsAPI.kt index e06af9e4..dc9bf872 100644 --- a/app/src/main/java/ani/dantotsu/connections/comments/CommentsAPI.kt +++ b/app/src/main/java/ani/dantotsu/connections/comments/CommentsAPI.kt @@ -31,12 +31,15 @@ object CommentsAPI { var isMod: Boolean = false var totalVotes: Int = 0 - suspend fun getCommentsForId(id: Int, page: Int = 1, tag: Int?): CommentResponse? { + suspend fun getCommentsForId(id: Int, page: Int = 1, tag: Int?, sort: String?): CommentResponse? { var url = "$address/comments/$id/$page" val request = requestBuilder() tag?.let { url += "?tag=$it" } + sort?.let { + url += if (tag != null) "&sort=$it" else "?sort=$it" + } val json = try { request.get(url) } catch (e: IOException) { diff --git a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt index 5900b32a..8a41e095 100644 --- a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt @@ -13,7 +13,6 @@ import android.view.View import android.view.ViewGroup import android.view.inputmethod.InputMethodManager import android.widget.EditText -import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.PopupMenu import androidx.core.animation.doOnEnd import androidx.core.content.res.ResourcesCompat @@ -34,7 +33,6 @@ import ani.dantotsu.settings.saving.PrefName import ani.dantotsu.snackString import ani.dantotsu.toast import ani.dantotsu.util.Logger -import com.bumptech.glide.Glide import com.xwray.groupie.GroupieAdapter import com.xwray.groupie.Section import io.noties.markwon.editor.MarkwonEditor @@ -140,9 +138,15 @@ class CommentsFragment : Fragment() { R.id.comment_sort_lowest_rated -> "lowest_rated" else -> return@setOnMenuItemClickListener false } - PrefManager.setVal(PrefName.CommentSortOrder, sortOrder) - sortComments(sortOrder) + if (totalPages > pagesLoaded) { + lifecycleScope.launch { + loadAndDisplayComments() + activity.binding.commentReplyToContainer.visibility = View.GONE + } + } else { + sortComments(sortOrder) + } binding.commentsList.scrollToPosition(0) true } @@ -221,7 +225,12 @@ class CommentsFragment : Fragment() { private suspend fun fetchComments(): CommentResponse? { return withContext(Dispatchers.IO) { - CommentsAPI.getCommentsForId(mediaId, pagesLoaded + 1, filterTag) + CommentsAPI.getCommentsForId( + mediaId, + pagesLoaded + 1, + filterTag, + PrefManager.getVal(PrefName.CommentSortOrder, "newest") + ) } } @@ -379,7 +388,11 @@ class CommentsFragment : Fragment() { section.clear() val comments = withContext(Dispatchers.IO) { - CommentsAPI.getCommentsForId(mediaId, tag = filterTag) + CommentsAPI.getCommentsForId( + mediaId, + tag = filterTag, + sort = PrefManager.getVal(PrefName.CommentSortOrder, "newest") + ) } val sortedComments = sortComments(comments?.comments)