diff --git a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderDatabase.java b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderDatabase.java index ea0a953b3448..315d36a2b944 100644 --- a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderDatabase.java +++ b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderDatabase.java @@ -19,7 +19,7 @@ */ public class ReaderDatabase extends SQLiteOpenHelper { protected static final String DB_NAME = "wpreader.db"; - private static final int DB_VERSION = 112; + private static final int DB_VERSION = 114; /* * version history @@ -64,6 +64,8 @@ public class ReaderDatabase extends SQLiteOpenHelper { * 110 - added xpost_post_id and xpost_blog_id to tbl_posts * 111 - added author_first_name to tbl_posts * 112 - no structural change, just reset db + * 113 - added tag_title to tag tables + * 114 - renamed tag_name to tag_slug in tag tables */ /* diff --git a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderPostTable.java b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderPostTable.java index 710e3f2b7bda..60732bfd845e 100644 --- a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderPostTable.java +++ b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderPostTable.java @@ -197,7 +197,7 @@ private static int purgePostsForTag(SQLiteDatabase db, ReaderTag tag) { } int numToPurge = numPosts - MAX_POSTS_PER_TAG; - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt()), Integer.toString(numToPurge)}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt()), Integer.toString(numToPurge)}; String where = "pseudo_id IN (" + " SELECT tbl_posts.pseudo_id FROM tbl_posts, tbl_post_tags" + " WHERE tbl_posts.pseudo_id = tbl_post_tags.pseudo_id" @@ -233,7 +233,7 @@ public static int getNumPostsWithTag(ReaderTag tag) { if (tag == null) { return 0; } - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; return SqlUtils.intForQuery(ReaderDatabase.getReadableDb(), "SELECT count(*) FROM tbl_post_tags WHERE tag_name=? AND tag_type=?", args); @@ -385,7 +385,7 @@ public static int deletePostsWithTag(final ReaderTag tag) { } // first delete posts from tbl_post_tags, and if any were deleted next delete posts in tbl_posts that no longer exist in tbl_post_tags - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; int numDeleted = ReaderDatabase.getWritableDb().delete("tbl_post_tags", "tag_name=? AND tag_type=?", args); @@ -415,7 +415,7 @@ public static String getOldestPubDateWithTag(final ReaderTag tag) { + " WHERE tbl_posts.post_id = tbl_post_tags.post_id AND tbl_posts.blog_id = tbl_post_tags.blog_id" + " AND tbl_post_tags.tag_name=? AND tbl_post_tags.tag_type=?" + " ORDER BY published LIMIT 1"; - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(), sql, args); } @@ -439,7 +439,7 @@ public static String getOldestPubDateInFeed(long feedId) { public static void removeGapMarkerForTag(final ReaderTag tag) { if (tag == null) return; - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; String sql = "UPDATE tbl_post_tags SET has_gap_marker=0 WHERE has_gap_marker!=0 AND tag_name=? AND tag_type=?"; ReaderDatabase.getWritableDb().execSQL(sql, args); } @@ -452,7 +452,7 @@ public static ReaderBlogIdPostId getGapMarkerForTag(final ReaderTag tag) { return null; } - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; String sql = "SELECT blog_id, post_id FROM tbl_post_tags WHERE has_gap_marker!=0 AND tag_name=? AND tag_type=?"; Cursor cursor = ReaderDatabase.getReadableDb().rawQuery(sql, args); try { @@ -474,7 +474,7 @@ public static void setGapMarkerForTag(long blogId, long postId, ReaderTag tag) { String[] args = { Long.toString(blogId), Long.toString(postId), - tag.getTagName(), + tag.getTagSlug(), Integer.toString(tag.tagType.toInt()) }; String sql = "UPDATE tbl_post_tags SET has_gap_marker=1 WHERE blog_id=? AND post_id=? AND tag_name=? AND tag_type=?"; @@ -511,7 +511,7 @@ public static void deletePostsOlderThanGapMarkerForTag(ReaderTag tag) { long timestamp = getGapMarkerTimestampForTag(tag); if (timestamp == 0) return; - String[] args = {Long.toString(timestamp), tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {Long.toString(timestamp), tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; String where = "pseudo_id IN (SELECT tbl_posts.pseudo_id FROM tbl_posts, tbl_post_tags" + " WHERE tbl_posts.timestamp < ?" + " AND tbl_posts.pseudo_id = tbl_post_tags.pseudo_id" @@ -550,10 +550,10 @@ private static void setFollowStatusForPosts(long blogId, long feedId, boolean is if (!isFollowed) { if (blogId != 0) { db.delete("tbl_post_tags", "blog_id=? AND tag_name=?", - new String[]{Long.toString(blogId), ReaderTag.TAG_NAME_FOLLOWED_SITES}); + new String[]{Long.toString(blogId), ReaderTag.TAG_TITLE_FOLLOWED_SITES}); } else { db.delete("tbl_post_tags", "feed_id=? AND tag_name=?", - new String[]{Long.toString(feedId), ReaderTag.TAG_NAME_FOLLOWED_SITES}); + new String[]{Long.toString(feedId), ReaderTag.TAG_TITLE_FOLLOWED_SITES}); } } @@ -647,7 +647,7 @@ public static void addOrUpdatePosts(final ReaderTag tag, ReaderPostList posts) { // now add to tbl_post_tags if a tag was passed if (tag != null) { - String tagName = tag.getTagName(); + String tagName = tag.getTagSlug(); int tagType = tag.tagType.toInt(); for (ReaderPost post: posts) { stmtTags.bindLong (1, post.postId); @@ -697,7 +697,7 @@ public static ReaderPostList getPostsWithTag(ReaderTag tag, int maxPosts, boolea sql += " LIMIT " + Integer.toString(maxPosts); } - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; Cursor cursor = ReaderDatabase.getReadableDb().rawQuery(sql, args); try { return getPostListFromCursor(cursor); @@ -767,7 +767,7 @@ public static ReaderBlogIdPostIdList getBlogIdPostIdsWithTag(ReaderTag tag, int sql += " LIMIT " + Integer.toString(maxPosts); } - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; Cursor cursor = ReaderDatabase.getReadableDb().rawQuery(sql, args); try { if (cursor != null && cursor.moveToFirst()) { diff --git a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderTagTable.java b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderTagTable.java index 6ceab7d26403..5bfcfe7fc049 100644 --- a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderTagTable.java +++ b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderTagTable.java @@ -25,18 +25,20 @@ public class ReaderTagTable { protected static void createTables(SQLiteDatabase db) { db.execSQL("CREATE TABLE tbl_tags (" - + " tag_name TEXT COLLATE NOCASE," + + " tag_slug TEXT COLLATE NOCASE," + + " tag_title TEXT COLLATE NOCASE," + " tag_type INTEGER DEFAULT 0," + " endpoint TEXT," + " date_updated TEXT," - + " PRIMARY KEY (tag_name, tag_type)" + + " PRIMARY KEY (tag_slug, tag_type)" + ")"); db.execSQL("CREATE TABLE tbl_tags_recommended (" - + " tag_name TEXT COLLATE NOCASE," + + " tag_slug TEXT COLLATE NOCASE," + + " tag_title TEXT COLLATE NOCASE," + " tag_type INTEGER DEFAULT 0," + " endpoint TEXT," - + " PRIMARY KEY (tag_name, tag_type)" + + " PRIMARY KEY (tag_slug, tag_type)" + ")"); } @@ -92,13 +94,14 @@ private static void addOrUpdateTags(ReaderTagList tagList) { SQLiteStatement stmt = null; try { stmt = ReaderDatabase.getWritableDb().compileStatement( - "INSERT OR REPLACE INTO tbl_tags (tag_name, tag_type, endpoint) VALUES (?1,?2,?3)" + "INSERT OR REPLACE INTO tbl_tags (tag_slug, tag_title, tag_type, endpoint) VALUES (?1,?2,?3,?4)" ); for (ReaderTag tag: tagList) { - stmt.bindString(1, tag.getTagName()); - stmt.bindLong (2, tag.tagType.toInt()); - stmt.bindString(3, tag.getEndpoint()); + stmt.bindString(1, tag.getTagSlug()); + stmt.bindString(2, tag.getTagTitle()); + stmt.bindLong (3, tag.tagType.toInt()); + stmt.bindString(4, tag.getEndpoint()); stmt.execute(); } @@ -114,32 +117,28 @@ public static boolean tagExists(ReaderTag tag) { if (tag == null) { return false; } - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; return SqlUtils.boolForQuery(ReaderDatabase.getReadableDb(), - "SELECT 1 FROM tbl_tags WHERE tag_name=?1 AND tag_type=?2", + "SELECT 1 FROM tbl_tags WHERE tag_slug=?1 AND tag_type=?2", args); } /* * returns true if the passed tag exists and it has the passed type */ - private static boolean tagExistsOfType(String tagName, ReaderTagType tagType) { - if (TextUtils.isEmpty(tagName) || tagType == null) { + private static boolean tagExistsOfType(String tagSlug, ReaderTagType tagType) { + if (TextUtils.isEmpty(tagSlug) || tagType == null) { return false; } - String[] args = {tagName, Integer.toString(tagType.toInt())}; + String[] args = {tagSlug, Integer.toString(tagType.toInt())}; return SqlUtils.boolForQuery(ReaderDatabase.getReadableDb(), - "SELECT 1 FROM tbl_tags WHERE tag_name=?1 AND tag_type=?2", + "SELECT 1 FROM tbl_tags WHERE tag_slug=?1 AND tag_type=?2", args); } - public static boolean isFollowedTagName(String tagName) { - return tagExistsOfType(tagName, ReaderTagType.FOLLOWED); - } - - public static boolean isDefaultTagName(String tagName) { - return tagExistsOfType(tagName, ReaderTagType.DEFAULT); + public static boolean isFollowedTagName(String tagSlug) { + return tagExistsOfType(tagSlug, ReaderTagType.FOLLOWED); } private static ReaderTag getTagFromCursor(Cursor c) { @@ -147,20 +146,21 @@ private static ReaderTag getTagFromCursor(Cursor c) { throw new IllegalArgumentException("null tag cursor"); } - String tagName = c.getString(c.getColumnIndex("tag_name")); + String tagSlug = c.getString(c.getColumnIndex("tag_slug")); + String tagTitle = c.getString(c.getColumnIndex("tag_title")); String endpoint = c.getString(c.getColumnIndex("endpoint")); ReaderTagType tagType = ReaderTagType.fromInt(c.getInt(c.getColumnIndex("tag_type"))); - return new ReaderTag(tagName, endpoint, tagType); + return new ReaderTag(tagSlug, tagTitle, endpoint, tagType); } - public static ReaderTag getTag(String tagName, ReaderTagType tagType) { - if (TextUtils.isEmpty(tagName)) { + public static ReaderTag getTag(String tagSlug, ReaderTagType tagType) { + if (TextUtils.isEmpty(tagSlug)) { return null; } - String[] args = {tagName, Integer.toString(tagType.toInt())}; - Cursor c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags WHERE tag_name=? AND tag_type=? LIMIT 1", args); + String[] args = {tagSlug, Integer.toString(tagType.toInt())}; + Cursor c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags WHERE tag_slug=? AND tag_type=? LIMIT 1", args); try { if (!c.moveToFirst()) { return null; @@ -175,9 +175,9 @@ public static String getEndpointForTag(ReaderTag tag) { if (tag == null) { return null; } - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(), - "SELECT endpoint FROM tbl_tags WHERE tag_name=? AND tag_type=?", + "SELECT endpoint FROM tbl_tags WHERE tag_slug=? AND tag_type=?", args); } @@ -191,7 +191,7 @@ public static ReaderTagList getFollowedTags() { private static ReaderTagList getTagsOfType(ReaderTagType tagType) { String[] args = {Integer.toString(tagType.toInt())}; - Cursor c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags WHERE tag_type=? ORDER BY tag_name", args); + Cursor c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags WHERE tag_type=? ORDER BY tag_slug", args); try { ReaderTagList tagList = new ReaderTagList(); if (c.moveToFirst()) { @@ -206,7 +206,7 @@ private static ReaderTagList getTagsOfType(ReaderTagType tagType) { } static ReaderTagList getAllTags() { - Cursor c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags ORDER BY tag_name", null); + Cursor c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags ORDER BY tag_slug", null); try { ReaderTagList tagList = new ReaderTagList(); if (c.moveToFirst()) { @@ -224,8 +224,8 @@ public static void deleteTag(ReaderTag tag) { if (tag == null) { return; } - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; - ReaderDatabase.getWritableDb().delete("tbl_tags", "tag_name=? AND tag_type=?", args); + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; + ReaderDatabase.getWritableDb().delete("tbl_tags", "tag_slug=? AND tag_type=?", args); } @@ -233,9 +233,9 @@ public static String getTagLastUpdated(ReaderTag tag) { if (tag == null) { return ""; } - String[] args = {tag.getTagName(), Integer.toString(tag.tagType.toInt())}; + String[] args = {tag.getTagSlug(), Integer.toString(tag.tagType.toInt())}; return SqlUtils.stringForQuery(ReaderDatabase.getReadableDb(), - "SELECT date_updated FROM tbl_tags WHERE tag_name=? AND tag_type=?", + "SELECT date_updated FROM tbl_tags WHERE tag_slug=? AND tag_type=?", args); } @@ -245,11 +245,11 @@ public static void setTagLastUpdated(ReaderTag tag) { } String date = DateTimeUtils.javaDateToIso8601(new Date()); - String sql = "UPDATE tbl_tags SET date_updated=?1 WHERE tag_name=?2 AND tag_type=?3"; + String sql = "UPDATE tbl_tags SET date_updated=?1 WHERE tag_slug=?2 AND tag_type=?3"; SQLiteStatement stmt = ReaderDatabase.getWritableDb().compileStatement(sql); try { stmt.bindString(1, date); - stmt.bindString(2, tag.getTagName()); + stmt.bindString(2, tag.getTagSlug()); stmt.bindLong (3, tag.tagType.toInt()); stmt.execute(); } finally { @@ -294,9 +294,9 @@ private static int minutesSinceLastUpdate(ReaderTag tag) { public static ReaderTagList getRecommendedTags(boolean excludeSubscribed) { Cursor c; if (excludeSubscribed) { - c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags_recommended WHERE tag_name NOT IN (SELECT tag_name FROM tbl_tags) ORDER BY tag_name", null); + c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags_recommended WHERE tag_slug NOT IN (SELECT tag_slug FROM tbl_tags) ORDER BY tag_slug", null); } else { - c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags_recommended ORDER BY tag_name", null); + c = ReaderDatabase.getReadableDb().rawQuery("SELECT * FROM tbl_tags_recommended ORDER BY tag_slug", null); } try { ReaderTagList tagList = new ReaderTagList(); @@ -318,7 +318,7 @@ public static void setRecommendedTags(ReaderTagList tagList) { SQLiteDatabase db = ReaderDatabase.getWritableDb(); SQLiteStatement stmt = db.compileStatement - ("INSERT INTO tbl_tags_recommended (tag_name, tag_type, endpoint) VALUES (?1,?2,?3)"); + ("INSERT INTO tbl_tags_recommended (tag_slug, tag_title, tag_type, endpoint) VALUES (?1,?2,?3,?4)"); db.beginTransaction(); try { try { @@ -327,9 +327,10 @@ public static void setRecommendedTags(ReaderTagList tagList) { // then insert the passed ones for (ReaderTag tag: tagList) { - stmt.bindString(1, tag.getTagName()); - stmt.bindLong (2, tag.tagType.toInt()); - stmt.bindString(3, tag.getEndpoint()); + stmt.bindString(1, tag.getTagSlug()); + stmt.bindString(2, tag.getTagTitle()); + stmt.bindLong (3, tag.tagType.toInt()); + stmt.bindString(4, tag.getEndpoint()); stmt.execute(); } diff --git a/WordPress/src/main/java/org/wordpress/android/models/ReaderPost.java b/WordPress/src/main/java/org/wordpress/android/models/ReaderPost.java index f09efc8c1fb6..550aba98ea8c 100644 --- a/WordPress/src/main/java/org/wordpress/android/models/ReaderPost.java +++ b/WordPress/src/main/java/org/wordpress/android/models/ReaderPost.java @@ -273,7 +273,7 @@ private static void assignTagsFromJson(ReaderPost post, JSONObject jsonTags) { int postCount = jsonThisTag.optInt("post_count"); if (postCount > popularCount) { nextMostPopularTag = mostPopularTag; - mostPopularTag = JSONUtils.getStringDecoded(jsonThisTag, "name"); + mostPopularTag = JSONUtils.getStringDecoded(jsonThisTag, "slug"); popularCount = postCount; } } @@ -424,7 +424,7 @@ public String getPrimaryTag() { } public void setPrimaryTag(String tagName) { // this is a bit of a hack to avoid setting the primary tag to one of the defaults - if (!ReaderTag.isDefaultTagName(tagName)) { + if (!ReaderTag.isDefaultTagTitle(tagName)) { this.primaryTag = StringUtils.notNullStr(tagName); } } @@ -436,7 +436,7 @@ public String getSecondaryTag() { return StringUtils.notNullStr(secondaryTag); } public void setSecondaryTag(String tagName) { - if (!ReaderTag.isDefaultTagName(tagName)) { + if (!ReaderTag.isDefaultTagTitle(tagName)) { this.secondaryTag = StringUtils.notNullStr(tagName); } } diff --git a/WordPress/src/main/java/org/wordpress/android/models/ReaderTag.java b/WordPress/src/main/java/org/wordpress/android/models/ReaderTag.java index 0d210672442f..36e95dc238f1 100644 --- a/WordPress/src/main/java/org/wordpress/android/models/ReaderTag.java +++ b/WordPress/src/main/java/org/wordpress/android/models/ReaderTag.java @@ -2,42 +2,37 @@ import android.text.TextUtils; -import org.wordpress.android.ui.reader.utils.ReaderUtils; import org.wordpress.android.util.StringUtils; import java.io.Serializable; import java.util.regex.Pattern; public class ReaderTag implements Serializable, FilterCriteria { - private String tagName; - private String endpoint; + private String tagSlug; // tag for API calls, ex: "news-current-events" + private String tagTitle; // tag for display, ex: "News & Current Events" + private String endpoint; // endpoint for updating posts with this tag public final ReaderTagType tagType; - // these are the default tag names, which aren't localized in the /read/menu/ response - private static final String TAG_NAME_LIKED = "Posts I Like"; - private static final String TAG_NAME_DISCOVER = "Discover"; - private static final String TAG_NAME_DEFAULT = TAG_NAME_DISCOVER; - public static final String TAG_NAME_FOLLOWED_SITES = "Followed Sites"; - - public ReaderTag(String tagName, String endpoint, ReaderTagType tagType) { - if (TextUtils.isEmpty(tagName)) { - this.setTagName(getTagNameFromEndpoint(endpoint)); + // these are the default tags, which aren't localized in the /read/menu/ response + private static final String TAG_TITLE_LIKED = "Posts I Like"; + private static final String TAG_TITLE_DISCOVER = "Discover"; + public static final String TAG_TITLE_DEFAULT = TAG_TITLE_DISCOVER; + public static final String TAG_TITLE_FOLLOWED_SITES = "Followed Sites"; + + public ReaderTag(String tagSlug, + String tagTitle, + String endpoint, + ReaderTagType tagType) { + if (TextUtils.isEmpty(tagSlug)) { + this.setTagSlug(getTagSlugFromEndpoint(endpoint)); } else { - this.setTagName(tagName); + this.setTagSlug(tagSlug); } + this.setTagTitle(tagTitle); this.setEndpoint(endpoint); this.tagType = tagType; } - public ReaderTag(String tagName, ReaderTagType tagType) { - this.setTagName(tagName); - this.tagType = tagType; - } - - public static ReaderTag getDefaultTag() { - return new ReaderTag(TAG_NAME_DEFAULT, ReaderTagType.DEFAULT); - } - public String getEndpoint() { return StringUtils.notNullStr(endpoint); } @@ -45,28 +40,43 @@ void setEndpoint(String endpoint) { this.endpoint = StringUtils.notNullStr(endpoint); } - public String getTagName() { - return StringUtils.notNullStr(tagName); + public String getTagTitle() { + return StringUtils.notNullStr(tagTitle); + } + void setTagTitle(String title) { + this.tagTitle = StringUtils.notNullStr(title); + } + + public String getTagSlug() { + return StringUtils.notNullStr(tagSlug); } - void setTagName(String name) { - this.tagName = StringUtils.notNullStr(name); + void setTagSlug(String slug) { + this.tagSlug = StringUtils.notNullStr(slug); } - public String getCapitalizedTagName() { - if (tagName == null || tagName.length() == 0) { + + /* + * when displaying a tag name, we want to use the title when available since it's often + * more user-friendly + */ + public String getTagDisplayName() { + if (!TextUtils.isEmpty(tagTitle)) { + return tagTitle; + } + if (TextUtils.isEmpty(tagSlug)) { return ""; } // If already uppercase, assume correctly formatted - if (Character.isUpperCase(tagName.charAt(0))) { - return tagName; + if (Character.isUpperCase(tagSlug.charAt(0))) { + return tagSlug; } // Accounts for iPhone, ePaper, etc. - if (tagName.length() > 1 && - Character.isLowerCase(tagName.charAt(0)) && - Character.isUpperCase(tagName.charAt(1))) { - return tagName; + if (tagSlug.length() > 1 && + Character.isLowerCase(tagSlug.charAt(0)) && + Character.isUpperCase(tagSlug.charAt(1))) { + return tagSlug; } // Capitalize anything else. - return StringUtils.capitalize(tagName); + return StringUtils.capitalize(tagSlug); } /* @@ -75,15 +85,15 @@ public String getCapitalizedTagName() { * in the log could be considered a privacy issue */ public String getTagNameForLog() { - String tagName = getTagName(); + String tagSlug = getTagSlug(); if (tagType == ReaderTagType.DEFAULT) { - return tagName; - } else if (tagName.length() >= 6) { - return tagName.substring(0, 3) + "..."; - } else if (tagName.length() >= 4) { - return tagName.substring(0, 2) + "..."; - } else if (tagName.length() >= 2) { - return tagName.substring(0, 1) + "..."; + return tagSlug; + } else if (tagSlug.length() >= 6) { + return tagSlug.substring(0, 3) + "..."; + } else if (tagSlug.length() >= 4) { + return tagSlug.substring(0, 2) + "..."; + } else if (tagSlug.length() >= 2) { + return tagSlug.substring(0, 1) + "..."; } else { return "..."; } @@ -99,9 +109,9 @@ public static boolean isValidTagName(String tagName) { } /* - * extracts the tag name from a valid read/tags/[tagName]/posts endpoint + * extracts the tag slug from a valid read/tags/[tagSlug]/posts endpoint */ - private static String getTagNameFromEndpoint(final String endpoint) { + private static String getTagSlugFromEndpoint(final String endpoint) { if (TextUtils.isEmpty(endpoint)) return ""; @@ -122,19 +132,15 @@ private static String getTagNameFromEndpoint(final String endpoint) { } /* - * is the passed tag name one of the default tags? + * is the passed string one of the default tags? */ - public static boolean isDefaultTagName(String tagName) { - if (TextUtils.isEmpty(tagName)) { + public static boolean isDefaultTagTitle(String title) { + if (TextUtils.isEmpty(title)) { return false; } - return (tagName.equalsIgnoreCase(TAG_NAME_FOLLOWED_SITES) - || tagName.equalsIgnoreCase(TAG_NAME_DISCOVER) - || tagName.equalsIgnoreCase(TAG_NAME_LIKED)); - } - - private String getSanitizedTagName() { - return ReaderUtils.sanitizeWithDashes(this.tagName); + return (title.equalsIgnoreCase(TAG_TITLE_FOLLOWED_SITES) + || title.equalsIgnoreCase(TAG_TITLE_DISCOVER) + || title.equalsIgnoreCase(TAG_TITLE_LIKED)); } public static boolean isSameTag(ReaderTag tag1, ReaderTag tag2) { @@ -142,7 +148,7 @@ public static boolean isSameTag(ReaderTag tag1, ReaderTag tag2) { return false; } return tag1.tagType == tag2.tagType - && tag1.getSanitizedTagName().equalsIgnoreCase(tag2.getSanitizedTagName()); + && tag1.getTagSlug().equalsIgnoreCase(tag2.getTagSlug()); } public boolean isPostsILike() { @@ -153,7 +159,7 @@ public boolean isFollowedSites() { } public boolean isDiscover() { - return tagType == ReaderTagType.DEFAULT && getTagName().equals(TAG_NAME_DISCOVER); + return tagType == ReaderTagType.DEFAULT && getTagSlug().equals(TAG_TITLE_DISCOVER); } public boolean isTagTopic() { @@ -165,9 +171,12 @@ public boolean isListTopic() { return endpoint.toLowerCase().contains("/read/list/"); } + /* + * the label is the text displayed in the dropdown filter + */ @Override public String getLabel() { - return getCapitalizedTagName(); + return getTagDisplayName(); } @Override diff --git a/WordPress/src/main/java/org/wordpress/android/models/ReaderTagList.java b/WordPress/src/main/java/org/wordpress/android/models/ReaderTagList.java index 191fe929e503..87464b722d12 100644 --- a/WordPress/src/main/java/org/wordpress/android/models/ReaderTagList.java +++ b/WordPress/src/main/java/org/wordpress/android/models/ReaderTagList.java @@ -10,7 +10,7 @@ public int indexOfTagName(String tagName) { } for (int i = 0; i < size(); i++) { - if (tagName.equals(this.get(i).getTagName())) { + if (tagName.equals(this.get(i).getTagSlug())) { return i; } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java b/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java index 2b96550dd5c2..70ce63b3ea57 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/prefs/AppPrefs.java @@ -12,6 +12,7 @@ import org.wordpress.android.models.ReaderTag; import org.wordpress.android.models.ReaderTagType; import org.wordpress.android.ui.ActivityId; +import org.wordpress.android.ui.reader.utils.ReaderUtils; import org.wordpress.android.ui.stats.StatsTimeframe; public class AppPrefs { @@ -163,12 +164,12 @@ public static ReaderTag getReaderTag() { return null; } int tagType = getInt(DeletablePrefKey.READER_TAG_TYPE); - return new ReaderTag(tagName, ReaderTagType.fromInt(tagType)); + return ReaderUtils.getTagFromTagName(tagName, ReaderTagType.fromInt(tagType)); } public static void setReaderTag(ReaderTag tag) { - if (tag != null && !TextUtils.isEmpty(tag.getTagName())) { - setString(DeletablePrefKey.READER_TAG_NAME, tag.getTagName()); + if (tag != null && !TextUtils.isEmpty(tag.getTagSlug())) { + setString(DeletablePrefKey.READER_TAG_NAME, tag.getTagSlug()); setInt(DeletablePrefKey.READER_TAG_TYPE, tag.tagType.toInt()); } else { prefs().edit() diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderActivityLauncher.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderActivityLauncher.java index e1fee2f7e85a..a3a1c9eedc3b 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderActivityLauncher.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderActivityLauncher.java @@ -123,7 +123,7 @@ public static void showReaderTagPreview(Context context, ReaderTag tag) { return; } Map properties = new HashMap<>(); - properties.put("tag", tag.getTagName()); + properties.put("tag", tag.getTagSlug()); AnalyticsTracker.track(AnalyticsTracker.Stat.READER_TAG_PREVIEWED, properties); Intent intent = new Intent(context, ReaderPostListActivity.class); intent.putExtra(ReaderConstants.ARG_TAG, tag); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostDetailFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostDetailFragment.java index e8880a4b77f0..c157d3c44a2e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostDetailFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostDetailFragment.java @@ -732,7 +732,7 @@ public void onClick(View v) { txtTag.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - ReaderTag tag = new ReaderTag(tagToDisplay, ReaderTagType.FOLLOWED); + ReaderTag tag = ReaderUtils.getTagFromTagName(tagToDisplay, ReaderTagType.FOLLOWED); ReaderActivityLauncher.showReaderTagPreview(v.getContext(), tag); } }); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java index 385420cc1c0f..368295d6181d 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java @@ -123,7 +123,7 @@ void saveInstance(Bundle bundle) { public static ReaderPostListFragment newInstance() { ReaderTag tag = AppPrefs.getReaderTag(); if (tag == null) { - tag = ReaderTag.getDefaultTag(); + tag = ReaderUtils.getDefaultTag(); } return newInstanceForTag(tag, ReaderPostListType.TAG_FOLLOWED); } @@ -254,12 +254,12 @@ private void resumeFollowedTag() { // user just added a tag so switch to it. String tagName = ((ReaderEvents.TagAdded) event).getTagName(); EventBus.getDefault().removeStickyEvent(event); - ReaderTag newTag = new ReaderTag(tagName, ReaderTagType.FOLLOWED); + ReaderTag newTag = ReaderUtils.getTagFromTagName(tagName, ReaderTagType.FOLLOWED); setCurrentTag(newTag); } else if (!ReaderTagTable.tagExists(getCurrentTag())) { // current tag no longer exists, revert to default AppLog.d(T.READER, "reader post list > current tag no longer valid"); - setCurrentTag(ReaderTag.getDefaultTag()); + setCurrentTag(ReaderUtils.getDefaultTag()); } else { // otherwise, refresh posts to make sure any changes are reflected and auto-update // posts in the current tag if it's time @@ -432,7 +432,7 @@ public FilterCriteria onRecallSelection() { return getCurrentTag(); } else { AppLog.w(T.READER, "reader post list > no current tag in onRecallSelection"); - return ReaderTag.getDefaultTag(); + return ReaderUtils.getDefaultTag(); } } @@ -742,7 +742,7 @@ private ReaderTag getCurrentTag() { } private String getCurrentTagName() { - return (mCurrentTag != null ? mCurrentTag.getTagName() : ""); + return (mCurrentTag != null ? mCurrentTag.getTagSlug() : ""); } private boolean hasCurrentTag() { @@ -769,7 +769,7 @@ && getPostAdapter().isCurrentTag(tag)) { AppPrefs.setReaderTag(tag); break; case TAG_PREVIEW: - mTagPreviewHistory.push(tag.getTagName()); + mTagPreviewHistory.push(tag.getTagSlug()); break; } @@ -798,7 +798,7 @@ boolean goBackInTagHistory() { tagName = mTagPreviewHistory.pop(); } - ReaderTag newTag = new ReaderTag(tagName, ReaderTagType.FOLLOWED); + ReaderTag newTag = ReaderUtils.getTagFromTagName(tagName, ReaderTagType.FOLLOWED); setCurrentTag(newTag); return true; @@ -1119,7 +1119,7 @@ public void onPostSelected(ReaderPost post) { public void onTagSelected(String tagName) { if (!isAdded()) return; - ReaderTag tag = new ReaderTag(tagName, ReaderTagType.FOLLOWED); + ReaderTag tag = ReaderUtils.getTagFromTagName(tagName, ReaderTagType.FOLLOWED); if (getPostListType().equals(ReaderPostListType.TAG_PREVIEW)) { // user is already previewing a tag, so change current tag in existing preview setCurrentTag(tag); @@ -1154,7 +1154,7 @@ private void trackTagLoaded(ReaderTag tag) { if (stat == null) return; Map properties = new HashMap<>(); - properties.put("tag", tag.getTagName()); + properties.put("tag", tag.getTagSlug()); AnalyticsTracker.track(stat, properties); } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderSubsActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderSubsActivity.java index 7f372c0e47ef..24c0b8366cff 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderSubsActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderSubsActivity.java @@ -39,6 +39,7 @@ import org.wordpress.android.ui.reader.adapters.ReaderTagAdapter; import org.wordpress.android.ui.reader.services.ReaderUpdateService; import org.wordpress.android.ui.reader.services.ReaderUpdateService.UpdateTask; +import org.wordpress.android.ui.reader.utils.ReaderUtils; import org.wordpress.android.util.AppLog; import org.wordpress.android.util.DisplayUtils; import org.wordpress.android.util.EditTextUtils; @@ -188,15 +189,18 @@ public void onEventMainThread(ReaderEvents.RecommendedBlogsChanged event) { } private void performUpdate() { + performUpdate(EnumSet.of( + UpdateTask.TAGS, + UpdateTask.FOLLOWED_BLOGS, + UpdateTask.RECOMMENDED_BLOGS)); + } + + private void performUpdate(EnumSet tasks) { if (!NetworkUtils.isNetworkAvailable(this)) { return; } - ReaderUpdateService.startService(this, - EnumSet.of(UpdateTask.TAGS, - UpdateTask.FOLLOWED_BLOGS, - UpdateTask.RECOMMENDED_BLOGS)); - + ReaderUpdateService.startService(this, tasks); mHasPerformedUpdate = true; } @@ -328,7 +332,10 @@ private void performAddTag(final String tagName) { ReaderActions.ActionListener actionListener = new ReaderActions.ActionListener() { @Override public void onActionResult(boolean succeeded) { - if (!succeeded && !isFinishing()) { + if (succeeded) { + // update tags when one is added + performUpdate(EnumSet.of(UpdateTask.TAGS)); + } else if (!succeeded && !isFinishing()) { getPageAdapter().refreshFollowedTagFragment(); ToastUtils.showToast(ReaderSubsActivity.this, R.string.reader_toast_err_add_tag); mLastAddedTagName = null; @@ -336,15 +343,15 @@ public void onActionResult(boolean succeeded) { } }; - ReaderTag tag = new ReaderTag(tagName, ReaderTagType.FOLLOWED); + ReaderTag tag = ReaderUtils.getTagFromTagName(tagName, ReaderTagType.FOLLOWED); if (ReaderTagActions.performTagAction(tag, TagAction.ADD, actionListener)) { AnalyticsTracker.track(AnalyticsTracker.Stat.READER_TAG_FOLLOWED); - mLastAddedTagName = tag.getTagName(); + mLastAddedTagName = tag.getTagSlug(); // make sure addition is reflected on followed tags getPageAdapter().refreshFollowedTagFragment(); String labelAddedTag = getString(R.string.reader_label_added_tag); - showInfoToast(String.format(labelAddedTag, tag.getCapitalizedTagName())); + showInfoToast(String.format(labelAddedTag, tag.getTagDisplayName())); } } @@ -453,11 +460,11 @@ private void showInfoToast(String text) { @Override public void onTagDeleted(ReaderTag tag) { AnalyticsTracker.track(AnalyticsTracker.Stat.READER_TAG_UNFOLLOWED); - if (mLastAddedTagName != null && mLastAddedTagName.equalsIgnoreCase(tag.getTagName())) { + if (mLastAddedTagName != null && mLastAddedTagName.equalsIgnoreCase(tag.getTagSlug())) { mLastAddedTagName = null; } String labelRemovedTag = getString(R.string.reader_label_removed_tag); - showInfoToast(String.format(labelRemovedTag, tag.getCapitalizedTagName())); + showInfoToast(String.format(labelRemovedTag, tag.getTagDisplayName())); } /* diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/actions/ReaderTagActions.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/actions/ReaderTagActions.java index 2d0dd8078b8e..c88af3a09062 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/actions/ReaderTagActions.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/actions/ReaderTagActions.java @@ -43,7 +43,7 @@ public static boolean performTagAction(final ReaderTag tag, } final String path; - final String tagNameForApi = ReaderUtils.sanitizeWithDashes(tag.getTagName()); + final String tagNameForApi = ReaderUtils.sanitizeWithDashes(tag.getTagSlug()); switch (action) { case DELETE: @@ -53,7 +53,7 @@ public static boolean performTagAction(final ReaderTag tag, case ADD : String endpoint = "/read/tags/" + tagNameForApi + "/posts"; - ReaderTag newTopic = new ReaderTag(tag.getTagName(), endpoint, ReaderTagType.FOLLOWED); + ReaderTag newTopic = new ReaderTag(tag.getTagSlug(), tag.getTagTitle(), endpoint, ReaderTagType.FOLLOWED); ReaderTagTable.addOrUpdateTag(newTopic); path = "read/tags/" + tagNameForApi + "/mine/new"; break; diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderPostAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderPostAdapter.java index c1aed5cfc639..5d18ea78917e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderPostAdapter.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderPostAdapter.java @@ -365,7 +365,7 @@ public void onClick(View view) { } // show the best tag for this post - final String tagToDisplay = (mCurrentTag != null ? post.getTagForDisplay(mCurrentTag.getTagName()) : null); + final String tagToDisplay = (mCurrentTag != null ? post.getTagForDisplay(mCurrentTag.getTagSlug()) : null); if (!TextUtils.isEmpty(tagToDisplay)) { holder.txtTag.setText(ReaderUtils.makeHashTag(tagToDisplay)); holder.txtTag.setVisibility(View.VISIBLE); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderTagAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderTagAdapter.java index 97c83a103759..9ae9c47b83d8 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderTagAdapter.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderTagAdapter.java @@ -2,6 +2,7 @@ import android.content.Context; import android.os.AsyncTask; +import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -13,7 +14,6 @@ import org.wordpress.android.datasets.ReaderTagTable; import org.wordpress.android.models.ReaderTag; import org.wordpress.android.models.ReaderTagList; -import org.wordpress.android.models.ReaderTagType; import org.wordpress.android.ui.reader.ReaderInterfaces; import org.wordpress.android.ui.reader.actions.ReaderActions; import org.wordpress.android.ui.reader.actions.ReaderTagActions; @@ -78,7 +78,7 @@ public boolean isEmpty() { @Override public long getItemId(int position) { - return mTags.get(position).getTagName().hashCode(); + return mTags.get(position).getTagSlug().hashCode(); } @Override @@ -90,17 +90,17 @@ public TagViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @Override public void onBindViewHolder(TagViewHolder holder, int position) { final ReaderTag tag = mTags.get(position); - holder.txtTagName.setText(tag.getCapitalizedTagName()); + holder.txtTagName.setText(tag.getTagDisplayName()); holder.btnRemove.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - performDeleteTag(tag.getTagName()); + performDeleteTag(tag); } }); } - private void performDeleteTag(String tagName) { + private void performDeleteTag(@NonNull ReaderTag tag) { if (!NetworkUtils.checkConnection(getContext())) { return; } @@ -115,11 +115,10 @@ public void onActionResult(boolean succeeded) { } }; - ReaderTag tag = new ReaderTag(tagName, ReaderTagType.FOLLOWED); boolean success = ReaderTagActions.performTagAction(tag, TagAction.DELETE, actionListener); if (success) { - int index = mTags.indexOfTagName(tagName); + int index = mTags.indexOfTagName(tag.getTagSlug()); if (index > -1) { mTags.remove(index); notifyItemRemoved(index); diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/services/ReaderPostService.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/services/ReaderPostService.java index af33e40a030b..b913126e6baa 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/services/ReaderPostService.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/services/ReaderPostService.java @@ -362,7 +362,7 @@ private static String getRelativeEndpointForTag(ReaderTag tag) { return null; } - return String.format("read/tags/%s/posts", ReaderUtils.sanitizeWithDashes(tag.getTagName())); + return String.format("read/tags/%s/posts", ReaderUtils.sanitizeWithDashes(tag.getTagSlug())); } /* diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/services/ReaderUpdateService.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/services/ReaderUpdateService.java index 04de14845405..f482765439e6 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/services/ReaderUpdateService.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/services/ReaderUpdateService.java @@ -200,9 +200,15 @@ private static ReaderTagList parseTags(JSONObject jsonObject, String name, Reade String internalName = it.next(); JSONObject jsonTopic = jsonTopics.optJSONObject(internalName); if (jsonTopic != null) { - String tagName = JSONUtils.getStringDecoded(jsonTopic, "title"); + String tagTitle = JSONUtils.getStringDecoded(jsonTopic, "title"); + String tagSlug; + if (jsonTopic.has("slug")) { + tagSlug = JSONUtils.getStringDecoded(jsonTopic, "slug"); + } else { + tagSlug = tagTitle; + } String endpoint = JSONUtils.getString(jsonTopic, "URL"); - topics.add(new ReaderTag(tagName, endpoint, topicType)); + topics.add(new ReaderTag(tagSlug, tagTitle, endpoint, topicType)); } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderUtils.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderUtils.java index e455bcac1ad5..2476740f2943 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/utils/ReaderUtils.java @@ -10,7 +10,10 @@ import org.wordpress.android.R; import org.wordpress.android.datasets.ReaderCommentTable; import org.wordpress.android.datasets.ReaderPostTable; +import org.wordpress.android.datasets.ReaderTagTable; import org.wordpress.android.models.AccountHelper; +import org.wordpress.android.models.ReaderTag; +import org.wordpress.android.models.ReaderTagType; import org.wordpress.android.util.FormatUtils; import org.wordpress.android.util.PhotonUtils; import org.wordpress.android.util.StringUtils; @@ -183,4 +186,26 @@ public static void setBackgroundToRoundRipple(View view) { view.setBackgroundResource(R.drawable.ripple_oval); } } + + /* + * returns a tag object from the passed tag name - first checks for it in the tag db + * (so we can also get its title & endpoint), returns a new tag if that fails + */ + public static ReaderTag getTagFromTagName(String tagName, ReaderTagType tagType) { + ReaderTag tag = ReaderTagTable.getTag(tagName, tagType); + if (tag != null) { + return tag; + } + return new ReaderTag(tagName, null, null, tagType); + } + + /* + * returns the default tag, which is the one selected by default in the reader when + * the user hasn't already chosen one + */ + public static ReaderTag getDefaultTag() { + return getTagFromTagName(ReaderTag.TAG_TITLE_DEFAULT, ReaderTagType.DEFAULT); + } + + } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/views/ReaderTagInfoView.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/views/ReaderTagInfoView.java index 6776e823b62d..27d98782cf90 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/views/ReaderTagInfoView.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/views/ReaderTagInfoView.java @@ -49,13 +49,13 @@ public void setCurrentTag(final ReaderTag tag) { mCurrentTag = tag; TextView txtTagName = (TextView) findViewById(R.id.text_tag); - txtTagName.setText(ReaderUtils.makeHashTag(tag.getTagName())); + txtTagName.setText(ReaderUtils.makeHashTag(tag.getTagSlug())); if (ReaderUtils.isLoggedOutReader()) { mFollowButton.setVisibility(View.GONE); } else { mFollowButton.setVisibility(View.VISIBLE); - mFollowButton.setIsFollowed(ReaderTagTable.isFollowedTagName(tag.getTagName())); + mFollowButton.setIsFollowed(ReaderTagTable.isFollowedTagName(tag.getTagSlug())); mFollowButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -70,7 +70,7 @@ private void toggleFollowStatus() { return; } - final boolean isAskingToFollow = !ReaderTagTable.isFollowedTagName(mCurrentTag.getTagName()); + final boolean isAskingToFollow = !ReaderTagTable.isFollowedTagName(mCurrentTag.getTagSlug()); ReaderTagActions.TagAction action = isAskingToFollow ? ReaderTagActions.TagAction.ADD : ReaderTagActions.TagAction.DELETE; ReaderActions.ActionListener listener = new ReaderActions.ActionListener() {