mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-01-13 19:57:12 +01:00
Delete posts and comments
This comments makes the delete post and delete comment buttons functional. Closes #29
This commit is contained in:
parent
3a66a79f49
commit
065fcedd34
@ -5,7 +5,9 @@ import androidx.annotation.NonNull;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import eu.toldi.infinityforlemmy.apis.RedditAPI;
|
import eu.toldi.infinityforlemmy.apis.LemmyAPI;
|
||||||
|
import eu.toldi.infinityforlemmy.dto.DeleteCommentDTO;
|
||||||
|
import eu.toldi.infinityforlemmy.dto.DeletePostDTO;
|
||||||
import eu.toldi.infinityforlemmy.utils.APIUtils;
|
import eu.toldi.infinityforlemmy.utils.APIUtils;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.Callback;
|
import retrofit2.Callback;
|
||||||
@ -13,10 +15,11 @@ import retrofit2.Response;
|
|||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
|
|
||||||
public class DeleteThing {
|
public class DeleteThing {
|
||||||
public static void delete(Retrofit oauthRetrofit, String fullname, String accessToken, DeleteThingListener deleteThingListener) {
|
|
||||||
|
public static void deletePost(Retrofit retrofit, int post_id, String accessToken, DeleteThingListener deleteThingListener) {
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put(APIUtils.ID_KEY, fullname);
|
params.put(APIUtils.ID_KEY, String.valueOf(post_id));
|
||||||
oauthRetrofit.create(RedditAPI.class).delete(APIUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
retrofit.create(LemmyAPI.class).postDelete(new DeletePostDTO(post_id, true, accessToken)).enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
if (response.isSuccessful()) {
|
if (response.isSuccessful()) {
|
||||||
@ -33,6 +36,27 @@ public class DeleteThing {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void deleteComment(Retrofit retrofit, int comment_id, String accessToken, DeleteThingListener deleteThingListener) {
|
||||||
|
Map<String, String> params = new HashMap<>();
|
||||||
|
params.put(APIUtils.ID_KEY, String.valueOf(comment_id));
|
||||||
|
retrofit.create(LemmyAPI.class).commentDelete(new DeleteCommentDTO(comment_id, true, accessToken)).enqueue(new Callback<String>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
|
if (response.isSuccessful()) {
|
||||||
|
deleteThingListener.deleteSuccess();
|
||||||
|
} else {
|
||||||
|
deleteThingListener.deleteFailed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||||
|
deleteThingListener.deleteFailed();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public interface DeleteThingListener {
|
public interface DeleteThingListener {
|
||||||
void deleteSuccess();
|
void deleteSuccess();
|
||||||
|
|
||||||
|
@ -425,11 +425,11 @@ public class ViewPostDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void deleteComment(String fullName, int position) {
|
public void deleteComment(int comment_id, int position) {
|
||||||
if (sectionsPagerAdapter != null) {
|
if (sectionsPagerAdapter != null) {
|
||||||
ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment();
|
ViewPostDetailFragment fragment = sectionsPagerAdapter.getCurrentFragment();
|
||||||
if (fragment != null) {
|
if (fragment != null) {
|
||||||
fragment.deleteComment(fullName, position);
|
fragment.deleteComment(comment_id, position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1098,12 +1098,12 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteComment(String fullName) {
|
public void deleteComment(int commentId) {
|
||||||
new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme)
|
new MaterialAlertDialogBuilder(this, R.style.MaterialAlertDialogTheme)
|
||||||
.setTitle(R.string.delete_this_comment)
|
.setTitle(R.string.delete_this_comment)
|
||||||
.setMessage(R.string.are_you_sure)
|
.setMessage(R.string.are_you_sure)
|
||||||
.setPositiveButton(R.string.delete, (dialogInterface, i)
|
.setPositiveButton(R.string.delete, (dialogInterface, i)
|
||||||
-> DeleteThing.delete(mOauthRetrofit, fullName, mAccessToken, new DeleteThing.DeleteThingListener() {
|
-> DeleteThing.deleteComment(mRetrofit.getRetrofit(), commentId, mAccessToken, new DeleteThing.DeleteThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void deleteSuccess() {
|
public void deleteSuccess() {
|
||||||
Toast.makeText(ViewUserDetailActivity.this, R.string.delete_post_success, Toast.LENGTH_SHORT).show();
|
Toast.makeText(ViewUserDetailActivity.this, R.string.delete_post_success, Toast.LENGTH_SHORT).show();
|
||||||
|
@ -161,7 +161,7 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
|||||||
|
|
||||||
public CommentsRecyclerViewAdapter(BaseActivity activity, ViewPostDetailFragment fragment,
|
public CommentsRecyclerViewAdapter(BaseActivity activity, ViewPostDetailFragment fragment,
|
||||||
CustomThemeWrapper customThemeWrapper,
|
CustomThemeWrapper customThemeWrapper,
|
||||||
Executor executor, Retrofit retrofit, Retrofit oauthRetrofit,
|
Executor executor, Retrofit retrofit,
|
||||||
String accessToken, String accountName,
|
String accessToken, String accountName,
|
||||||
Post post, Locale locale, Integer singleCommentId,
|
Post post, Locale locale, Integer singleCommentId,
|
||||||
boolean isSingleCommentThreadMode,
|
boolean isSingleCommentThreadMode,
|
||||||
@ -171,7 +171,6 @@ public class CommentsRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVi
|
|||||||
mFragment = fragment;
|
mFragment = fragment;
|
||||||
mExecutor = executor;
|
mExecutor = executor;
|
||||||
mRetrofit = retrofit;
|
mRetrofit = retrofit;
|
||||||
mOauthRetrofit = oauthRetrofit;
|
|
||||||
mGlide = Glide.with(activity);
|
mGlide = Glide.with(activity);
|
||||||
mSecondaryTextColor = customThemeWrapper.getSecondaryTextColor();
|
mSecondaryTextColor = customThemeWrapper.getSecondaryTextColor();
|
||||||
mCommentTextColor = customThemeWrapper.getCommentColor();
|
mCommentTextColor = customThemeWrapper.getCommentColor();
|
||||||
|
@ -214,7 +214,7 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
|
|
||||||
public PostDetailRecyclerViewAdapter(BaseActivity activity, ViewPostDetailFragment fragment,
|
public PostDetailRecyclerViewAdapter(BaseActivity activity, ViewPostDetailFragment fragment,
|
||||||
Executor executor, CustomThemeWrapper customThemeWrapper,
|
Executor executor, CustomThemeWrapper customThemeWrapper,
|
||||||
Retrofit retrofit, Retrofit oauthRetrofit, Retrofit gfycatRetrofit,
|
Retrofit retrofit, Retrofit gfycatRetrofit,
|
||||||
Retrofit redgifsRetrofit, Provider<StreamableAPI> streamableApiProvider,
|
Retrofit redgifsRetrofit, Provider<StreamableAPI> streamableApiProvider,
|
||||||
RedditDataRoomDatabase redditDataRoomDatabase, RequestManager glide,
|
RedditDataRoomDatabase redditDataRoomDatabase, RequestManager glide,
|
||||||
boolean separatePostAndComments, String accessToken,
|
boolean separatePostAndComments, String accessToken,
|
||||||
@ -229,7 +229,6 @@ public class PostDetailRecyclerViewAdapter extends RecyclerView.Adapter<Recycler
|
|||||||
mFragment = fragment;
|
mFragment = fragment;
|
||||||
mExecutor = executor;
|
mExecutor = executor;
|
||||||
mRetrofit = retrofit;
|
mRetrofit = retrofit;
|
||||||
mOauthRetrofit = oauthRetrofit;
|
|
||||||
mGfycatRetrofit = gfycatRetrofit;
|
mGfycatRetrofit = gfycatRetrofit;
|
||||||
mRedgifsRetrofit = redgifsRetrofit;
|
mRedgifsRetrofit = redgifsRetrofit;
|
||||||
mStreamableApiProvider = streamableApiProvider;
|
mStreamableApiProvider = streamableApiProvider;
|
||||||
|
@ -5,6 +5,8 @@ import com.google.common.util.concurrent.ListenableFuture;
|
|||||||
import eu.toldi.infinityforlemmy.dto.AccountLoginDTO;
|
import eu.toldi.infinityforlemmy.dto.AccountLoginDTO;
|
||||||
import eu.toldi.infinityforlemmy.dto.CommentDTO;
|
import eu.toldi.infinityforlemmy.dto.CommentDTO;
|
||||||
import eu.toldi.infinityforlemmy.dto.CommentVoteDTO;
|
import eu.toldi.infinityforlemmy.dto.CommentVoteDTO;
|
||||||
|
import eu.toldi.infinityforlemmy.dto.DeleteCommentDTO;
|
||||||
|
import eu.toldi.infinityforlemmy.dto.DeletePostDTO;
|
||||||
import eu.toldi.infinityforlemmy.dto.EditCommentDTO;
|
import eu.toldi.infinityforlemmy.dto.EditCommentDTO;
|
||||||
import eu.toldi.infinityforlemmy.dto.EditPostDTO;
|
import eu.toldi.infinityforlemmy.dto.EditPostDTO;
|
||||||
import eu.toldi.infinityforlemmy.dto.FollowCommunityDTO;
|
import eu.toldi.infinityforlemmy.dto.FollowCommunityDTO;
|
||||||
@ -48,6 +50,10 @@ public interface LemmyAPI {
|
|||||||
@PUT("api/v3/post")
|
@PUT("api/v3/post")
|
||||||
Call<String> postUpdate(@Body EditPostDTO params);
|
Call<String> postUpdate(@Body EditPostDTO params);
|
||||||
|
|
||||||
|
@Headers("Content-Type: application/json")
|
||||||
|
@POST("api/v3/post/delete")
|
||||||
|
Call<String> postDelete(@Body DeletePostDTO params);
|
||||||
|
|
||||||
@GET("api/v3/user")
|
@GET("api/v3/user")
|
||||||
ListenableFuture<Response<String>> getUserPosts(
|
ListenableFuture<Response<String>> getUserPosts(
|
||||||
@Query("username") String username,
|
@Query("username") String username,
|
||||||
@ -159,6 +165,10 @@ public interface LemmyAPI {
|
|||||||
@POST("api/v3/comment")
|
@POST("api/v3/comment")
|
||||||
Call<String> postComment(@Body CommentDTO params);
|
Call<String> postComment(@Body CommentDTO params);
|
||||||
|
|
||||||
|
@Headers("Content-Type: application/json")
|
||||||
|
@POST("api/v3/comment/delete")
|
||||||
|
Call<String> commentDelete(@Body DeleteCommentDTO params);
|
||||||
|
|
||||||
@Headers("Content-Type: application/json")
|
@Headers("Content-Type: application/json")
|
||||||
@PUT("api/v3/comment")
|
@PUT("api/v3/comment")
|
||||||
Call<String> commentEdit(@Body EditCommentDTO params);
|
Call<String> commentEdit(@Body EditCommentDTO params);
|
||||||
|
@ -127,9 +127,9 @@ public class CommentMoreBottomSheetFragment extends LandscapeExpandedRoundedBott
|
|||||||
deleteTextView.setOnClickListener(view -> {
|
deleteTextView.setOnClickListener(view -> {
|
||||||
dismiss();
|
dismiss();
|
||||||
if (activity instanceof ViewPostDetailActivity) {
|
if (activity instanceof ViewPostDetailActivity) {
|
||||||
((ViewPostDetailActivity) activity).deleteComment(comment.getFullName(), bundle.getInt(EXTRA_POSITION));
|
((ViewPostDetailActivity) activity).deleteComment(comment.getId(), bundle.getInt(EXTRA_POSITION));
|
||||||
} else if (activity instanceof ViewUserDetailActivity) {
|
} else if (activity instanceof ViewUserDetailActivity) {
|
||||||
((ViewUserDetailActivity) activity).deleteComment(comment.getFullName());
|
((ViewUserDetailActivity) activity).deleteComment(comment.getId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,8 @@ public class Comment implements Parcelable {
|
|||||||
private int depth;
|
private int depth;
|
||||||
private int childCount;
|
private int childCount;
|
||||||
private boolean collapsed;
|
private boolean collapsed;
|
||||||
|
|
||||||
|
private boolean isDeleted;
|
||||||
private boolean hasReply;
|
private boolean hasReply;
|
||||||
private boolean saved;
|
private boolean saved;
|
||||||
private boolean isExpanded;
|
private boolean isExpanded;
|
||||||
@ -67,7 +69,7 @@ public class Comment implements Parcelable {
|
|||||||
long commentTimeMillis, String commentMarkdown, String commentRawText,
|
long commentTimeMillis, String commentMarkdown, String commentRawText,
|
||||||
String linkId, String communityName, String communityQualifiedName, Integer parentId, int score,
|
String linkId, String communityName, String communityQualifiedName, Integer parentId, int score,
|
||||||
int voteType, boolean isSubmitter, String distinguished, String permalink,
|
int voteType, boolean isSubmitter, String distinguished, String permalink,
|
||||||
int depth, boolean collapsed, boolean hasReply, boolean saved, long edited, String[] path) {
|
int depth, boolean collapsed, boolean hasReply, boolean saved, boolean deleted, long edited, String[] path) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.postId = postId;
|
this.postId = postId;
|
||||||
this.fullName = fullName;
|
this.fullName = fullName;
|
||||||
@ -90,6 +92,7 @@ public class Comment implements Parcelable {
|
|||||||
this.collapsed = collapsed;
|
this.collapsed = collapsed;
|
||||||
this.hasReply = hasReply;
|
this.hasReply = hasReply;
|
||||||
this.saved = saved;
|
this.saved = saved;
|
||||||
|
this.isDeleted = deleted;
|
||||||
this.isExpanded = false;
|
this.isExpanded = false;
|
||||||
this.hasExpandedBefore = false;
|
this.hasExpandedBefore = false;
|
||||||
this.editedTimeMillis = edited;
|
this.editedTimeMillis = edited;
|
||||||
|
@ -327,11 +327,12 @@ public class ParseComment {
|
|||||||
boolean collapsed = false;
|
boolean collapsed = false;
|
||||||
boolean hasReply = countsObj.getInt("child_count") > 0;
|
boolean hasReply = countsObj.getInt("child_count") > 0;
|
||||||
boolean saved = jsonObject.getBoolean("saved");
|
boolean saved = jsonObject.getBoolean("saved");
|
||||||
|
boolean deleted = commentObj.getBoolean("deleted");
|
||||||
long edited = 0;
|
long edited = 0;
|
||||||
|
|
||||||
Comment comment = new Comment(id, postID, fullName, author, authorQualifiedName, linkAuthor, commentTimeMillis,
|
Comment comment = new Comment(id, postID, fullName, author, authorQualifiedName, linkAuthor, commentTimeMillis,
|
||||||
commentMarkdown, commentRawText, linkId, communityName, communityQualifiedName, parentId,
|
commentMarkdown, commentRawText, linkId, communityName, communityQualifiedName, parentId,
|
||||||
score, voteType, isSubmitter, distinguished, permalink, depth, collapsed, hasReply, saved, edited, path);
|
score, voteType, isSubmitter, distinguished, permalink, depth, collapsed, hasReply, saved, deleted, edited, path);
|
||||||
int child_count = countsObj.getInt("child_count");
|
int child_count = countsObj.getInt("child_count");
|
||||||
comment.setChildCount(child_count);
|
comment.setChildCount(child_count);
|
||||||
return comment;
|
return comment;
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
package eu.toldi.infinityforlemmy.dto;
|
||||||
|
|
||||||
|
public class DeleteCommentDTO {
|
||||||
|
|
||||||
|
private int comment_id;
|
||||||
|
boolean deleted;
|
||||||
|
String auth;
|
||||||
|
|
||||||
|
public DeleteCommentDTO(int comment_id, boolean deleted, String auth) {
|
||||||
|
this.comment_id = comment_id;
|
||||||
|
this.deleted = deleted;
|
||||||
|
this.auth = auth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getComment_id() {
|
||||||
|
return comment_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDeleted() {
|
||||||
|
return deleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAuth() {
|
||||||
|
return auth;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package eu.toldi.infinityforlemmy.dto;
|
||||||
|
|
||||||
|
public class DeletePostDTO {
|
||||||
|
|
||||||
|
int post_id;
|
||||||
|
boolean deleted;
|
||||||
|
String auth;
|
||||||
|
|
||||||
|
public DeletePostDTO(int post_id, boolean deleted, String auth) {
|
||||||
|
this.post_id = post_id;
|
||||||
|
this.deleted = deleted;
|
||||||
|
this.auth = auth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPost_id() {
|
||||||
|
return post_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDeleted() {
|
||||||
|
return deleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAuth() {
|
||||||
|
return auth;
|
||||||
|
}
|
||||||
|
}
|
@ -85,7 +85,7 @@ import eu.toldi.infinityforlemmy.activities.SubmitCrosspostActivity;
|
|||||||
import eu.toldi.infinityforlemmy.activities.ViewPostDetailActivity;
|
import eu.toldi.infinityforlemmy.activities.ViewPostDetailActivity;
|
||||||
import eu.toldi.infinityforlemmy.adapters.CommentsRecyclerViewAdapter;
|
import eu.toldi.infinityforlemmy.adapters.CommentsRecyclerViewAdapter;
|
||||||
import eu.toldi.infinityforlemmy.adapters.PostDetailRecyclerViewAdapter;
|
import eu.toldi.infinityforlemmy.adapters.PostDetailRecyclerViewAdapter;
|
||||||
import eu.toldi.infinityforlemmy.apis.RedditAPI;
|
import eu.toldi.infinityforlemmy.apis.LemmyAPI;
|
||||||
import eu.toldi.infinityforlemmy.apis.StreamableAPI;
|
import eu.toldi.infinityforlemmy.apis.StreamableAPI;
|
||||||
import eu.toldi.infinityforlemmy.asynctasks.LoadUserData;
|
import eu.toldi.infinityforlemmy.asynctasks.LoadUserData;
|
||||||
import eu.toldi.infinityforlemmy.bottomsheetfragments.FlairBottomSheetFragment;
|
import eu.toldi.infinityforlemmy.bottomsheetfragments.FlairBottomSheetFragment;
|
||||||
@ -97,6 +97,7 @@ import eu.toldi.infinityforlemmy.comment.FetchRemovedCommentReveddit;
|
|||||||
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
|
import eu.toldi.infinityforlemmy.customtheme.CustomThemeWrapper;
|
||||||
import eu.toldi.infinityforlemmy.customviews.CustomToroContainer;
|
import eu.toldi.infinityforlemmy.customviews.CustomToroContainer;
|
||||||
import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
|
import eu.toldi.infinityforlemmy.customviews.LinearLayoutManagerBugFixed;
|
||||||
|
import eu.toldi.infinityforlemmy.dto.EditPostDTO;
|
||||||
import eu.toldi.infinityforlemmy.events.ChangeNSFWBlurEvent;
|
import eu.toldi.infinityforlemmy.events.ChangeNSFWBlurEvent;
|
||||||
import eu.toldi.infinityforlemmy.events.ChangeNetworkStatusEvent;
|
import eu.toldi.infinityforlemmy.events.ChangeNetworkStatusEvent;
|
||||||
import eu.toldi.infinityforlemmy.events.ChangeSpoilerBlurEvent;
|
import eu.toldi.infinityforlemmy.events.ChangeSpoilerBlurEvent;
|
||||||
@ -155,9 +156,6 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
@Named("reveddit")
|
@Named("reveddit")
|
||||||
Retrofit revedditRetrofit;
|
Retrofit revedditRetrofit;
|
||||||
@Inject
|
@Inject
|
||||||
@Named("oauth")
|
|
||||||
Retrofit mOauthRetrofit;
|
|
||||||
@Inject
|
|
||||||
@Named("gfycat")
|
@Named("gfycat")
|
||||||
Retrofit mGfycatRetrofit;
|
Retrofit mGfycatRetrofit;
|
||||||
@Inject
|
@Inject
|
||||||
@ -578,7 +576,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
|
|
||||||
private void bindView() {
|
private void bindView() {
|
||||||
if (mAccessToken != null && mMessageFullname != null) {
|
if (mAccessToken != null && mMessageFullname != null) {
|
||||||
ReadMessage.readMessage(mOauthRetrofit, mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
ReadMessage.readMessage(mRetrofit.getRetrofit(), mAccessToken, mMessageFullname, new ReadMessage.ReadMessageListener() {
|
||||||
@Override
|
@Override
|
||||||
public void readSuccess() {
|
public void readSuccess() {
|
||||||
mMessageFullname = null;
|
mMessageFullname = null;
|
||||||
@ -601,13 +599,13 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
setupMenu();
|
setupMenu();
|
||||||
|
|
||||||
mPostAdapter = new PostDetailRecyclerViewAdapter(activity,
|
mPostAdapter = new PostDetailRecyclerViewAdapter(activity,
|
||||||
this, mExecutor, mCustomThemeWrapper, mRetrofit.getRetrofit(), mOauthRetrofit, mGfycatRetrofit,
|
this, mExecutor, mCustomThemeWrapper, mRetrofit.getRetrofit(), mGfycatRetrofit,
|
||||||
mRedgifsRetrofit, mStreamableApiProvider, mRedditDataRoomDatabase, mGlide,
|
mRedgifsRetrofit, mStreamableApiProvider, mRedditDataRoomDatabase, mGlide,
|
||||||
mSeparatePostAndComments, mAccessToken, mAccountName, mPost, mLocale,
|
mSeparatePostAndComments, mAccessToken, mAccountName, mPost, mLocale,
|
||||||
mSharedPreferences, mCurrentAccountSharedPreferences, mNsfwAndSpoilerSharedPreferences, mPostDetailsSharedPreferences,
|
mSharedPreferences, mCurrentAccountSharedPreferences, mNsfwAndSpoilerSharedPreferences, mPostDetailsSharedPreferences,
|
||||||
mExoCreator, post -> EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition)));
|
mExoCreator, post -> EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition)));
|
||||||
mCommentsAdapter = new CommentsRecyclerViewAdapter(activity,
|
mCommentsAdapter = new CommentsRecyclerViewAdapter(activity,
|
||||||
this, mCustomThemeWrapper, mExecutor, mRetrofit.getRetrofit(), mOauthRetrofit,
|
this, mCustomThemeWrapper, mExecutor, mRetrofit.getRetrofit(),
|
||||||
mAccessToken, mAccountName, mPost, mLocale, mSingleCommentId,
|
mAccessToken, mAccountName, mPost, mLocale, mSingleCommentId,
|
||||||
isSingleCommentThreadMode, mSharedPreferences,
|
isSingleCommentThreadMode, mSharedPreferences,
|
||||||
new CommentsRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
|
new CommentsRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
|
||||||
@ -776,29 +774,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void changeFlair(Flair flair) {
|
public void changeFlair(Flair flair) {
|
||||||
Map<String, String> params = new HashMap<>();
|
|
||||||
params.put(APIUtils.API_TYPE_KEY, APIUtils.API_TYPE_JSON);
|
|
||||||
params.put(APIUtils.FLAIR_TEMPLATE_ID_KEY, flair.getId());
|
|
||||||
params.put(APIUtils.LINK_KEY, mPost.getFullName());
|
|
||||||
params.put(APIUtils.TEXT_KEY, flair.getText());
|
|
||||||
|
|
||||||
mOauthRetrofit.create(RedditAPI.class).selectFlair(mPost.getSubredditNamePrefixed(),
|
|
||||||
APIUtils.getOAuthHeader(mAccessToken), params).enqueue(new Callback<String>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
|
||||||
if (response.isSuccessful()) {
|
|
||||||
refresh(true, false);
|
|
||||||
showMessage(R.string.update_flair_success);
|
|
||||||
} else {
|
|
||||||
showMessage(R.string.update_flair_failed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
|
||||||
showMessage(R.string.update_flair_failed);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changeSortType(SortType sortType) {
|
public void changeSortType(SortType sortType) {
|
||||||
@ -952,7 +928,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
SavePost savePost = new SavePost();
|
SavePost savePost = new SavePost();
|
||||||
if (mPost.isSaved()) {
|
if (mPost.isSaved()) {
|
||||||
item.setIcon(mUnsavedIcon);
|
item.setIcon(mUnsavedIcon);
|
||||||
savePost.unsaveThing(mOauthRetrofit, mAccessToken, mPost.getId(),
|
savePost.unsaveThing(mRetrofit.getRetrofit(), mAccessToken, mPost.getId(),
|
||||||
new SaveThing.SaveThingListener() {
|
new SaveThing.SaveThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success() {
|
public void success() {
|
||||||
@ -976,7 +952,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
item.setIcon(mSavedIcon);
|
item.setIcon(mSavedIcon);
|
||||||
savePost.saveThing(mOauthRetrofit, mAccessToken, mPost.getId(),
|
savePost.saveThing(mRetrofit.getRetrofit(), mAccessToken, mPost.getId(),
|
||||||
new SaveThing.SaveThingListener() {
|
new SaveThing.SaveThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success() {
|
public void success() {
|
||||||
@ -1017,7 +993,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
if (mPost.isHidden()) {
|
if (mPost.isHidden()) {
|
||||||
Utils.setTitleWithCustomFontToMenuItem(activity.typeface, item, getString(R.string.action_hide_post));
|
Utils.setTitleWithCustomFontToMenuItem(activity.typeface, item, getString(R.string.action_hide_post));
|
||||||
|
|
||||||
HidePost.unhidePost(mOauthRetrofit, mAccessToken, mPost.getFullName(), new HidePost.HidePostListener() {
|
HidePost.unhidePost(mRetrofit.getRetrofit(), mAccessToken, mPost.getFullName(), new HidePost.HidePostListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success() {
|
public void success() {
|
||||||
mPost.setHidden(false);
|
mPost.setHidden(false);
|
||||||
@ -1037,7 +1013,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
} else {
|
} else {
|
||||||
Utils.setTitleWithCustomFontToMenuItem(activity.typeface, item, getString(R.string.action_unhide_post));
|
Utils.setTitleWithCustomFontToMenuItem(activity.typeface, item, getString(R.string.action_unhide_post));
|
||||||
|
|
||||||
HidePost.hidePost(mOauthRetrofit, mAccessToken, mPost.getFullName(), new HidePost.HidePostListener() {
|
HidePost.hidePost(mRetrofit.getRetrofit(), mAccessToken, mPost.getFullName(), new HidePost.HidePostListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success() {
|
public void success() {
|
||||||
mPost.setHidden(true);
|
mPost.setHidden(true);
|
||||||
@ -1067,7 +1043,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
.setTitle(R.string.delete_this_post)
|
.setTitle(R.string.delete_this_post)
|
||||||
.setMessage(R.string.are_you_sure)
|
.setMessage(R.string.are_you_sure)
|
||||||
.setPositiveButton(R.string.delete, (dialogInterface, i)
|
.setPositiveButton(R.string.delete, (dialogInterface, i)
|
||||||
-> DeleteThing.delete(mOauthRetrofit, mPost.getFullName(), mAccessToken, new DeleteThing.DeleteThingListener() {
|
-> DeleteThing.deletePost(mRetrofit.getRetrofit(), mPost.getId(), mAccessToken, new DeleteThing.DeleteThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void deleteSuccess() {
|
public void deleteSuccess() {
|
||||||
Toast.makeText(activity, R.string.delete_post_success, Toast.LENGTH_SHORT).show();
|
Toast.makeText(activity, R.string.delete_post_success, Toast.LENGTH_SHORT).show();
|
||||||
@ -1262,7 +1238,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
mPost = post;
|
mPost = post;
|
||||||
mPostAdapter = new PostDetailRecyclerViewAdapter(activity,
|
mPostAdapter = new PostDetailRecyclerViewAdapter(activity,
|
||||||
ViewPostDetailFragment.this, mExecutor, mCustomThemeWrapper,
|
ViewPostDetailFragment.this, mExecutor, mCustomThemeWrapper,
|
||||||
mRetrofit.getRetrofit(), mOauthRetrofit, mGfycatRetrofit, mRedgifsRetrofit,
|
mRetrofit.getRetrofit(), mGfycatRetrofit, mRedgifsRetrofit,
|
||||||
mStreamableApiProvider, mRedditDataRoomDatabase, mGlide, mSeparatePostAndComments,
|
mStreamableApiProvider, mRedditDataRoomDatabase, mGlide, mSeparatePostAndComments,
|
||||||
mAccessToken, mAccountName, mPost, mLocale, mSharedPreferences,
|
mAccessToken, mAccountName, mPost, mLocale, mSharedPreferences,
|
||||||
mCurrentAccountSharedPreferences, mNsfwAndSpoilerSharedPreferences,
|
mCurrentAccountSharedPreferences, mNsfwAndSpoilerSharedPreferences,
|
||||||
@ -1275,7 +1251,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
pages_loaded++;
|
pages_loaded++;
|
||||||
mCommentsAdapter = new CommentsRecyclerViewAdapter(activity,
|
mCommentsAdapter = new CommentsRecyclerViewAdapter(activity,
|
||||||
ViewPostDetailFragment.this, mCustomThemeWrapper, mExecutor,
|
ViewPostDetailFragment.this, mCustomThemeWrapper, mExecutor,
|
||||||
mRetrofit.getRetrofit(), mOauthRetrofit, mAccessToken, mAccountName, mPost, mLocale,
|
mRetrofit.getRetrofit(), mAccessToken, mAccountName, mPost, mLocale,
|
||||||
mSingleCommentId, isSingleCommentThreadMode, mSharedPreferences,
|
mSingleCommentId, isSingleCommentThreadMode, mSharedPreferences,
|
||||||
new CommentsRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
|
new CommentsRecyclerViewAdapter.CommentRecyclerViewAdapterCallback() {
|
||||||
@Override
|
@Override
|
||||||
@ -1567,7 +1543,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
|
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put(APIUtils.ID_KEY, mPost.getFullName());
|
params.put(APIUtils.ID_KEY, mPost.getFullName());
|
||||||
mOauthRetrofit.create(RedditAPI.class).markNSFW(APIUtils.getOAuthHeader(mAccessToken), params)
|
mRetrofit.getRetrofit().create(LemmyAPI.class).postUpdate(new EditPostDTO(mPost.getId(), mPost.getTitle(), mPost.getUrl(), mPost.getSelfText(), true, null, mAccessToken))
|
||||||
.enqueue(new Callback<String>() {
|
.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
@ -1605,7 +1581,7 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
|
|
||||||
Map<String, String> params = new HashMap<>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put(APIUtils.ID_KEY, mPost.getFullName());
|
params.put(APIUtils.ID_KEY, mPost.getFullName());
|
||||||
mOauthRetrofit.create(RedditAPI.class).unmarkNSFW(APIUtils.getOAuthHeader(mAccessToken), params)
|
mRetrofit.getRetrofit().create(LemmyAPI.class).postUpdate(new EditPostDTO(mPost.getId(), mPost.getTitle(), mPost.getUrl(), mPost.getSelfText(), false, null, mAccessToken))
|
||||||
.enqueue(new Callback<String>() {
|
.enqueue(new Callback<String>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||||
@ -1636,88 +1612,12 @@ public class ViewPostDetailFragment extends Fragment implements FragmentCommunic
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void markSpoiler() {
|
public void deleteComment(int commentId, int position) {
|
||||||
if (mMenu != null) {
|
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_fragment).setTitle(R.string.action_unmark_spoiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, String> params = new HashMap<>();
|
|
||||||
params.put(APIUtils.ID_KEY, mPost.getFullName());
|
|
||||||
mOauthRetrofit.create(RedditAPI.class).markSpoiler(APIUtils.getOAuthHeader(mAccessToken), params)
|
|
||||||
.enqueue(new Callback<String>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
|
||||||
if (response.isSuccessful()) {
|
|
||||||
if (mMenu != null) {
|
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_fragment).setTitle(R.string.action_unmark_spoiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
refresh(true, false);
|
|
||||||
showMessage(R.string.mark_spoiler_success);
|
|
||||||
} else {
|
|
||||||
if (mMenu != null) {
|
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_fragment).setTitle(R.string.action_mark_spoiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
showMessage(R.string.mark_spoiler_failed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
|
||||||
if (mMenu != null) {
|
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_fragment).setTitle(R.string.action_mark_spoiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
showMessage(R.string.mark_spoiler_failed);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void unmarkSpoiler() {
|
|
||||||
if (mMenu != null) {
|
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_fragment).setTitle(R.string.action_mark_spoiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, String> params = new HashMap<>();
|
|
||||||
params.put(APIUtils.ID_KEY, mPost.getFullName());
|
|
||||||
mOauthRetrofit.create(RedditAPI.class).unmarkSpoiler(APIUtils.getOAuthHeader(mAccessToken), params)
|
|
||||||
.enqueue(new Callback<String>() {
|
|
||||||
@Override
|
|
||||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
|
||||||
if (response.isSuccessful()) {
|
|
||||||
if (mMenu != null) {
|
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_fragment).setTitle(R.string.action_mark_spoiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
refresh(true, false);
|
|
||||||
showMessage(R.string.unmark_spoiler_success);
|
|
||||||
} else {
|
|
||||||
if (mMenu != null) {
|
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_fragment).setTitle(R.string.action_unmark_spoiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
showMessage(R.string.unmark_spoiler_failed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
|
||||||
if (mMenu != null) {
|
|
||||||
mMenu.findItem(R.id.action_spoiler_view_post_detail_fragment).setTitle(R.string.action_unmark_spoiler);
|
|
||||||
}
|
|
||||||
|
|
||||||
showMessage(R.string.unmark_spoiler_failed);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public void deleteComment(String fullName, int position) {
|
|
||||||
new MaterialAlertDialogBuilder(activity, R.style.MaterialAlertDialogTheme)
|
new MaterialAlertDialogBuilder(activity, R.style.MaterialAlertDialogTheme)
|
||||||
.setTitle(R.string.delete_this_comment)
|
.setTitle(R.string.delete_this_comment)
|
||||||
.setMessage(R.string.are_you_sure)
|
.setMessage(R.string.are_you_sure)
|
||||||
.setPositiveButton(R.string.delete, (dialogInterface, i)
|
.setPositiveButton(R.string.delete, (dialogInterface, i)
|
||||||
-> DeleteThing.delete(mOauthRetrofit, fullName, mAccessToken, new DeleteThing.DeleteThingListener() {
|
-> DeleteThing.deleteComment(mRetrofit.getRetrofit(), commentId, mAccessToken, new DeleteThing.DeleteThingListener() {
|
||||||
@Override
|
@Override
|
||||||
public void deleteSuccess() {
|
public void deleteSuccess() {
|
||||||
Toast.makeText(activity, R.string.delete_post_success, Toast.LENGTH_SHORT).show();
|
Toast.makeText(activity, R.string.delete_post_success, Toast.LENGTH_SHORT).show();
|
||||||
|
Loading…
Reference in New Issue
Block a user