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(".")); } }