From 177b682d8453b4a6afd7aa6c022113920ff5c613 Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Wed, 15 Feb 2017 01:09:56 +0800 Subject: [PATCH] fixed conversation load --- .../microblog/library/twitter/model/Status.java | 7 +++++++ .../twidere/model/ParcelableStatus.java | 4 ++++ .../twidere/fragment/StatusFragment.kt | 17 ++++++++--------- .../twidere/loader/ConversationLoader.kt | 10 +++------- .../twidere/model/util/ParcelableStatusUtils.kt | 6 ++---- 5 files changed, 24 insertions(+), 20 deletions(-) diff --git a/twidere.component.common/src/main/java/org/mariotaku/microblog/library/twitter/model/Status.java b/twidere.component.common/src/main/java/org/mariotaku/microblog/library/twitter/model/Status.java index 70b6fceb5..e5b2747e9 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/microblog/library/twitter/model/Status.java +++ b/twidere.component.common/src/main/java/org/mariotaku/microblog/library/twitter/model/Status.java @@ -174,6 +174,9 @@ public class Status extends TwitterResponseObject implements Comparable, @JsonField(name = "statusnet_conversation_id") String statusnetConversationId; + @JsonField(name = "conversation_id") + String conversationId; + /** * For GNU social @@ -414,6 +417,10 @@ public class Status extends TwitterResponseObject implements Comparable, return attentions; } + public String getConversationId() { + return conversationId; + } + public String getLang() { return lang; } diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/model/ParcelableStatus.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/model/ParcelableStatus.java index 005ea34c6..0c19c4ca6 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/model/ParcelableStatus.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/model/ParcelableStatus.java @@ -520,6 +520,10 @@ public class ParcelableStatus implements Parcelable, Comparable - (r.sort_id - l.sort_id).toInt() - } + loader.comparator = null return loader } @@ -1557,13 +1555,12 @@ class StatusFragment : BaseFragment(), LoaderCallbacks { - if (data == null) return null - return data!![position - getIndexStart(ITEM_IDX_CONVERSATION)] + return data?.get(position - getIndexStart(ITEM_IDX_CONVERSATION)) } ITEM_IDX_REPLY -> { - if (data == null || replyStart < 0) return null - return data!![position - getIndexStart(ITEM_IDX_CONVERSATION) - - getTypeCount(ITEM_IDX_CONVERSATION) - getTypeCount(ITEM_IDX_STATUS) + replyStart] + if (replyStart < 0) return null + return data?.get(position - getIndexStart(ITEM_IDX_CONVERSATION) + - getTypeCount(ITEM_IDX_CONVERSATION) - getTypeCount(ITEM_IDX_STATUS) + replyStart) } ITEM_IDX_STATUS -> { return status @@ -1651,7 +1648,9 @@ class StatusFragment : BaseFragment(), LoaderCallbacks if (item.sort_id < sortId) { conversationCount++ - } else if (item.sort_id > sortId && status.id != item.id) { + } else if (status.id == item.id) { + this.status = item + } else if (item.sort_id > sortId) { if (replyStart < 0) { replyStart = i } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/loader/ConversationLoader.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/loader/ConversationLoader.kt index 28c25753b..cb933713d 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/loader/ConversationLoader.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/loader/ConversationLoader.kt @@ -66,16 +66,14 @@ class ConversationLoader( canLoadAllReplies = isOfficial if (isOfficial) { return microBlog.showConversation(status.id, paging) - } else { - return showConversationCompat(microBlog, details, status, true) } + return showConversationCompat(microBlog, details, status, true) } AccountType.STATUSNET -> { canLoadAllReplies = true if (status.extras != null && status.extras.statusnet_conversation_id != null) { return microBlog.getStatusNetConversation(status.extras.statusnet_conversation_id, paging) } - return microBlog.showConversation(status.id, paging) } AccountType.FANFOU -> { canLoadAllReplies = true @@ -88,10 +86,8 @@ class ConversationLoader( } @Throws(MicroBlogException::class) - private fun showConversationCompat(twitter: MicroBlog, - details: AccountDetails, - status: ParcelableStatus, - loadReplies: Boolean): List { + private fun showConversationCompat(twitter: MicroBlog, details: AccountDetails, + status: ParcelableStatus, loadReplies: Boolean): List { val statuses = ArrayList() val noSinceMaxId = maxId == null && sinceId == null // Load conversations diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableStatusUtils.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableStatusUtils.kt index a8b8a1e7a..ec9099f93 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableStatusUtils.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableStatusUtils.kt @@ -1,10 +1,8 @@ package org.mariotaku.twidere.model.util -import android.text.Spannable import android.text.Spanned import android.text.style.URLSpan import org.mariotaku.microblog.library.twitter.model.Status -import org.mariotaku.twidere.extension.model.applyTo import org.mariotaku.twidere.model.* import org.mariotaku.twidere.model.ParcelableStatus.FilterFlags import org.mariotaku.twidere.util.HtmlSpanBuilder @@ -28,8 +26,7 @@ object ParcelableStatusUtils { status.retweet_id = null } - fun fromStatus(orig: Status, accountKey: UserKey, - isGap: Boolean): ParcelableStatus { + fun fromStatus(orig: Status, accountKey: UserKey, isGap: Boolean): ParcelableStatus { val result = ParcelableStatus() result.is_gap = isGap result.account_key = accountKey @@ -41,6 +38,7 @@ object ParcelableStatusUtils { result.extras.external_url = orig.inferExternalUrl() result.extras.support_entities = orig.entities != null result.extras.statusnet_conversation_id = orig.statusnetConversationId + result.extras.conversation_id = orig.conversationId result.is_pinned_status = orig.user.pinnedTweetIds?.contains(orig.id) ?: false val retweetedStatus = orig.retweetedStatus