aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.idea/caches/build_file_checksums.serbin533 -> 533 bytes
-rw-r--r--app/build.gradle1
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java51
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/FetchSubscribedThing.java2
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java8
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java3
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java31
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java37
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java13
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubscribedThing.java6
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ParseUserInfo.java19
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java99
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/PostPaginationScrollListener.java13
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/RedditAPI.java10
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java35
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java2
16 files changed, 168 insertions, 162 deletions
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 7bdc04b0..0ebdd587 100644
--- a/.idea/caches/build_file_checksums.ser
+++ b/.idea/caches/build_file_checksums.ser
Binary files differ
diff --git a/app/build.gradle b/app/build.gradle
index 4dd39fc5..c2f27341 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -57,4 +57,5 @@ dependencies {
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
implementation 'org.sufficientlysecure:html-textview:3.6'
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
+ implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
index 6c23036e..e0fb82e8 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchComment.java
@@ -1,12 +1,13 @@
package ml.docilealligator.infinityforreddit;
-import android.net.Uri;
+import android.support.annotation.NonNull;
+import android.util.Log;
-import com.android.volley.Request;
-import com.android.volley.RequestQueue;
-import com.android.volley.Response;
-import com.android.volley.VolleyError;
-import com.android.volley.toolbox.StringRequest;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.scalars.ScalarsConverterFactory;
class FetchComment {
interface FetchCommentListener {
@@ -14,36 +15,34 @@ class FetchComment {
void onFetchCommentFail();
}
- private RequestQueue requestQueue;
- private String subredditName;
+ private String subredditNamePrefixed;
private String article;
- private FetchCommentListener mFetchCommentListener;
- FetchComment(RequestQueue requestQueue, String subredditName, String article) {
- this.requestQueue = requestQueue;
- this.subredditName = subredditName;
+ FetchComment(String subredditNamePrefixed, String article) {
+ this.subredditNamePrefixed = subredditNamePrefixed;
this.article = article;
}
- void queryComment(FetchCommentListener fetchCommentListener) {
- mFetchCommentListener = fetchCommentListener;
-
- Uri uri = Uri.parse(RedditUtils.getQueryCommentUrl(subredditName, article))
- .buildUpon().appendQueryParameter(RedditUtils.RAW_JSON_KEY, RedditUtils.RAW_JSON_VALUE)
+ void queryComment(final FetchCommentListener fetchCommentListener) {
+ Retrofit retrofit = new Retrofit.Builder()
+ .baseUrl(RedditUtils.API_BASE_URI)
+ .addConverterFactory(ScalarsConverterFactory.create())
.build();
- StringRequest commentRequest = new StringRequest(Request.Method.GET, uri.toString(), new Response.Listener<String>() {
+ RedditAPI api = retrofit.create(RedditAPI.class);
+
+ Call<String> comments = api.getComments(subredditNamePrefixed, article);
+ comments.enqueue(new Callback<String>() {
@Override
- public void onResponse(String response) {
- mFetchCommentListener.onFetchCommentSuccess(response);
+ public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
+ fetchCommentListener.onFetchCommentSuccess(response.body());
}
- }, new Response.ErrorListener() {
+
@Override
- public void onErrorResponse(VolleyError error) {
- mFetchCommentListener.onFetchCommentFail();
+ public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
+ Log.i("call failed", t.getMessage());
+ fetchCommentListener.onFetchCommentFail();
}
- }) {};
- commentRequest.setTag(FetchComment.class);
- requestQueue.add(commentRequest);
+ });
}
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchSubscribedThing.java b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchSubscribedThing.java
index be468f7a..37719bfc 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/FetchSubscribedThing.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/FetchSubscribedThing.java
@@ -55,7 +55,7 @@ class FetchSubscribedThing {
StringRequest commentRequest = new StringRequest(Request.Method.GET, uri.toString(), new Response.Listener<String>() {
@Override
public void onResponse(String response) {
- new ParseSubscribedThing().parseSubscribedSubreddits(response, mSubscribedSubredditData,
+ ParseSubscribedThing.parseSubscribedSubreddits(response, mSubscribedSubredditData,
mSubscribedUserData, mSubredditData,
new ParseSubscribedThing.ParseSubscribedSubredditsListener() {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java b/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java
index 78b2255e..32cbd1bd 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/JSONUtils.java
@@ -62,8 +62,8 @@ class JSONUtils {
static final String SUBREDDIT_TYPE_KEY = "subreddit_type";
static final String SUBREDDIT_TYPE_VALUE_USER = "user";
static final String SUBSCRIBERS_KEY = "subscribers";
- static final String PUBLIC_DESCRIPTION = "public_description";
- static final String ACTIVE_USER_COUNT = "active_user_count";
- static final String DISPLAY_NAME_PREFIXED = "display_name_prefixed";
- static final String LINK_ID = "link_id";
+ static final String PUBLIC_DESCRIPTION_KEY = "public_description";
+ static final String ACTIVE_USER_COUNT_KEY = "active_user_count";
+ static final String DISPLAY_NAME_PREFIXED_KEY = "display_name_prefixed";
+ static final String LINK_ID_KEY = "link_id";
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java
index 09024906..d8bcdf08 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/MainActivity.java
@@ -17,7 +17,6 @@ import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
-import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
@@ -185,7 +184,7 @@ public class MainActivity extends AppCompatActivity {
new FetchUserInfo(this, Volley.newRequestQueue(this)).queryUserInfo(new FetchUserInfo.FetchUserInfoListener() {
@Override
public void onFetchUserInfoSuccess(String response) {
- new ParseUserInfo().parseUserInfo(response, new ParseUserInfo.ParseUserInfoListener() {
+ ParseUserInfo.parseUserInfo(response, new ParseUserInfo.ParseUserInfoListener() {
@Override
public void onParseUserInfoSuccess(String name, String profileImageUrl, String bannerImageUrl, int karma) {
mNameTextView.setText(name);
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java
index 8b623b76..28355a04 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseComment.java
@@ -1,6 +1,5 @@
package ml.docilealligator.infinityforreddit;
-import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
@@ -11,6 +10,7 @@ import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Locale;
class ParseComment {
interface ParseCommentListener {
@@ -18,31 +18,30 @@ class ParseComment {
void onParseCommentFail();
}
- private Context mContext;
- private ParseCommentListener mParseCommentListener;
-
- void parseComment(Context context, String response, ArrayList<CommentData> commentData, ParseCommentListener parseCommentListener) {
- mParseCommentListener = parseCommentListener;
- mContext = context;
- new ParseCommentAsyncTask(response, commentData).execute();
+ static void parseComment(String response, ArrayList<CommentData> commentData, Locale locale, ParseCommentListener parseCommentListener) {
+ new ParseCommentAsyncTask(response, commentData, locale, parseCommentListener).execute();
}
- private class ParseCommentAsyncTask extends AsyncTask<Void, Void, Void> {
+ private static class ParseCommentAsyncTask extends AsyncTask<Void, Void, Void> {
private JSONArray jsonResponse;
private ArrayList<CommentData> commentData;
private ArrayList<CommentData> newcommentData;
+ private Locale locale;
+ private ParseCommentListener parseCommentListener;
private boolean parseFailed;
- int moreCommentCount;
+ private int moreCommentCount;
- ParseCommentAsyncTask(String response, ArrayList<CommentData> commentData){
+ ParseCommentAsyncTask(String response, ArrayList<CommentData> commentData, Locale locale, ParseCommentListener parseCommentListener){
try {
jsonResponse = new JSONArray(response);
this.commentData = commentData;
newcommentData = new ArrayList<>();
+ this.locale = locale;
+ this.parseCommentListener = parseCommentListener;
parseFailed = false;
} catch (JSONException e) {
Log.i("comment json error", e.getMessage());
- mParseCommentListener.onParseCommentFail();
+ parseCommentListener.onParseCommentFail();
}
}
@@ -69,7 +68,7 @@ class ParseComment {
for (int i = 0; i < actualCommentLength; i++) {
JSONObject data = allComments.getJSONObject(i).getJSONObject(JSONUtils.DATA_KEY);
- String fullName = data.getString(JSONUtils.LINK_ID);
+ String fullName = data.getString(JSONUtils.LINK_ID_KEY);
String author = data.getString(JSONUtils.AUTHOR_KEY);
boolean isSubmitter = data.getBoolean(JSONUtils.IS_SUBMITTER_KEY);
String commentContent = "";
@@ -84,7 +83,7 @@ class ParseComment {
Calendar submitTimeCalendar = Calendar.getInstance();
submitTimeCalendar.setTimeInMillis(submitTime);
String formattedSubmitTime = new SimpleDateFormat("MMM d, YYYY, HH:mm",
- mContext.getResources().getConfiguration().locale).format(submitTimeCalendar.getTime());
+ locale).format(submitTimeCalendar.getTime());
int depth = data.getInt(JSONUtils.DEPTH_KEY);
boolean collapsed = data.getBoolean(JSONUtils.COLLAPSED_KEY);
@@ -103,9 +102,9 @@ class ParseComment {
protected void onPostExecute(Void aVoid) {
if(!parseFailed) {
commentData.addAll(newcommentData);
- mParseCommentListener.onParseCommentSuccess(commentData, moreCommentCount);
+ parseCommentListener.onParseCommentSuccess(commentData, moreCommentCount);
} else {
- mParseCommentListener.onParseCommentFail();
+ parseCommentListener.onParseCommentFail();
}
}
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java
index 5ef4aab3..381f8044 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParsePost.java
@@ -1,9 +1,7 @@
package ml.docilealligator.infinityforreddit;
-import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
-import android.widget.Toast;
import org.json.JSONArray;
import org.json.JSONException;
@@ -12,6 +10,7 @@ import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
+import java.util.Locale;
/**
* Created by alex on 3/21/18.
@@ -24,34 +23,31 @@ class ParsePost {
void onParsePostFail();
}
- private Context mContext;
- private ParsePostListener mParseBetPostListener;
-
- ParsePost(Context context, ParsePostListener parsePostListener) {
- mContext = context;
- mParseBetPostListener = parsePostListener;
- }
-
- void parsePost(String response, ArrayList<PostData> postData) {
- new ParsePostDataAsyncTask(response, postData).execute();
+ static void parsePost(String response, ArrayList<PostData> postData, Locale locale,
+ ParsePostListener parsePostListener) {
+ new ParsePostDataAsyncTask(response, postData, locale, parsePostListener).execute();
}
- private class ParsePostDataAsyncTask extends AsyncTask<Void, Void, Void> {
+ private static class ParsePostDataAsyncTask extends AsyncTask<Void, Void, Void> {
private JSONObject jsonResponse;
private ArrayList<PostData> postData;
+ private Locale locale;
+ private ParsePostListener parsePostListener;
private ArrayList<PostData> newPostData;
private String lastItem;
private boolean parseFailed;
- ParsePostDataAsyncTask(String response, ArrayList<PostData> postData) {
+ ParsePostDataAsyncTask(String response, ArrayList<PostData> postData, Locale locale,
+ ParsePostListener parsePostListener) {
try {
jsonResponse = new JSONObject(response);
this.postData = postData;
+ this.locale = locale;
+ this.parsePostListener = parsePostListener;
newPostData = new ArrayList<>();
parseFailed = false;
} catch (JSONException e) {
e.printStackTrace();
- Toast.makeText(mContext, "Error converting response to JSON", Toast.LENGTH_SHORT).show();
}
}
@@ -82,7 +78,7 @@ class ParsePost {
Calendar postTimeCalendar = Calendar.getInstance();
postTimeCalendar.setTimeInMillis(postTime);
String formattedPostTime = new SimpleDateFormat("MMM d, YYYY, HH:mm",
- mContext.getResources().getConfiguration().locale).format(postTimeCalendar.getTime());
+ locale).format(postTimeCalendar.getTime());
String permalink = data.getString(JSONUtils.PERMALINK_KEY);
String previewUrl = "";
@@ -102,8 +98,7 @@ class ParsePost {
}
}
} catch (JSONException e) {
- Log.e("error", e.getMessage());
- Log.i("Best post", "Error parsing data");
+ Log.e("best post parse error", e.getMessage());
parseFailed = true;
}
return null;
@@ -113,14 +108,14 @@ class ParsePost {
protected void onPostExecute(Void aVoid) {
if(!parseFailed) {
postData.addAll(newPostData);
- mParseBetPostListener.onParsePostSuccess(postData, lastItem);
+ parsePostListener.onParsePostSuccess(postData, lastItem);
} else {
- mParseBetPostListener.onParsePostFail();
+ parsePostListener.onParsePostFail();
}
}
}
- private void parseData(JSONObject data, String permalink, ArrayList<PostData> bestPostData,
+ private static void parseData(JSONObject data, String permalink, ArrayList<PostData> bestPostData,
String id, String fullName, String subredditNamePrefixed, String formattedPostTime,
String title, String previewUrl, int score, int voteType, int gilded,
boolean nsfw, boolean stickied, int i) throws JSONException {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java
index 9a2fe016..1f9b4a9e 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubredditData.java
@@ -12,11 +12,8 @@ class ParseSubredditData {
void onParseSubredditDataFail();
}
- private ParseSubredditDataListener mParseSubredditDataListener;
-
- void parseComment(String response, ParseSubredditDataListener parseSubredditDataListener) {
- mParseSubredditDataListener = parseSubredditDataListener;
- new ParseSubredditDataAsyncTask(response, mParseSubredditDataListener).execute();
+ static void parseComment(String response, ParseSubredditDataListener parseSubredditDataListener) {
+ new ParseSubredditDataAsyncTask(response, parseSubredditDataListener).execute();
}
private static class ParseSubredditDataAsyncTask extends AsyncTask<Void, Void, Void> {
@@ -42,8 +39,8 @@ class ParseSubredditData {
try {
JSONObject data = jsonResponse.getJSONObject(JSONUtils.DATA_KEY);
String id = data.getString(JSONUtils.NAME_KEY);
- String subredditFullName = data.getString(JSONUtils.DISPLAY_NAME_PREFIXED);
- String description = data.getString(JSONUtils.PUBLIC_DESCRIPTION).trim();
+ String subredditFullName = data.getString(JSONUtils.DISPLAY_NAME_PREFIXED_KEY);
+ String description = data.getString(JSONUtils.PUBLIC_DESCRIPTION_KEY).trim();
String bannerImageUrl = data.getString(JSONUtils.BANNER_BACKGROUND_IMAGE_KEY);
if(bannerImageUrl.equals("") || bannerImageUrl.equals("null")) {
bannerImageUrl= data.getString(JSONUtils.BANNER_IMG_KEY);
@@ -59,7 +56,7 @@ class ParseSubredditData {
}
}
int nSubscribers = data.getInt(JSONUtils.SUBSCRIBERS_KEY);
- int nCurrentOnlineSubscribers = data.getInt(JSONUtils.ACTIVE_USER_COUNT);
+ int nCurrentOnlineSubscribers = data.getInt(JSONUtils.ACTIVE_USER_COUNT_KEY);
subredditData = new SubredditData(id, subredditFullName, iconUrl, bannerImageUrl, description, nSubscribers);
mNCurrentOnlineSubscribers = nCurrentOnlineSubscribers;
} catch (JSONException e) {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubscribedThing.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubscribedThing.java
index 5d0c4606..d4cc4030 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubscribedThing.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseSubscribedThing.java
@@ -18,7 +18,7 @@ class ParseSubscribedThing {
void onParseSubscribedSubredditsFail();
}
- void parseSubscribedSubreddits(String response, ArrayList<SubscribedSubredditData> subscribedSubredditData,
+ static void parseSubscribedSubreddits(String response, ArrayList<SubscribedSubredditData> subscribedSubredditData,
ArrayList<SubscribedUserData> subscribedUserData,
ArrayList<SubredditData> subredditData,
ParseSubscribedSubredditsListener parseSubscribedSubredditsListener) {
@@ -92,8 +92,8 @@ class ParseSubscribedThing {
//It's a user
newSubscribedUserData.add(new SubscribedUserData(id, name.substring(2), iconUrl));
} else {
- String subredditFullName = data.getString(JSONUtils.DISPLAY_NAME_PREFIXED);
- String description = data.getString(JSONUtils.PUBLIC_DESCRIPTION).trim();
+ String subredditFullName = data.getString(JSONUtils.DISPLAY_NAME_PREFIXED_KEY);
+ String description = data.getString(JSONUtils.PUBLIC_DESCRIPTION_KEY).trim();
int nSubscribers = data.getInt(JSONUtils.SUBSCRIBERS_KEY);
newSubscribedSubredditData.add(new SubscribedSubredditData(id, name, iconUrl));
newSubredditData.add(new SubredditData(id, subredditFullName, iconUrl, bannerImageUrl, description, nSubscribers));
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseUserInfo.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseUserInfo.java
index 2efb8ff8..40e162df 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ParseUserInfo.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ParseUserInfo.java
@@ -13,15 +13,13 @@ class ParseUserInfo {
void onParseUserInfoFail();
}
- private ParseUserInfoListener mParseUserInfoListener;
-
- void parseUserInfo(String response, ParseUserInfoListener parseUserInfoListener) {
- mParseUserInfoListener = parseUserInfoListener;
- new ParseUserInfoAsyncTask(response).execute();
+ static void parseUserInfo(String response, ParseUserInfoListener parseUserInfoListener) {
+ new ParseUserInfoAsyncTask(response, parseUserInfoListener).execute();
}
- private class ParseUserInfoAsyncTask extends AsyncTask<Void, Void, Void> {
+ private static class ParseUserInfoAsyncTask extends AsyncTask<Void, Void, Void> {
private JSONObject jsonResponse;
+ private ParseUserInfoListener parseUserInfoListener;
private boolean parseFailed;
private String name;
@@ -29,13 +27,14 @@ class ParseUserInfo {
private String bannerImageUrl;
private int karma;
- ParseUserInfoAsyncTask(String response){
+ ParseUserInfoAsyncTask(String response, ParseUserInfoListener parseUserInfoListener){
try {
jsonResponse = new JSONObject(response);
+ this.parseUserInfoListener = parseUserInfoListener;
parseFailed = false;
} catch (JSONException e) {
Log.i("user info json error", e.getMessage());
- mParseUserInfoListener.onParseUserInfoFail();
+ parseUserInfoListener.onParseUserInfoFail();
}
}
@@ -58,9 +57,9 @@ class ParseUserInfo {
@Override
protected void onPostExecute(Void aVoid) {
if(!parseFailed) {
- mParseUserInfoListener.onParseUserInfoSuccess(name, profileImageUrl, bannerImageUrl, karma);
+ parseUserInfoListener.onParseUserInfoSuccess(name, profileImageUrl, bannerImageUrl, karma);
} else {
- mParseUserInfoListener.onParseUserInfoFail();
+ parseUserInfoListener.onParseUserInfoFail();
}
}
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
index e8b10896..7c90c488 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java
@@ -77,7 +77,8 @@ public class PostFragment extends Fragment {
getActivity(), mLinearLayoutManager, mAdapter, mLastItem, mPostData,
mPaginationSynchronizer, mAcquireAccessTokenRequestQueue,
mQueryPostUrl, mIsBestPost,
- mPaginationSynchronizer.isLoading(), mPaginationSynchronizer.isLoadSuccess()));
+ mPaginationSynchronizer.isLoading(), mPaginationSynchronizer.isLoadSuccess(),
+ getResources().getConfiguration().locale));
mProgressBar.setVisibility(View.GONE);
} else {
if(mIsBestPost) {
@@ -196,29 +197,31 @@ public class PostFragment extends Fragment {
ClipData clip = ClipData.newPlainText("response", response);
clipboard.setPrimaryClip(clip);
//new ParsePostDataAsyncTask(response, accessToken).execute();
- new ParsePost(getActivity(), new ParsePost.ParsePostListener() {
- @Override
- public void onParsePostSuccess(ArrayList<PostData> postData, String lastItem) {
- mPostData = postData;
- mLastItem = lastItem;
- mAdapter = new PostRecyclerViewAdapter(getActivity(), postData, mPaginationSynchronizer, mVoteThingRequestQueue, mAcquireAccessTokenRequestQueue);
-
- mPostRecyclerView.setAdapter(mAdapter);
- mPostRecyclerView.addOnScrollListener(new PostPaginationScrollListener(
- getActivity(), mLinearLayoutManager, mAdapter, lastItem, postData,
- mPaginationSynchronizer, mAcquireAccessTokenRequestQueue,
- mQueryPostUrl, mIsBestPost,
- mPaginationSynchronizer.isLoading(), mPaginationSynchronizer.isLoadSuccess()));
- mProgressBar.setVisibility(View.GONE);
- }
-
- @Override
- public void onParsePostFail() {
- Toast.makeText(getActivity(), "Error parsing data", Toast.LENGTH_SHORT).show();
- Log.i("Post fetch error", "Error parsing data");
- mProgressBar.setVisibility(View.GONE);
- }
- }).parsePost(response, new ArrayList<PostData>());
+ ParsePost.parsePost(response, new ArrayList<PostData>(),
+ getResources().getConfiguration().locale, new ParsePost.ParsePostListener() {
+ @Override
+ public void onParsePostSuccess(ArrayList<PostData> postData, String lastItem) {
+ mPostData = postData;
+ mLastItem = lastItem;
+ mAdapter = new PostRecyclerViewAdapter(getActivity(), postData, mPaginationSynchronizer, mVoteThingRequestQueue, mAcquireAccessTokenRequestQueue);
+
+ mPostRecyclerView.setAdapter(mAdapter);
+ mPostRecyclerView.addOnScrollListener(new PostPaginationScrollListener(
+ getActivity(), mLinearLayoutManager, mAdapter, lastItem, postData,
+ mPaginationSynchronizer, mAcquireAccessTokenRequestQueue,
+ mQueryPostUrl, mIsBestPost,
+ mPaginationSynchronizer.isLoading(), mPaginationSynchronizer.isLoadSuccess(),
+ getResources().getConfiguration().locale));
+ mProgressBar.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onParsePostFail() {
+ Toast.makeText(getActivity(), "Error parsing data", Toast.LENGTH_SHORT).show();
+ Log.i("Post fetch error", "Error parsing data");
+ mProgressBar.setVisibility(View.GONE);
+ }
+ });
}
}
}, new Response.ErrorListener() {
@@ -273,29 +276,31 @@ public class PostFragment extends Fragment {
ClipData clip = ClipData.newPlainText("response", response);
clipboard.setPrimaryClip(clip);
//new ParsePostDataAsyncTask(response, accessToken).execute();
- new ParsePost(getActivity(), new ParsePost.ParsePostListener() {
- @Override
- public void onParsePostSuccess(ArrayList<PostData> postData, String lastItem) {
- mPostData = postData;
- mLastItem = lastItem;
- mAdapter = new PostRecyclerViewAdapter(getActivity(), postData, mPaginationSynchronizer, mVoteThingRequestQueue, mAcquireAccessTokenRequestQueue);
-
- mPostRecyclerView.setAdapter(mAdapter);
- mPostRecyclerView.addOnScrollListener(new PostPaginationScrollListener(
- getActivity(), mLinearLayoutManager, mAdapter, lastItem, postData,
- mPaginationSynchronizer, mAcquireAccessTokenRequestQueue,
- mQueryPostUrl, mIsBestPost,
- mPaginationSynchronizer.isLoading(), mPaginationSynchronizer.isLoadSuccess()));
- mProgressBar.setVisibility(View.GONE);
- }
-
- @Override
- public void onParsePostFail() {
- Toast.makeText(getActivity(), "Error parsing data", Toast.LENGTH_SHORT).show();
- Log.i("Post fetch error", "Error parsing data");
- mProgressBar.setVisibility(View.GONE);
- }
- }).parsePost(response, new ArrayList<PostData>());
+ ParsePost.parsePost(response, new ArrayList<PostData>(),
+ getResources().getConfiguration().locale, new ParsePost.ParsePostListener() {
+ @Override
+ public void onParsePostSuccess(ArrayList<PostData> postData, String lastItem) {
+ mPostData = postData;
+ mLastItem = lastItem;
+ mAdapter = new PostRecyclerViewAdapter(getActivity(), postData, mPaginationSynchronizer, mVoteThingRequestQueue, mAcquireAccessTokenRequestQueue);
+
+ mPostRecyclerView.setAdapter(mAdapter);
+ mPostRecyclerView.addOnScrollListener(new PostPaginationScrollListener(
+ getActivity(), mLinearLayoutManager, mAdapter, lastItem, postData,
+ mPaginationSynchronizer, mAcquireAccessTokenRequestQueue,
+ mQueryPostUrl, mIsBestPost,
+ mPaginationSynchronizer.isLoading(), mPaginationSynchronizer.isLoadSuccess(),
+ getResources().getConfiguration().locale));
+ mProgressBar.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onParsePostFail() {
+ Toast.makeText(getActivity(), "Error parsing data", Toast.LENGTH_SHORT).show();
+ Log.i("Post fetch error", "Error parsing data");
+ mProgressBar.setVisibility(View.GONE);
+ }
+ });
}
}
}, new Response.ErrorListener() {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostPaginationScrollListener.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostPaginationScrollListener.java
index 2ee6478a..6aa01cf4 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostPaginationScrollListener.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostPaginationScrollListener.java
@@ -19,6 +19,7 @@ import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.ArrayList;
+import java.util.Locale;
import java.util.Map;
/**
@@ -39,6 +40,7 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
private boolean isBestPost;
private boolean isLoading;
private boolean loadSuccess;
+ private Locale locale;
private String mLastItem;
private RequestQueue mRequestQueue;
private RequestQueue mAcquireAccessTokenRequestQueue;
@@ -46,7 +48,7 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
PostPaginationScrollListener(Context context, LinearLayoutManager layoutManager, PostRecyclerViewAdapter adapter,
String lastItem, ArrayList<PostData> postData, PaginationSynchronizer paginationSynchronizer,
RequestQueue acquireAccessTokenRequestQueue, final String queryPostUrl,
- final boolean isBestPost, boolean isLoading, boolean loadSuccess) {
+ final boolean isBestPost, boolean isLoading, boolean loadSuccess, Locale locale) {
if(context != null) {
this.mContext = context;
this.mLayoutManager = layoutManager;
@@ -59,6 +61,7 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
this.isBestPost = isBestPost;
this.isLoading = isLoading;
this.loadSuccess = loadSuccess;
+ this.locale = locale;
mRequestQueue = Volley.newRequestQueue(mContext);
mAcquireAccessTokenRequestQueue = Volley.newRequestQueue(mContext);
@@ -117,7 +120,7 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("response", response);
clipboard.setPrimaryClip(clip);
- new ParsePost(mContext, new ParsePost.ParsePostListener() {
+ ParsePost.parsePost(response, mPostData, locale, new ParsePost.ParsePostListener() {
@Override
public void onParsePostSuccess(ArrayList<PostData> bestPostData, String lastItem) {
mAdapter.notifyDataSetChanged();
@@ -136,7 +139,7 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
Log.i("Best post", "Error parsing data");
loadFailed();
}
- }).parsePost(response, mPostData);
+ });
}
}, new Response.ErrorListener() {
@Override
@@ -190,7 +193,7 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("response", response);
clipboard.setPrimaryClip(clip);
- new ParsePost(mContext, new ParsePost.ParsePostListener() {
+ ParsePost.parsePost(response, mPostData, locale, new ParsePost.ParsePostListener() {
@Override
public void onParsePostSuccess(ArrayList<PostData> bestPostData, String lastItem) {
mAdapter.notifyDataSetChanged();
@@ -209,7 +212,7 @@ class PostPaginationScrollListener extends RecyclerView.OnScrollListener {
Log.i("Best post", "Error parsing data");
loadFailed();
}
- }).parsePost(response, mPostData);
+ });
}
}, new Response.ErrorListener() {
@Override
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/RedditAPI.java b/app/src/main/java/ml/docilealligator/infinityforreddit/RedditAPI.java
new file mode 100644
index 00000000..5e4c5558
--- /dev/null
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/RedditAPI.java
@@ -0,0 +1,10 @@
+package ml.docilealligator.infinityforreddit;
+
+import retrofit2.Call;
+import retrofit2.http.GET;
+import retrofit2.http.Path;
+
+public interface RedditAPI {
+ @GET("{subredditNamePrefixed}/comments/{article}.json?raw_json=1")
+ Call<String> getComments(@Path("subredditNamePrefixed") String subredditNamePrefixed, @Path("article") String article);
+}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java
index 14323edf..052e675e 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewPostDetailActivity.java
@@ -61,7 +61,6 @@ public class ViewPostDetailActivity extends AppCompatActivity {
private RequestQueue mVoteThingRequestQueue;
private RequestQueue mAcquireAccessTokenRequestQueue;
- private RequestQueue mCommentQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -143,7 +142,6 @@ public class ViewPostDetailActivity extends AppCompatActivity {
mRecyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
mVoteThingRequestQueue = Volley.newRequestQueue(this);
mAcquireAccessTokenRequestQueue = Volley.newRequestQueue(this);
- mCommentQueue = Volley.newRequestQueue(this);
subredditTextView.setText(mPostData.getSubredditNamePrefixed());
postTimeTextView.setText(mPostData.getPostTime());
@@ -494,24 +492,25 @@ public class ViewPostDetailActivity extends AppCompatActivity {
private void queryComment() {
mCommentProgressbar.setVisibility(View.VISIBLE);
mNoCommentWrapperLinearLayout.setVisibility(View.GONE);
- new FetchComment(mCommentQueue, mPostData.getSubredditNamePrefixed(), mPostData.getId()).queryComment(new FetchComment.FetchCommentListener() {
+ new FetchComment(mPostData.getSubredditNamePrefixed(), mPostData.getId()).queryComment(new FetchComment.FetchCommentListener() {
@Override
public void onFetchCommentSuccess(String response) {
- new ParseComment().parseComment(ViewPostDetailActivity.this, response, new ArrayList<CommentData>(), new ParseComment.ParseCommentListener() {
- @Override
- public void onParseCommentSuccess(ArrayList<CommentData> commentData, int moreCommentCount) {
- mCommentProgressbar.setVisibility(View.GONE);
- mMoreCommentCount = moreCommentCount;
- if(commentData.size() > 0) {
- CommentRecyclerViewAdapter adapter = new CommentRecyclerViewAdapter(
- ViewPostDetailActivity.this, commentData, mVoteThingRequestQueue, mAcquireAccessTokenRequestQueue);
- mRecyclerView.setAdapter(adapter);
- mCommentCardView.setVisibility(View.VISIBLE);
- } else {
- mNoCommentWrapperLinearLayout.setVisibility(View.VISIBLE);
- Glide.with(ViewPostDetailActivity.this).load(R.drawable.no_comment_indicator).into(mNoCommentImageView);
- }
- }
+ ParseComment.parseComment(response, new ArrayList<CommentData>(),
+ getResources().getConfiguration().locale, new ParseComment.ParseCommentListener() {
+ @Override
+ public void onParseCommentSuccess(ArrayList<CommentData> commentData, int moreCommentCount) {
+ mCommentProgressbar.setVisibility(View.GONE);
+ mMoreCommentCount = moreCommentCount;
+ if (commentData.size() > 0) {
+ CommentRecyclerViewAdapter adapter = new CommentRecyclerViewAdapter(
+ ViewPostDetailActivity.this, commentData, mVoteThingRequestQueue, mAcquireAccessTokenRequestQueue);
+ mRecyclerView.setAdapter(adapter);
+ mCommentCardView.setVisibility(View.VISIBLE);
+ } else {
+ mNoCommentWrapperLinearLayout.setVisibility(View.VISIBLE);
+ Glide.with(ViewPostDetailActivity.this).load(R.drawable.no_comment_indicator).into(mNoCommentImageView);
+ }
+ }
@Override
public void onParseCommentFail() {
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java
index 3cced2cb..66fd16f8 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/ViewSubredditDetailActivity.java
@@ -140,7 +140,7 @@ public class ViewSubredditDetailActivity extends AppCompatActivity {
new FetchSubredditData(Volley.newRequestQueue(this), subredditName).querySubredditData(new FetchSubredditData.FetchSubredditDataListener() {
@Override
public void onFetchSubredditDataSuccess(String response) {
- new ParseSubredditData().parseComment(response, new ParseSubredditData.ParseSubredditDataListener() {
+ ParseSubredditData.parseComment(response, new ParseSubredditData.ParseSubredditDataListener() {
@Override
public void onParseSubredditDataSuccess(SubredditData subredditData, int nCurrentOnlineSubscribers) {
new InsertSubredditDataAsyncTask(SubredditRoomDatabase.getDatabase(ViewSubredditDetailActivity.this), subredditData)