1
0
mirror of https://github.com/TwidereProject/Twidere-Android synced 2025-02-02 17:56:56 +01:00
This commit is contained in:
Mariotaku Lee 2016-12-01 11:05:51 +08:00
parent 4f32d67e79
commit 1ef38e61de
2 changed files with 28 additions and 3 deletions

View File

@ -193,6 +193,13 @@ public class Status extends TwitterResponseObject implements Comparable<Status>,
@JsonField(name = "display_text_range")
int[] displayTextRange;
/**
* GNU social value
* Format: {@code "tag:[gnusocial.host],YYYY-MM-DD:noticeId=[noticeId]:objectType=[objectType]"}
*/
@JsonField(name = "uri")
String uri;
@ParcelableNoThanks
private transient long sortId = -1;
@ -447,6 +454,10 @@ public class Status extends TwitterResponseObject implements Comparable<Status>,
return quotedStatusId;
}
public String getUri() {
return uri;
}
@Override
public int compareTo(@NonNull final Status that) {
final long diff = getSortId() - that.getSortId();

View File

@ -39,7 +39,7 @@ object ParcelableStatusUtils {
result.timestamp = getTime(orig.createdAt)
result.extras = ParcelableStatus.Extras()
result.extras.external_url = orig.externalUrl
result.extras.external_url = orig.inferExternalUrl()
result.extras.support_entities = orig.entities != null
result.extras.statusnet_conversation_id = orig.statusnetConversationId
result.is_pinned_status = orig.user.pinnedTweetIds?.contains(orig.id) ?: false
@ -58,7 +58,7 @@ object ParcelableStatusUtils {
result.retweeted_by_user_screen_name = retweetUser.screenName
result.retweeted_by_user_profile_image = TwitterContentUtils.getProfileImageUrl(retweetUser)
result.extras.retweeted_external_url = retweetedStatus.externalUrl
result.extras.retweeted_external_url = retweetedStatus.inferExternalUrl()
} else {
status = orig
}
@ -69,7 +69,7 @@ object ParcelableStatusUtils {
if (quoted != null) {
val quotedUser = quoted.user
result.quoted_id = quoted.id
result.extras.quoted_external_url = quoted.externalUrl
result.extras.quoted_external_url = quoted.inferExternalUrl()
val quotedText = quoted.htmlText
// Twitter will escape <> to &lt;&gt;, so if a status contains those symbols unescaped
@ -272,4 +272,18 @@ object ParcelableStatusUtils {
status.in_reply_to_user_nickname = manager.getUserNickname(status.in_reply_to_user_id!!)
}
}
fun Status.inferExternalUrl(): String? {
if (externalUrl != null) {
return externalUrl
}
if (uri != null) {
val r = Regex("tag:([\\w\\d\\.]+),(\\d{4}\\-\\d{2}\\-\\d{2}):noticeId=(\\d+):objectType=(\\w+)")
r.matchEntire(uri)?.let { result: MatchResult ->
return "https://%s/notice/%s".format(Locale.ROOT, result.groups[1]?.value, result.groups[3]?.value)
}
}
return null
}
}