diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/ParcelableStatusExtensions.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/ParcelableStatusExtensions.kt index 40025db4e..ed9017dba 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/ParcelableStatusExtensions.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/ParcelableStatusExtensions.kt @@ -105,6 +105,46 @@ fun ParcelableStatus.extractFanfouHashtags(): List { }?.map { text_unescaped.substring(it.start, it.end) }.orEmpty() } + +fun ParcelableStatus.makeOriginal() { + if (!is_retweet) return + id = retweet_id + retweeted_by_user_key = null + retweeted_by_user_name = null + retweeted_by_user_screen_name = null + retweeted_by_user_profile_image = null + retweet_timestamp = -1 + retweet_id = null +} + +fun ParcelableStatus.addFilterFlag(@ParcelableStatus.FilterFlags flags: Long) { + filter_flags = filter_flags or flags +} + +fun ParcelableStatus.updateExtraInformation(details: AccountDetails) { + account_color = details.color +} + +val ParcelableStatus.quoted: ParcelableStatus? + get() { + val obj = ParcelableStatus() + obj.account_key = account_key + obj.id = quoted_id ?: return null + obj.timestamp = quoted_timestamp + obj.user_key = quoted_user_key ?: return null + obj.user_name = quoted_user_name ?: return null + obj.user_screen_name = quoted_user_screen_name ?: return null + obj.user_profile_image_url = quoted_user_profile_image ?: return null + obj.user_is_protected = quoted_user_is_protected + obj.user_is_verified = quoted_user_is_verified + obj.text_plain = quoted_text_plain + obj.text_unescaped = quoted_text_unescaped + obj.source = quoted_source + obj.spans = quoted_spans + obj.media = quoted_media + return obj + } + private fun parcelableUserMention(key: UserKey, name: String, screenName: String) = ParcelableUserMention().also { it.key = key it.name = name diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/StatusExtensions.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/StatusExtensions.kt index 4919efcc9..cf82a0017 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/StatusExtensions.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/StatusExtensions.kt @@ -31,12 +31,12 @@ import org.mariotaku.microblog.library.twitter.model.ExtendedEntitySupport import org.mariotaku.microblog.library.twitter.model.MediaEntity import org.mariotaku.microblog.library.twitter.model.Status import org.mariotaku.twidere.exception.MalformedResponseException +import org.mariotaku.twidere.extension.model.addFilterFlag import org.mariotaku.twidere.extension.model.toParcelable import org.mariotaku.twidere.extension.toSpanItem import org.mariotaku.twidere.model.* import org.mariotaku.twidere.model.util.ParcelableLocationUtils import org.mariotaku.twidere.model.util.ParcelableMediaUtils -import org.mariotaku.twidere.model.util.ParcelableStatusUtils.addFilterFlag import org.mariotaku.twidere.text.AcctMentionSpan import org.mariotaku.twidere.text.HashtagSpan import org.mariotaku.twidere.util.HtmlBuilder diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/mastodon/StatusExtensions.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/mastodon/StatusExtensions.kt index f7dbfbb15..40ea77b6d 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/mastodon/StatusExtensions.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/mastodon/StatusExtensions.kt @@ -25,9 +25,9 @@ import android.text.Spanned import org.mariotaku.ktextension.isNotNullOrEmpty import org.mariotaku.ktextension.mapToArray import org.mariotaku.microblog.library.mastodon.model.Status +import org.mariotaku.twidere.extension.model.addFilterFlag import org.mariotaku.twidere.extension.model.api.spanItems import org.mariotaku.twidere.model.* -import org.mariotaku.twidere.model.util.ParcelableStatusUtils.addFilterFlag import org.mariotaku.twidere.text.AcctMentionSpan import org.mariotaku.twidere.text.HashtagSpan import org.mariotaku.twidere.util.HtmlEscapeHelper diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/loader/ParcelableStatusLoader.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/loader/ParcelableStatusLoader.kt index 99831fd8b..2c65cdc4c 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/loader/ParcelableStatusLoader.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/loader/ParcelableStatusLoader.kt @@ -29,11 +29,11 @@ import org.mariotaku.microblog.library.twitter.model.ErrorInfo import org.mariotaku.restfu.http.RestHttpClient import org.mariotaku.twidere.constant.IntentConstants import org.mariotaku.twidere.constant.IntentConstants.EXTRA_ACCOUNT +import org.mariotaku.twidere.extension.model.updateExtraInformation import org.mariotaku.twidere.model.ParcelableStatus import org.mariotaku.twidere.model.SingleResponse import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.model.util.AccountUtils -import org.mariotaku.twidere.model.util.ParcelableStatusUtils import org.mariotaku.twidere.util.DataStoreUtils import org.mariotaku.twidere.util.UserColorNameManager import org.mariotaku.twidere.util.dagger.GeneralComponent @@ -76,7 +76,7 @@ class ParcelableStatusLoader( if (details == null) return SingleResponse(MicroBlogException("No account")) try { val status = DataStoreUtils.findStatus(context, accountKey, statusId) - ParcelableStatusUtils.updateExtraInformation(status, details) + status.updateExtraInformation(details) val response = SingleResponse(status) response.extras[EXTRA_ACCOUNT] = details return response diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/loader/statuses/ConversationLoader.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/loader/statuses/ConversationLoader.kt index daed09dfe..74e33d11c 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/loader/statuses/ConversationLoader.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/loader/statuses/ConversationLoader.kt @@ -40,6 +40,7 @@ import org.mariotaku.twidere.extension.atto.firstElementOrNull import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable import org.mariotaku.twidere.extension.model.api.toParcelable import org.mariotaku.twidere.extension.model.isOfficial +import org.mariotaku.twidere.extension.model.makeOriginal import org.mariotaku.twidere.extension.model.newMicroBlogInstance import org.mariotaku.twidere.model.AccountDetails import org.mariotaku.twidere.model.ParcelableStatus @@ -47,7 +48,6 @@ import org.mariotaku.twidere.model.pagination.PaginatedArrayList import org.mariotaku.twidere.model.pagination.PaginatedList import org.mariotaku.twidere.model.pagination.Pagination import org.mariotaku.twidere.model.pagination.SinceMaxPagination -import org.mariotaku.twidere.model.util.ParcelableStatusUtils import org.mariotaku.twidere.util.InternalTwitterContentUtils import java.text.ParseException import java.util.* @@ -65,7 +65,7 @@ class ConversationLoader( private set init { - ParcelableStatusUtils.makeOriginalStatus(this.status) + status.makeOriginal() } @Throws(MicroBlogException::class) 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 deleted file mode 100644 index 852ab8900..000000000 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableStatusUtils.kt +++ /dev/null @@ -1,32 +0,0 @@ -package org.mariotaku.twidere.model.util - -import org.mariotaku.twidere.model.AccountDetails -import org.mariotaku.twidere.model.ParcelableStatus -import org.mariotaku.twidere.model.ParcelableStatus.FilterFlags - -/** - * Created by mariotaku on 16/1/3. - */ -object ParcelableStatusUtils { - - fun makeOriginalStatus(status: ParcelableStatus) { - if (!status.is_retweet) return - status.id = status.retweet_id - status.retweeted_by_user_key = null - status.retweeted_by_user_name = null - status.retweeted_by_user_screen_name = null - status.retweeted_by_user_profile_image = null - status.retweet_timestamp = -1 - status.retweet_id = null - } - - fun ParcelableStatus.addFilterFlag(@FilterFlags flags: Long) { - filter_flags = filter_flags or flags - } - - fun updateExtraInformation(status: ParcelableStatus, details: AccountDetails) { - status.account_color = details.color - } - -} - diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/task/RetweetStatusTask.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/task/RetweetStatusTask.kt index b10106359..44f247ff7 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/task/RetweetStatusTask.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/task/RetweetStatusTask.kt @@ -14,6 +14,7 @@ import org.mariotaku.twidere.extension.getErrorMessage import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable import org.mariotaku.twidere.extension.model.api.toParcelable import org.mariotaku.twidere.extension.model.newMicroBlogInstance +import org.mariotaku.twidere.extension.model.updateExtraInformation import org.mariotaku.twidere.model.AccountDetails import org.mariotaku.twidere.model.Draft import org.mariotaku.twidere.model.ParcelableStatus @@ -21,7 +22,6 @@ import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.model.draft.StatusObjectActionExtras import org.mariotaku.twidere.model.event.StatusListChangedEvent import org.mariotaku.twidere.model.event.StatusRetweetedEvent -import org.mariotaku.twidere.model.util.ParcelableStatusUtils import org.mariotaku.twidere.provider.TwidereDataStore.Statuses import org.mariotaku.twidere.task.twitter.UpdateStatusTask import org.mariotaku.twidere.util.AsyncTwitterWrapper @@ -54,7 +54,7 @@ class RetweetStatusTask( microBlog.retweetStatus(statusId).toParcelable(account) } } - ParcelableStatusUtils.updateExtraInformation(result, account) + result.updateExtraInformation(account) Utils.setLastSeen(context, result.mentions, System.currentTimeMillis()) resolver.updateStatusInfo(DataStoreUtils.STATUSES_ACTIVITIES_URIS, Statuses.COLUMNS,