diff --git a/build.gradle b/build.gradle
index 9cd898a6d1f0..3aab86aa5d09 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,31 +3,37 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:0.6.+'
+ classpath 'com.android.tools.build:gradle:0.7.+'
}
}
-apply plugin: 'android'
-
repositories {
mavenCentral()
maven { url 'http://wordpress-mobile.github.io/WordPress-Android' }
}
-project.archivesBaseName="WordPress-Android"
+apply plugin: 'android'
android {
+ lintOptions {
+ quiet true
+ abortOnError false
+ }
+
+ packagingOptions {
+ exclude "META-INF/LICENSE.txt"
+ exclude "META-INF/NOTICE.txt"
+ }
buildTypes {
release {
- buildConfig "public static String APP_PN_KEY = \"org.wordpress.android.playstore\";"
+ buildConfigField "String", "APP_PN_KEY", "\"org.wordpress.android.playstore\""
}
debug {
- buildConfig "public static String APP_PN_KEY = \"org.wordpress.android.debug.build\";"
+ buildConfigField "String", "APP_PN_KEY", "\"org.wordpress.android.debug.build\""
}
- betagroup.initWith(buildTypes.release)
betagroup {
- buildConfig "public static String APP_PN_KEY = \"org.wordpress.android.beta.build\";"
+ buildConfigField "String", "APP_PN_KEY", "\"org.wordpress.android.beta.build\""
}
}
@@ -85,7 +91,7 @@ android {
// Generates the Config.java class using properties defined in gradle.properties
// or by other means provided by Gradle
-task wordpressConfig(group: "build", description: "Generate Config class") {
+task generateWPConfig(group: "generate", description: "Generate Config class") {
def dir = "${buildDir}/source/wordpress"
def file = new File(dir, "org/wordpress/android/Config.java")
android {
@@ -128,13 +134,13 @@ ${config}
}
}
-// Add the wordpressConfig task to every flavor's compile tasks
+// Add the generateWPConfig task to every flavor's compile tasks
android.buildTypes.all { buildType ->
- def name = "compile${buildType.name.capitalize()}"
+ def name = "generate${buildType.name.capitalize()}BuildConfig"
tasks.whenTaskAdded { task ->
if (task.name == name) {
- task.dependsOn(wordpressConfig)
- task.mustRunAfter(wordpressConfig)
+ task.dependsOn(generateWPConfig)
+ task.mustRunAfter(generateWPConfig)
}
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 6044c1b1a5ba..b4ae0d5ba67f 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Mon Nov 04 14:37:56 PST 2013
+#Thu Dec 19 13:13:21 CET 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-all.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.9-all.zip
diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar
deleted file mode 100755
index 428bdbc02a1a..000000000000
Binary files a/libs/android-support-v4.jar and /dev/null differ
diff --git a/libs/commons-lang-2.6.jar b/libs/commons-lang-2.6.jar
deleted file mode 100644
index 98467d3a653e..000000000000
Binary files a/libs/commons-lang-2.6.jar and /dev/null differ
diff --git a/libs/gcm.jar b/libs/gcm.jar
deleted file mode 100644
index ac109a830ebe..000000000000
Binary files a/libs/gcm.jar and /dev/null differ
diff --git a/libs/gson-2.2.2.jar b/libs/gson-2.2.2.jar
deleted file mode 100644
index f2108e00c632..000000000000
Binary files a/libs/gson-2.2.2.jar and /dev/null differ
diff --git a/libs/httpmime-4.1.2.jar b/libs/httpmime-4.1.2.jar
deleted file mode 100644
index eea3b3ff1761..000000000000
Binary files a/libs/httpmime-4.1.2.jar and /dev/null differ
diff --git a/libs/tagsoup-1.2.1.jar b/libs/tagsoup-1.2.1.jar
deleted file mode 100644
index 27516019174e..000000000000
Binary files a/libs/tagsoup-1.2.1.jar and /dev/null differ
diff --git a/libs/volley.jar b/libs/volley.jar
deleted file mode 100644
index 0850737e2496..000000000000
Binary files a/libs/volley.jar and /dev/null differ
diff --git a/libs/wordpresscom-android-rest-v0.0.3.jar b/libs/wordpresscom-android-rest-v0.0.3.jar
deleted file mode 100644
index 5299c104b106..000000000000
Binary files a/libs/wordpresscom-android-rest-v0.0.3.jar and /dev/null differ
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8128a0331591..29d18adf022e 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -633,12 +633,6 @@
Unable to retrieve this post
Unable to retrieve this comment
-
- Freshly Pressed
-
No post in this topic.
Fetching posts…
diff --git a/src/org/wordpress/android/datasets/ReaderPostTable.java b/src/org/wordpress/android/datasets/ReaderPostTable.java
index 5c966867acff..b1808a4d3918 100644
--- a/src/org/wordpress/android/datasets/ReaderPostTable.java
+++ b/src/org/wordpress/android/datasets/ReaderPostTable.java
@@ -7,6 +7,7 @@
import org.wordpress.android.models.ReaderPost;
import org.wordpress.android.models.ReaderPostList;
+import org.wordpress.android.models.ReaderTag;
import org.wordpress.android.util.SqlUtils;
/**
@@ -338,8 +339,13 @@ public static ReaderPostList getPostsWithTag(String tagName, int maxPosts) {
String sql = "SELECT tbl_posts.* FROM tbl_posts, tbl_post_tags"
+ " 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=?"
- + " ORDER BY tbl_posts.timestamp DESC";
+ + " AND tbl_post_tags.tag_name=?";
+
+ // skip posts that are no longer liked if this is "Posts I Like"
+ if (tagName.equals(ReaderTag.TAG_NAME_LIKED))
+ sql += " AND tbl_posts.is_liked != 0";
+
+ sql += " ORDER BY tbl_posts.timestamp DESC";
if (maxPosts > 0)
sql += " LIMIT " + Integer.toString(maxPosts);
diff --git a/src/org/wordpress/android/models/ReaderTag.java b/src/org/wordpress/android/models/ReaderTag.java
index 32da4b25b8fd..f822052a52c2 100644
--- a/src/org/wordpress/android/models/ReaderTag.java
+++ b/src/org/wordpress/android/models/ReaderTag.java
@@ -14,6 +14,15 @@ public class ReaderTag {
private static final int INT_SUBSCRIBED = 1;
private static final int INT_RECOMMENDED = 2;
+ public static String TAG_ID_FOLLOWING = "following";
+ public static String TAG_ID_LIKED = "liked";
+
+ // these are the default tag names, which aren't localized in the /read/menu/ response
+ public static String TAG_NAME_LIKED = "Posts I Like";
+ public static String TAG_NAME_FOLLOWING = "Blogs I Follow";
+ public static String TAG_NAME_FRESHLY_PRESSED = "Freshly Pressed";
+ public static String TAG_NAME_DEFAULT = TAG_NAME_FRESHLY_PRESSED;
+
public static enum ReaderTagType {SUBSCRIBED,
DEFAULT,
RECOMMENDED;
diff --git a/src/org/wordpress/android/ui/reader_native/NativeReaderActivity.java b/src/org/wordpress/android/ui/reader_native/NativeReaderActivity.java
index 5892724d06f9..ea7f1a16df23 100644
--- a/src/org/wordpress/android/ui/reader_native/NativeReaderActivity.java
+++ b/src/org/wordpress/android/ui/reader_native/NativeReaderActivity.java
@@ -18,6 +18,7 @@
import org.wordpress.android.ui.reader_native.actions.ReaderAuthActions;
import org.wordpress.android.ui.reader_native.actions.ReaderBlogActions;
import org.wordpress.android.ui.reader_native.actions.ReaderUserActions;
+import org.wordpress.android.ui.reader_native.ReaderPostListFragment.RefreshType;
import org.wordpress.android.util.NetworkUtils;
import org.wordpress.android.util.ReaderLog;
import org.wordpress.android.util.ToastUtils;
@@ -170,7 +171,7 @@ public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
if (!NetworkUtils.isNetworkAvailable(this)) {
ToastUtils.showToast(this, R.string.reader_toast_err_no_connection, ToastUtils.Duration.LONG);
} else {
- fragment.updatePostsWithCurrentTag(ReaderActions.RequestDataAction.LOAD_NEWER);
+ fragment.updatePostsWithCurrentTag(ReaderActions.RequestDataAction.LOAD_NEWER, RefreshType.MANUAL);
}
return true;
}
diff --git a/src/org/wordpress/android/ui/reader_native/ReaderPostListFragment.java b/src/org/wordpress/android/ui/reader_native/ReaderPostListFragment.java
index b4fe1cb46e80..f7814bb36bf5 100644
--- a/src/org/wordpress/android/ui/reader_native/ReaderPostListFragment.java
+++ b/src/org/wordpress/android/ui/reader_native/ReaderPostListFragment.java
@@ -62,13 +62,15 @@ public class ReaderPostListFragment extends Fragment implements AbsListView.OnSc
private static final String LIST_STATE = "list_state";
private Parcelable mListState = null;
+ protected static enum RefreshType {AUTOMATIC, MANUAL};
+
protected static ReaderPostListFragment newInstance(Context context) {
ReaderLog.d("post list newInstance");
// restore the previously-chosen tag, revert to default if not set or doesn't exist
String tagName = UserPrefs.getReaderTag();
if (TextUtils.isEmpty(tagName) || !ReaderTagTable.tagExists(tagName))
- tagName = context.getString(R.string.reader_default_tag_name);
+ tagName = ReaderTag.TAG_NAME_DEFAULT;
Bundle args = new Bundle();
args.putString(KEY_TAG_NAME, tagName);
@@ -213,11 +215,11 @@ private void setEmptyTitleAndDecriptionForCurrentTag() {
} else {
tagId = "";
}
- if (tagId.equals("following")) {
+ if (tagId.equals(ReaderTag.TAG_ID_FOLLOWING)) {
title = R.string.reader_empty_followed_blogs_title;
description = R.string.reader_empty_followed_blogs_description;
} else {
- if (tagId.equals("liked")) {
+ if (tagId.equals(ReaderTag.TAG_ID_LIKED)) {
title = R.string.reader_empty_posts_liked;
} else {
title = R.string.reader_empty_posts_in_topic;
@@ -270,7 +272,7 @@ public void onRequestData(ReaderActions.RequestDataAction action) {
if (ReaderPostTable.getNumPostsWithTag(mCurrentTag) >= Constants.READER_MAX_POSTS_TO_DISPLAY)
return;
// request older posts
- updatePostsWithCurrentTag(ReaderActions.RequestDataAction.LOAD_OLDER);
+ updatePostsWithCurrentTag(ReaderActions.RequestDataAction.LOAD_OLDER, RefreshType.MANUAL);
}
};
@@ -332,7 +334,7 @@ protected void setCurrentTag(String tagName) {
// update posts in this tag if it's time to do so
if (ReaderTagTable.shouldAutoUpdateTag(tagName))
- updatePostsWithTag(tagName, ReaderActions.RequestDataAction.LOAD_NEWER);
+ updatePostsWithTag(tagName, ReaderActions.RequestDataAction.LOAD_NEWER, RefreshType.AUTOMATIC);
}
/*
@@ -360,17 +362,17 @@ private void reloadPosts(boolean animateRows) {
}
private boolean hasActivity() {
- return (getActivity()!=null);
+ return (getActivity() != null && !isRemoving());
}
/*
* get latest posts for this tag from the server
*/
- protected void updatePostsWithCurrentTag(ReaderActions.RequestDataAction updateAction) {
+ protected void updatePostsWithCurrentTag(ReaderActions.RequestDataAction updateAction, RefreshType refreshType) {
if (hasCurrentTag())
- updatePostsWithTag(mCurrentTag, updateAction);
+ updatePostsWithTag(mCurrentTag, updateAction, refreshType);
}
- private void updatePostsWithTag(final String tagName, final ReaderActions.RequestDataAction updateAction) {
+ private void updatePostsWithTag(final String tagName, final ReaderActions.RequestDataAction updateAction, RefreshType refreshType) {
if (TextUtils.isEmpty(tagName))
return;
@@ -383,9 +385,14 @@ private void updatePostsWithTag(final String tagName, final ReaderActions.Reques
}
setIsUpdating(true, updateAction);
- // update empty view title and description if the the post list is empty
setEmptyTitleAndDecriptionForCurrentTag();
+ // if this is "Posts I Like" and it's a manual refresh (user tapped refresh icon), refresh the posts so posts that were unliked
+ // no longer appear
+ if (refreshType == RefreshType.MANUAL && isCurrentTagName(tagName) && tagName.equals((ReaderTag.TAG_NAME_LIKED))) {
+ refreshPosts();
+ }
+
ReaderPostActions.updatePostsWithTag(tagName, updateAction, new ReaderActions.UpdateResultAndCountListener() {
@Override
public void onUpdateResult(ReaderActions.UpdateResult result, int numNewPosts) {
@@ -476,7 +483,7 @@ public void onAnimationRepeat(Animation animation) { }
public void run() {
if (hasCurrentTag()) {
ReaderLog.d("performing automatic update");
- updatePostsWithCurrentTag(ReaderActions.RequestDataAction.LOAD_NEWER);
+ updatePostsWithCurrentTag(ReaderActions.RequestDataAction.LOAD_NEWER, ReaderPostListFragment.RefreshType.AUTOMATIC);
}
}
};
@@ -571,9 +578,9 @@ protected void refreshTags() {
return;
// make sure current tag still exists, reset to default if it doesn't
- if (hasCurrentTag() && !ReaderTagTable.tagExists(getCurrentTagName())) {
- mCurrentTag = getActivity().getString(R.string.reader_default_tag_name);
- }
+ if (hasCurrentTag() && !ReaderTagTable.tagExists(getCurrentTagName()))
+ mCurrentTag = ReaderTag.TAG_NAME_DEFAULT;
+
getActionBarAdapter().refreshTags();
}