diff options
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderXPostUtils.java')
-rw-r--r-- | WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderXPostUtils.java | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderXPostUtils.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderXPostUtils.java new file mode 100644 index 000000000..75e6908b8 --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderXPostUtils.java @@ -0,0 +1,74 @@ +package org.wordpress.android.ui.reader.utils; + +import android.net.Uri; +import android.support.annotation.NonNull; +import android.text.Html; +import android.text.Spanned; + +import org.wordpress.android.models.ReaderPost; + +/** + * Reader cross-post utility routines + */ + +public class ReaderXPostUtils { + + // note that these strings don't need to be localized due to the intended audience + private static final String UNKNOWN_SITE = "(unknown)"; + private static final String FMT_SITE_XPOST = "%1$s cross-posted from %2$s to %3$s"; + private static final String FMT_COMMENT_XPOST = "%1$s commented on %2$s, cross-posted to %3$s"; + + /* + * returns the title to display for this xpost, which is simply the post's title + * without the "X-post: " prefix + */ + public static String getXPostTitle(@NonNull ReaderPost post) { + if (post.getTitle().startsWith("X-post: ")) { + return post.getTitle().substring(8); + } else { + return post.getTitle(); + } + } + + /* + * returns the html subtitle to display for this xpost + * ex: "Nick cross-posted from +blog1 to +blog2" + * ex: "Nick commented on +blog1, cross-posted to +blog2" + */ + public static Spanned getXPostSubtitleHtml(@NonNull ReaderPost post) { + boolean isCommentXPost = post.getExcerpt().startsWith("X-comment"); + + String name = post.hasAuthorFirstName() ? post.getAuthorFirstName() : post.getAuthorName(); + String subtitle = String.format( + isCommentXPost ? FMT_COMMENT_XPOST : FMT_SITE_XPOST, + "<strong>" + name + "</strong>", + getFromSiteName(post), + getToSiteName(post)); + + return Html.fromHtml(subtitle); + } + + // origin site name can be extracted from the excerpt, + // example excerpt: "<p>X-post from +blog2: I have a request..." + private static String getFromSiteName(@NonNull ReaderPost post) { + String excerpt = post.getExcerpt(); + int plusPos = excerpt.indexOf("+"); + int colonPos = excerpt.indexOf(":", plusPos); + if (plusPos > 0 && colonPos > 0) { + return excerpt.substring(plusPos, colonPos); + } else { + return UNKNOWN_SITE; + } + } + + // destination site name is the subdomain of the blog url + private static String getToSiteName(@NonNull ReaderPost post) { + Uri uri = Uri.parse(post.getBlogUrl()); + String domain = uri.getHost(); + if (domain == null || !domain.contains(".")) { + return "+" + UNKNOWN_SITE; + } + + return "+" + domain.substring(0, domain.indexOf(".")); + } +} |