mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 04:37:25 +01:00
Fixed a bug which causes the app to crash when there is no comment in a post. Add a no comment placeholder which is displayed when there is no comment in a post.
This commit is contained in:
parent
c0eaf2d3bb
commit
eb973138f7
@ -1,5 +1,7 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
|
import android.net.Uri;
|
||||||
|
|
||||||
import com.android.volley.Request;
|
import com.android.volley.Request;
|
||||||
import com.android.volley.RequestQueue;
|
import com.android.volley.RequestQueue;
|
||||||
import com.android.volley.Response;
|
import com.android.volley.Response;
|
||||||
@ -25,7 +27,12 @@ class FetchComment {
|
|||||||
|
|
||||||
void queryComment(FetchCommentListener fetchCommentListener) {
|
void queryComment(FetchCommentListener fetchCommentListener) {
|
||||||
mFetchCommentListener = fetchCommentListener;
|
mFetchCommentListener = fetchCommentListener;
|
||||||
StringRequest commentRequest = new StringRequest(Request.Method.GET, RedditUtils.getQueryCommentUri(subredditName, article), new Response.Listener<String>() {
|
|
||||||
|
Uri uri = Uri.parse(RedditUtils.getQueryCommentUri(subredditName, article))
|
||||||
|
.buildUpon().appendQueryParameter(RedditUtils.RAW_JSON_KEY, RedditUtils.RAW_JSON_VALUE)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
StringRequest commentRequest = new StringRequest(Request.Method.GET, uri.toString(), new Response.Listener<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(String response) {
|
public void onResponse(String response) {
|
||||||
mFetchCommentListener.onFetchCommentSuccess(response);
|
mFetchCommentListener.onFetchCommentSuccess(response);
|
||||||
|
@ -53,8 +53,13 @@ class ParseComment {
|
|||||||
int actualCommentLength;
|
int actualCommentLength;
|
||||||
|
|
||||||
JSONArray allComments = jsonResponse.getJSONObject(1).getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
JSONArray allComments = jsonResponse.getJSONObject(1).getJSONObject(JSONUtils.DATA_KEY).getJSONArray(JSONUtils.CHILDREN_KEY);
|
||||||
|
if(allComments.length() == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
JSONObject more = allComments.getJSONObject(allComments.length() - 1).getJSONObject(JSONUtils.DATA_KEY);
|
JSONObject more = allComments.getJSONObject(allComments.length() - 1).getJSONObject(JSONUtils.DATA_KEY);
|
||||||
|
|
||||||
|
//Maybe children contain only comments and no more info
|
||||||
if(more.has(JSONUtils.COUNT_KEY)) {
|
if(more.has(JSONUtils.COUNT_KEY)) {
|
||||||
moreCommentCount = more.getInt(JSONUtils.COUNT_KEY);
|
moreCommentCount = more.getInt(JSONUtils.COUNT_KEY);
|
||||||
actualCommentLength = allComments.length() - 1;
|
actualCommentLength = allComments.length() - 1;
|
||||||
@ -87,7 +92,6 @@ class ParseComment {
|
|||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
parseFailed = true;
|
parseFailed = true;
|
||||||
Log.i("parse comment error", e.getMessage());
|
Log.i("parse comment error", e.getMessage());
|
||||||
mParseCommentListener.onParseCommentFail();
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ import android.support.v7.widget.RecyclerView;
|
|||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@ -48,6 +49,9 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
private CardView mCommentCardView;
|
private CardView mCommentCardView;
|
||||||
private RecyclerView mRecyclerView;
|
private RecyclerView mRecyclerView;
|
||||||
|
|
||||||
|
private LinearLayout mNoCommentWrapperLinearLayout;
|
||||||
|
private ImageView mNoCommentImageView;
|
||||||
|
|
||||||
private RequestQueue mVoteThingQueue;
|
private RequestQueue mVoteThingQueue;
|
||||||
private RequestQueue mCommentQueue;
|
private RequestQueue mCommentQueue;
|
||||||
|
|
||||||
@ -86,6 +90,9 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
mCommentCardView = findViewById(R.id.comment_card_view_view_post_detail);
|
mCommentCardView = findViewById(R.id.comment_card_view_view_post_detail);
|
||||||
mRecyclerView = findViewById(R.id.recycler_view_view_post_detail);
|
mRecyclerView = findViewById(R.id.recycler_view_view_post_detail);
|
||||||
|
|
||||||
|
mNoCommentWrapperLinearLayout = findViewById(R.id.no_comment_wrapper_linear_layout_view_post_detail);
|
||||||
|
mNoCommentImageView = findViewById(R.id.no_comment_image_view_view_post_detail);
|
||||||
|
|
||||||
if(mPostData.getSubredditIconUrl() == null) {
|
if(mPostData.getSubredditIconUrl() == null) {
|
||||||
new LoadSubredditIconAsyncTask(this, subredditIconCircleImageView,
|
new LoadSubredditIconAsyncTask(this, subredditIconCircleImageView,
|
||||||
SubredditRoomDatabase.getDatabase(this).subredditDao(), mPostData.getSubredditName(),
|
SubredditRoomDatabase.getDatabase(this).subredditDao(), mPostData.getSubredditName(),
|
||||||
@ -279,6 +286,7 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
|
|
||||||
private void queryComment() {
|
private void queryComment() {
|
||||||
mCommentProgressbar.setVisibility(View.VISIBLE);
|
mCommentProgressbar.setVisibility(View.VISIBLE);
|
||||||
|
mNoCommentWrapperLinearLayout.setVisibility(View.GONE);
|
||||||
new FetchComment(mCommentQueue, mPostData.getSubredditName(), mPostData.getId()).queryComment(new FetchComment.FetchCommentListener() {
|
new FetchComment(mCommentQueue, mPostData.getSubredditName(), mPostData.getId()).queryComment(new FetchComment.FetchCommentListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFetchCommentSuccess(String response) {
|
public void onFetchCommentSuccess(String response) {
|
||||||
@ -291,6 +299,9 @@ public class ViewPostDetailActivity extends AppCompatActivity {
|
|||||||
CommentRecyclerViewAdapter adapter = new CommentRecyclerViewAdapter(ViewPostDetailActivity.this, commentData, mVoteThingQueue);
|
CommentRecyclerViewAdapter adapter = new CommentRecyclerViewAdapter(ViewPostDetailActivity.this, commentData, mVoteThingQueue);
|
||||||
mRecyclerView.setAdapter(adapter);
|
mRecyclerView.setAdapter(adapter);
|
||||||
mCommentCardView.setVisibility(View.VISIBLE);
|
mCommentCardView.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
mNoCommentWrapperLinearLayout.setVisibility(View.VISIBLE);
|
||||||
|
Glide.with(ViewPostDetailActivity.this).load(R.drawable.no_comment_indicator).into(mNoCommentImageView);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
app/src/main/res/drawable/no_comment_indicator.png
Normal file
BIN
app/src/main/res/drawable/no_comment_indicator.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 59 KiB |
@ -250,6 +250,30 @@
|
|||||||
|
|
||||||
</android.support.v7.widget.CardView>
|
</android.support.v7.widget.CardView>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/no_comment_wrapper_linear_layout_view_post_detail"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="48dp"
|
||||||
|
android:layout_marginBottom="48dp"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:visibility="gone">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/no_comment_image_view_view_post_detail"
|
||||||
|
android:layout_width="150dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center_horizontal" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_gravity="center_horizontal"
|
||||||
|
android:text="@string/no_comments_yet"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
<string name="load_comment_failed">Error loading comments</string>
|
<string name="load_comment_failed">Error loading comments</string>
|
||||||
<string name="retry">Retry</string>
|
<string name="retry">Retry</string>
|
||||||
<string name="comments">Comments</string>
|
<string name="comments">Comments</string>
|
||||||
|
<string name="no_comments_yet">No comments yet. Write a comment?</string>
|
||||||
|
|
||||||
<string name="nsfw">NSFW</string>
|
<string name="nsfw">NSFW</string>
|
||||||
<string name="karma_info">Karma: %1$d</string>
|
<string name="karma_info">Karma: %1$d</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user