mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-01-11 18:57:11 +01:00
Vote status is now correctly shown when viewing post details. Fixed following user failed.
This commit is contained in:
parent
38ed89fc30
commit
313eb77ddc
@ -1296,7 +1296,8 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
||||
mVisibleComments.get(commentPosition).setLoadMoreChildrenFailed(false);
|
||||
placeholderTextView.setText(R.string.loading);
|
||||
|
||||
FetchComment.fetchMoreComment(mRetrofit, parentComment.getMoreChildrenFullnames(),
|
||||
Retrofit retrofit = mAccessToken == null ? mRetrofit : mOauthRetrofit;
|
||||
FetchComment.fetchMoreComment(retrofit, mAccessToken, parentComment.getMoreChildrenFullnames(),
|
||||
parentComment.getMoreChildrenStartingIndex(), parentComment.getDepth() + 1, mLocale,
|
||||
new FetchComment.FetchMoreCommentListener() {
|
||||
@Override
|
||||
|
@ -37,7 +37,7 @@ class CommentData implements Parcelable {
|
||||
private boolean loadMoreChildrenFailed;
|
||||
|
||||
CommentData(String id, String fullName, String author, String linkAuthor, String commentTime, String commentContent,
|
||||
String linkId, String subredditName, String parentId, int score, boolean isSubmitter, String permalink,
|
||||
String linkId, String subredditName, String parentId, int score, int voteType, boolean isSubmitter, String permalink,
|
||||
int depth, boolean collapsed, boolean hasReply, boolean scoreHidden) {
|
||||
this.id = id;
|
||||
this.fullName = fullName;
|
||||
@ -49,6 +49,7 @@ class CommentData implements Parcelable {
|
||||
this.subredditName = subredditName;
|
||||
this.parentId = parentId;
|
||||
this.score = score;
|
||||
this.voteType = voteType;
|
||||
this.isSubmitter = isSubmitter;
|
||||
this.permalink = RedditUtils.API_BASE_URI + permalink;
|
||||
this.depth = depth;
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Locale;
|
||||
@ -21,15 +22,24 @@ class FetchComment {
|
||||
void onFetchMoreCommentFailed();
|
||||
}
|
||||
|
||||
static void fetchComments(Retrofit retrofit, String article, String commentId,
|
||||
static void fetchComments(Retrofit retrofit, @Nullable String accessToken, String article, String commentId,
|
||||
Locale locale, FetchCommentListener fetchCommentListener) {
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> comments;
|
||||
if(commentId == null) {
|
||||
comments = api.getPostAndCommentsById(article);
|
||||
if(accessToken == null) {
|
||||
if(commentId == null) {
|
||||
comments = api.getPostAndCommentsById(article);
|
||||
} else {
|
||||
comments = api.getPostAndCommentsSingleThreadById(article, commentId);
|
||||
}
|
||||
} else {
|
||||
comments = api.getPostAndCommentsSingleThreadById(article, commentId);
|
||||
if(commentId == null) {
|
||||
comments = api.getPostAndCommentsByIdOauth(article, RedditUtils.getOAuthHeader(accessToken));
|
||||
} else {
|
||||
comments = api.getPostAndCommentsSingleThreadByIdOauth(article, commentId, RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
}
|
||||
|
||||
comments.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
@ -60,7 +70,8 @@ class FetchComment {
|
||||
});
|
||||
}
|
||||
|
||||
static void fetchMoreComment(Retrofit retrofit, ArrayList<String> allChildren, int startingIndex,
|
||||
static void fetchMoreComment(Retrofit retrofit, @Nullable String accessToken,
|
||||
ArrayList<String> allChildren, int startingIndex,
|
||||
int depth, Locale locale, FetchMoreCommentListener fetchMoreCommentListener) {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for(int i = 0; i < 100; i++) {
|
||||
@ -77,8 +88,13 @@ class FetchComment {
|
||||
stringBuilder.deleteCharAt(stringBuilder.length() - 1);
|
||||
|
||||
RedditAPI api = retrofit.create(RedditAPI.class);
|
||||
Call<String> moreComments;
|
||||
if(accessToken == null) {
|
||||
moreComments = api.getInfo(stringBuilder.toString());
|
||||
} else {
|
||||
moreComments = api.getInfoOauth(stringBuilder.toString(), RedditUtils.getOAuthHeader(accessToken));
|
||||
}
|
||||
|
||||
Call<String> moreComments = api.getInfo(stringBuilder.toString());
|
||||
moreComments.enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
|
@ -2,7 +2,6 @@ package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.text.Html;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@ -15,6 +14,10 @@ import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Locale;
|
||||
|
||||
import static ml.docilealligator.infinityforreddit.CommentData.VOTE_TYPE_DOWNVOTE;
|
||||
import static ml.docilealligator.infinityforreddit.CommentData.VOTE_TYPE_NO_VOTE;
|
||||
import static ml.docilealligator.infinityforreddit.CommentData.VOTE_TYPE_UPVOTE;
|
||||
|
||||
class ParseComment {
|
||||
interface ParseCommentListener {
|
||||
void onParseCommentSuccess(ArrayList<CommentData> expandedComments, String parentId,
|
||||
@ -49,9 +52,6 @@ class ParseComment {
|
||||
new ParseCommentAsyncTask(childrenArray, commentData, locale, null, depth, parseCommentListener).execute();
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
if(e.getMessage() != null) {
|
||||
Log.i("comment json error", e.getMessage());
|
||||
}
|
||||
parseCommentListener.onParseCommentFailed();
|
||||
}
|
||||
}
|
||||
@ -94,9 +94,6 @@ class ParseComment {
|
||||
expandChildren(newComments, expandedNewComments);
|
||||
} catch (JSONException e) {
|
||||
parseFailed = true;
|
||||
if(e.getMessage() != null) {
|
||||
Log.i("parse comment error", e.getMessage());
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -226,6 +223,13 @@ class ParseComment {
|
||||
}
|
||||
String permalink = Html.fromHtml(singleCommentData.getString(JSONUtils.PERMALINK_KEY)).toString();
|
||||
int score = singleCommentData.getInt(JSONUtils.SCORE_KEY);
|
||||
int voteType;
|
||||
if(singleCommentData.isNull(JSONUtils.LIKES_KEY)) {
|
||||
voteType = VOTE_TYPE_NO_VOTE;
|
||||
} else {
|
||||
voteType = singleCommentData.getBoolean(JSONUtils.LIKES_KEY) ? VOTE_TYPE_UPVOTE : VOTE_TYPE_DOWNVOTE;
|
||||
score -= voteType;
|
||||
}
|
||||
long submitTime = singleCommentData.getLong(JSONUtils.CREATED_UTC_KEY) * 1000;
|
||||
boolean scoreHidden = singleCommentData.getBoolean(JSONUtils.SCORE_HIDDEN_KEY);
|
||||
|
||||
@ -242,7 +246,7 @@ class ParseComment {
|
||||
boolean hasReply = !(singleCommentData.get(JSONUtils.REPLIES_KEY) instanceof String);
|
||||
|
||||
return new CommentData(id, fullName, author, linkAuthor, formattedSubmitTime, commentContent,
|
||||
linkId, subredditName, parentId, score, isSubmitter, permalink, depth, collapsed,
|
||||
linkId, subredditName, parentId, score, voteType, isSubmitter, permalink, depth, collapsed,
|
||||
hasReply, scoreHidden);
|
||||
}
|
||||
|
||||
|
@ -73,6 +73,9 @@ public interface RedditAPI {
|
||||
@GET("/api/info.json?raw_json=1")
|
||||
Call<String> getInfo(@Query("id") String id);
|
||||
|
||||
@GET("/api/info.json?raw_json=1")
|
||||
Call<String> getInfoOauth(@Query("id") String id, @HeaderMap Map<String, String> headers);
|
||||
|
||||
@GET("subreddits/search.json?raw_json=1")
|
||||
Call<String> searchSubreddits(@Query("q") String subredditName, @Query("after") String after,
|
||||
@Query("sort") String sort);
|
||||
|
@ -1,7 +1,6 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import android.os.AsyncTask;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
@ -99,7 +98,7 @@ class UserFollowing {
|
||||
String accountName, boolean isSubscribing) {
|
||||
this.subscribedUserDao = subscribedUserDao;
|
||||
this.subscribedUserData = new SubscribedUserData(userData.getName(), userData.getIconUrl(),
|
||||
userData.getName());
|
||||
accountName);
|
||||
this.accountName = accountName;
|
||||
this.isSubscribing = isSubscribing;
|
||||
}
|
||||
|
@ -548,7 +548,8 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
commentId = mSingleCommentId;
|
||||
}
|
||||
|
||||
FetchComment.fetchComments(mRetrofit, mPost.getId(), commentId, mLocale, new FetchComment.FetchCommentListener() {
|
||||
Retrofit retrofit = mAccessToken == null ? mRetrofit : mOauthRetrofit;
|
||||
FetchComment.fetchComments(retrofit, mAccessToken, mPost.getId(), commentId, mLocale, new FetchComment.FetchCommentListener() {
|
||||
@Override
|
||||
public void onFetchCommentSuccess(ArrayList<CommentData> expandedComments,
|
||||
String parentId, ArrayList<String> children) {
|
||||
@ -597,7 +598,9 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
}
|
||||
|
||||
isLoadingMoreChildren = true;
|
||||
FetchComment.fetchMoreComment(mRetrofit, children, mChildrenStartingIndex,
|
||||
|
||||
Retrofit retrofit = mAccessToken == null ? mRetrofit : mOauthRetrofit;
|
||||
FetchComment.fetchMoreComment(retrofit, mAccessToken, children, mChildrenStartingIndex,
|
||||
0, mLocale, new FetchComment.FetchMoreCommentListener() {
|
||||
@Override
|
||||
public void onFetchMoreCommentSuccess(ArrayList<CommentData> expandedComments, int childrenStartingIndex) {
|
||||
|
Loading…
Reference in New Issue
Block a user