mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-10 04:37:25 +01:00
Saving and unsaving post are now available. Disable commenting and replying for locked posts in last commit.
This commit is contained in:
parent
5f7bfd88b7
commit
d4fc671605
@ -35,9 +35,9 @@
|
||||
<map>
|
||||
<entry key="assetSourceType" value="FILE" />
|
||||
<entry key="color" value="ffffff" />
|
||||
<entry key="outputName" value="ic_outline_color_lens_24px" />
|
||||
<entry key="outputName" value="ic_baseline_bookmark_24px" />
|
||||
<entry key="overrideSize" value="true" />
|
||||
<entry key="sourceFile" value="$USER_HOME$/Downloads/outline-color_lens-24px.svg" />
|
||||
<entry key="sourceFile" value="$USER_HOME$/Downloads/baseline-bookmark-24px.svg" />
|
||||
</map>
|
||||
</option>
|
||||
</PersistentState>
|
||||
|
@ -76,6 +76,7 @@ public class JSONUtils {
|
||||
static final String DESCRIPTION_HTML_KEY = "description_html";
|
||||
static final String ARCHIVED_KEY = "archived";
|
||||
static final String LOCKEC_KEY = "locked";
|
||||
static final String SAVED_KEY = "saved";
|
||||
static final String TEXT_EDITABLE_KEY = "text_editable";
|
||||
static final String SUBJECT_KEY = "subject";
|
||||
static final String CONTEXT_KEY = "context";
|
||||
|
@ -317,7 +317,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
||||
.build();
|
||||
|
||||
workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG,
|
||||
ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest);
|
||||
ExistingPeriodicWorkPolicy.KEEP, pullNotificationRequest);
|
||||
} else {
|
||||
workManager.cancelAllWorkByTag(PullNotificationWorker.WORKER_TAG);
|
||||
}
|
||||
@ -343,7 +343,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
||||
.build();
|
||||
|
||||
workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG,
|
||||
ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest);
|
||||
ExistingPeriodicWorkPolicy.KEEP, pullNotificationRequest);
|
||||
} else {
|
||||
workManager.cancelAllWorkByTag(PullNotificationWorker.WORKER_TAG);
|
||||
}
|
||||
@ -373,7 +373,7 @@ public class MainActivity extends AppCompatActivity implements SortTypeBottomShe
|
||||
.build();
|
||||
|
||||
workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG,
|
||||
ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest);
|
||||
ExistingPeriodicWorkPolicy.KEEP, pullNotificationRequest);
|
||||
} else {
|
||||
workManager.cancelAllWorkByTag(PullNotificationWorker.WORKER_TAG);
|
||||
}
|
||||
|
@ -167,6 +167,7 @@ class ParsePost {
|
||||
boolean stickied = data.getBoolean(JSONUtils.STICKIED_KEY);
|
||||
boolean archived = data.getBoolean(JSONUtils.ARCHIVED_KEY);
|
||||
boolean locked = data.getBoolean(JSONUtils.LOCKEC_KEY);
|
||||
boolean saved = data.getBoolean(JSONUtils.SAVED_KEY);
|
||||
String flair = null;
|
||||
if(!data.isNull(JSONUtils.LINK_FLAIR_TEXT_KEY)) {
|
||||
flair = data.getString(JSONUtils.LINK_FLAIR_TEXT_KEY);
|
||||
@ -201,11 +202,13 @@ class ParsePost {
|
||||
data = data.getJSONArray(JSONUtils.CROSSPOST_PARENT_LIST).getJSONObject(0);
|
||||
return parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed,
|
||||
author, formattedPostTime, title, previewUrl, previewWidth, previewHeight,
|
||||
score, voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, true, i);
|
||||
score, voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved,
|
||||
true, i);
|
||||
} else {
|
||||
return parseData(data, permalink, id, fullName, subredditName, subredditNamePrefixed,
|
||||
author, formattedPostTime, title, previewUrl, previewWidth, previewHeight,
|
||||
score, voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, false, i);
|
||||
score, voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved,
|
||||
false, i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,7 +217,7 @@ class ParsePost {
|
||||
String formattedPostTime, String title, String previewUrl, int previewWidth,
|
||||
int previewHeight, int score, int voteType, int gilded, String flair,
|
||||
boolean spoiler, boolean nsfw, boolean stickied, boolean archived,
|
||||
boolean locked, boolean isCrosspost, int i) throws JSONException {
|
||||
boolean locked, boolean saved, boolean isCrosspost, int i) throws JSONException {
|
||||
Post post;
|
||||
|
||||
boolean isVideo = data.getBoolean(JSONUtils.IS_VIDEO_KEY);
|
||||
@ -227,7 +230,7 @@ class ParsePost {
|
||||
int postType = Post.TEXT_TYPE;
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||
title, permalink, score, postType, voteType, gilded, flair, spoiler, nsfw,
|
||||
stickied, archived, locked, isCrosspost);
|
||||
stickied, archived, locked, saved, isCrosspost);
|
||||
if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
||||
post.setSelfText("");
|
||||
} else {
|
||||
@ -239,7 +242,7 @@ class ParsePost {
|
||||
int postType = Post.NO_PREVIEW_LINK_TYPE;
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||
title, previewUrl, url, permalink, score, postType,
|
||||
voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, isCrosspost);
|
||||
voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||
if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
||||
post.setSelfText("");
|
||||
} else {
|
||||
@ -261,7 +264,7 @@ class ParsePost {
|
||||
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||
title, previewUrl, permalink, score, postType, voteType,
|
||||
gilded, flair, spoiler, nsfw, stickied, archived, locked, isCrosspost, true);
|
||||
gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost, true);
|
||||
|
||||
post.setPreviewWidth(previewWidth);
|
||||
post.setPreviewHeight(previewHeight);
|
||||
@ -278,7 +281,7 @@ class ParsePost {
|
||||
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title,
|
||||
previewUrl, permalink, score, postType, voteType,
|
||||
gilded, flair, spoiler, nsfw, stickied, archived, locked, isCrosspost, false);
|
||||
gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost, false);
|
||||
post.setPreviewWidth(previewWidth);
|
||||
post.setPreviewHeight(previewHeight);
|
||||
post.setVideoUrl(videoUrl);
|
||||
@ -293,7 +296,7 @@ class ParsePost {
|
||||
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title,
|
||||
previewUrl, permalink, score, postType, voteType,
|
||||
gilded, flair, spoiler, nsfw, stickied, archived, locked, isCrosspost, true);
|
||||
gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost, true);
|
||||
post.setPreviewWidth(previewWidth);
|
||||
post.setPreviewHeight(previewHeight);
|
||||
post.setVideoUrl(videoUrl);
|
||||
@ -306,7 +309,7 @@ class ParsePost {
|
||||
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||
title, url, url, permalink, score, postType,
|
||||
voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, isCrosspost);
|
||||
voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||
|
||||
post.setPreviewWidth(previewWidth);
|
||||
post.setPreviewHeight(previewHeight);
|
||||
@ -318,7 +321,7 @@ class ParsePost {
|
||||
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||
title, permalink, score, postType, voteType, gilded, flair, spoiler,
|
||||
nsfw, stickied, archived, locked, isCrosspost);
|
||||
nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||
|
||||
post.setPreviewWidth(previewWidth);
|
||||
post.setPreviewHeight(previewHeight);
|
||||
@ -335,7 +338,7 @@ class ParsePost {
|
||||
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||
title, previewUrl, url, permalink, score, postType, voteType, gilded,
|
||||
flair, spoiler, nsfw, stickied, archived, locked, isCrosspost);
|
||||
flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||
if(data.isNull(JSONUtils.SELFTEXT_KEY)) {
|
||||
post.setSelfText("");
|
||||
} else {
|
||||
@ -355,7 +358,7 @@ class ParsePost {
|
||||
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime,
|
||||
title, previewUrl, url, permalink, score, postType,
|
||||
voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, isCrosspost);
|
||||
voteType, gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||
post.setPreviewWidth(previewWidth);
|
||||
post.setPreviewHeight(previewHeight);
|
||||
} else {
|
||||
@ -365,7 +368,7 @@ class ParsePost {
|
||||
|
||||
post = new Post(id, fullName, subredditName, subredditNamePrefixed, author, formattedPostTime, title,
|
||||
url, url, permalink, score, postType, voteType,
|
||||
gilded, flair, spoiler, nsfw, stickied, archived, locked, isCrosspost);
|
||||
gilded, flair, spoiler, nsfw, stickied, archived, locked, saved, isCrosspost);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,6 +43,7 @@ class Post implements Parcelable {
|
||||
private boolean stickied;
|
||||
private boolean archived;
|
||||
private boolean locked;
|
||||
private boolean saved;
|
||||
private boolean isCrosspost;
|
||||
private boolean isDashVideo;
|
||||
private boolean isDownloadableGifOrVideo;
|
||||
@ -50,7 +51,7 @@ class Post implements Parcelable {
|
||||
Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author,
|
||||
String postTime, String title, String previewUrl, String permalink, int score, int postType,
|
||||
int voteType, int gilded, String flair, boolean spoiler, boolean nsfw, boolean stickied,
|
||||
boolean archived, boolean locked, boolean isCrosspost, boolean isDashVideo) {
|
||||
boolean archived, boolean locked, boolean saved, boolean isCrosspost, boolean isDashVideo) {
|
||||
this.id = id;
|
||||
this.fullName = fullName;
|
||||
this.subredditName = subredditName;
|
||||
@ -71,6 +72,7 @@ class Post implements Parcelable {
|
||||
this.stickied = stickied;
|
||||
this.archived = archived;
|
||||
this.locked = locked;
|
||||
this.saved = saved;
|
||||
this.isCrosspost = isCrosspost;
|
||||
this.isDashVideo = isDashVideo;
|
||||
}
|
||||
@ -78,7 +80,7 @@ class Post implements Parcelable {
|
||||
Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author,
|
||||
String postTime, String title, String previewUrl, String url, String permalink, int score,
|
||||
int postType, int voteType, int gilded, String flair, boolean spoiler, boolean nsfw, boolean stickied,
|
||||
boolean archived, boolean locked, boolean isCrosspost) {
|
||||
boolean archived, boolean locked, boolean saved, boolean isCrosspost) {
|
||||
this.id = id;
|
||||
this.fullName = fullName;
|
||||
this.subredditName = subredditName;
|
||||
@ -100,13 +102,14 @@ class Post implements Parcelable {
|
||||
this.stickied = stickied;
|
||||
this.archived = archived;
|
||||
this.locked = locked;
|
||||
this.saved = saved;
|
||||
this.isCrosspost = isCrosspost;
|
||||
}
|
||||
|
||||
Post(String id, String fullName, String subredditName, String subredditNamePrefixed, String author,
|
||||
String postTime, String title, String permalink, int score, int postType, int voteType, int gilded,
|
||||
String flair, boolean spoiler, boolean nsfw, boolean stickied, boolean archived, boolean locked,
|
||||
boolean isCrosspost) {
|
||||
boolean saved, boolean isCrosspost) {
|
||||
this.id = id;
|
||||
this.fullName = fullName;
|
||||
this.subredditName = subredditName;
|
||||
@ -126,6 +129,7 @@ class Post implements Parcelable {
|
||||
this.stickied = stickied;
|
||||
this.archived = archived;
|
||||
this.locked = locked;
|
||||
this.saved = saved;
|
||||
this.isCrosspost= isCrosspost;
|
||||
}
|
||||
|
||||
@ -158,6 +162,7 @@ class Post implements Parcelable {
|
||||
stickied = in.readByte() != 0;
|
||||
archived = in.readByte() != 0;
|
||||
locked = in.readByte() != 0;
|
||||
saved = in.readByte() != 0;
|
||||
isCrosspost = in.readByte() != 0;
|
||||
isDashVideo = in.readByte() != 0;
|
||||
isDownloadableGifOrVideo = in.readByte() != 0;
|
||||
@ -356,6 +361,14 @@ class Post implements Parcelable {
|
||||
return locked;
|
||||
}
|
||||
|
||||
boolean isSaved() {
|
||||
return saved;
|
||||
}
|
||||
|
||||
void setSaved(boolean saved) {
|
||||
this.saved = saved;
|
||||
}
|
||||
|
||||
boolean isCrosspost() {
|
||||
return isCrosspost;
|
||||
}
|
||||
@ -390,6 +403,7 @@ class Post implements Parcelable {
|
||||
parcel.writeByte((byte) (stickied ? 1 : 0));
|
||||
parcel.writeByte((byte) (archived ? 1 : 0));
|
||||
parcel.writeByte((byte) (locked ? 1 : 0));
|
||||
parcel.writeByte((byte) (saved ? 1 : 0));
|
||||
parcel.writeByte((byte) (isCrosspost ? 1 : 0));
|
||||
parcel.writeByte((byte) (isDashVideo ? 1 : 0));
|
||||
parcel.writeByte((byte) (isDownloadableGifOrVideo ? 1 : 0));
|
||||
|
@ -445,6 +445,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
||||
post.setNSFW(event.post.isNSFW());
|
||||
post.setSpoiler(event.post.isSpoiler());
|
||||
post.setFlair(event.post.getFlair());
|
||||
post.setSaved(event.post.isSaved());
|
||||
mAdapter.notifyItemChanged(event.positionInList);
|
||||
}
|
||||
}
|
||||
|
@ -168,4 +168,12 @@ public interface RedditAPI {
|
||||
@FormUrlEncoded
|
||||
@POST("/api/read_message")
|
||||
Call<String> readMessage(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> ids);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("/api/save")
|
||||
Call<String> save(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> params);
|
||||
|
||||
@FormUrlEncoded
|
||||
@POST("/api/unsave")
|
||||
Call<String> unsave(@HeaderMap Map<String, String> headers, @FieldMap Map<String, String> params);
|
||||
}
|
||||
|
@ -0,0 +1,60 @@
|
||||
package ml.docilealligator.infinityforreddit;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
import retrofit2.Response;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
class SaveThing {
|
||||
interface SaveThingListener {
|
||||
void success();
|
||||
void failed();
|
||||
}
|
||||
|
||||
static void saveThing(Retrofit oauthRetrofit, String accessToken, String fullname,
|
||||
SaveThingListener saveThingListener) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put(RedditUtils.ID_KEY, fullname);
|
||||
oauthRetrofit.create(RedditAPI.class).save(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
saveThingListener.success();
|
||||
} else {
|
||||
saveThingListener.failed();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||
saveThingListener.failed();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static void unsaveThing(Retrofit oauthRetrofit, String accessToken, String fullname,
|
||||
SaveThingListener saveThingListener) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
params.put(RedditUtils.ID_KEY, fullname);
|
||||
oauthRetrofit.create(RedditAPI.class).unsave(RedditUtils.getOAuthHeader(accessToken), params).enqueue(new Callback<String>() {
|
||||
@Override
|
||||
public void onResponse(@NonNull Call<String> call, @NonNull Response<String> response) {
|
||||
if(response.isSuccessful()) {
|
||||
saveThingListener.success();
|
||||
} else {
|
||||
saveThingListener.failed();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(@NonNull Call<String> call, @NonNull Throwable t) {
|
||||
saveThingListener.failed();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
@ -296,36 +297,53 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
}
|
||||
|
||||
if(mPost == null) {
|
||||
mPost = getIntent().getExtras().getParcelable(EXTRA_POST_DATA);
|
||||
mPost = getIntent().getParcelableExtra(EXTRA_POST_DATA);
|
||||
}
|
||||
|
||||
Log.i("asdfasdfadfadf", "" + mPost.isSaved());
|
||||
if(mPost == null) {
|
||||
fetchPostAndCommentsById(getIntent().getExtras().getString(EXTRA_POST_ID));
|
||||
fetchPostAndCommentsById(getIntent().getStringExtra(EXTRA_POST_ID));
|
||||
} else {
|
||||
if(mMenu != null && mPost.getAuthor().equals(mAccountName)) {
|
||||
if(mPost.getPostType() == Post.TEXT_TYPE) {
|
||||
mMenu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
||||
}
|
||||
mMenu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
||||
|
||||
MenuItem nsfwItem = mMenu.findItem(R.id.action_nsfw_view_post_detail_activity);
|
||||
nsfwItem.setVisible(true);
|
||||
if(mPost.isNSFW()) {
|
||||
nsfwItem.setTitle(R.string.action_unmark_nsfw);
|
||||
if(mMenu != null) {
|
||||
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
||||
if(mAccessToken != null) {
|
||||
if(mPost.isSaved()) {
|
||||
saveItem.setVisible(true);
|
||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||
} else {
|
||||
saveItem.setVisible(true);
|
||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||
}
|
||||
} else {
|
||||
nsfwItem.setTitle(R.string.action_mark_nsfw);
|
||||
saveItem.setVisible(false);
|
||||
}
|
||||
|
||||
MenuItem spoilerItem = mMenu.findItem(R.id.action_spoiler_view_post_detail_activity);
|
||||
spoilerItem.setVisible(true);
|
||||
if(mPost.isSpoiler()) {
|
||||
spoilerItem.setTitle(R.string.action_unmark_spoiler);
|
||||
} else {
|
||||
spoilerItem.setTitle(R.string.action_mark_spoiler);
|
||||
}
|
||||
if(mPost.getAuthor().equals(mAccountName)) {
|
||||
if(mPost.getPostType() == Post.TEXT_TYPE) {
|
||||
mMenu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
||||
}
|
||||
mMenu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
||||
|
||||
mMenu.findItem(R.id.action_edit_flair_view_post_detail_activity).setVisible(true);
|
||||
MenuItem nsfwItem = mMenu.findItem(R.id.action_nsfw_view_post_detail_activity);
|
||||
nsfwItem.setVisible(true);
|
||||
if(mPost.isNSFW()) {
|
||||
nsfwItem.setTitle(R.string.action_unmark_nsfw);
|
||||
} else {
|
||||
nsfwItem.setTitle(R.string.action_mark_nsfw);
|
||||
}
|
||||
|
||||
MenuItem spoilerItem = mMenu.findItem(R.id.action_spoiler_view_post_detail_activity);
|
||||
spoilerItem.setVisible(true);
|
||||
if(mPost.isSpoiler()) {
|
||||
spoilerItem.setTitle(R.string.action_unmark_spoiler);
|
||||
} else {
|
||||
spoilerItem.setTitle(R.string.action_mark_spoiler);
|
||||
}
|
||||
|
||||
mMenu.findItem(R.id.action_edit_flair_view_post_detail_activity).setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
mAdapter = new CommentAndPostRecyclerViewAdapter(ViewPostDetailActivity.this, mRetrofit,
|
||||
mOauthRetrofit, mRedditDataRoomDatabase, mGlide, mAccessToken, mAccountName, mPost,
|
||||
mLocale, mSingleCommentId, isSingleCommentThreadMode,
|
||||
@ -395,6 +413,21 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
public void onParsePostSuccess(Post post) {
|
||||
mPost = post;
|
||||
|
||||
if(mMenu != null) {
|
||||
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
||||
if(mAccessToken != null) {
|
||||
if(post.isSaved()) {
|
||||
saveItem.setVisible(true);
|
||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||
} else {
|
||||
saveItem.setVisible(true);
|
||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||
}
|
||||
} else {
|
||||
saveItem.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
if(mMenu != null && mPost.getAuthor().equals(mAccountName)) {
|
||||
if(mPost.getPostType() == Post.TEXT_TYPE) {
|
||||
mMenu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
||||
@ -582,6 +615,20 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
mAdapter.updatePost(mPost);
|
||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||
isRefreshing = false;
|
||||
if(mMenu != null) {
|
||||
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
||||
if(mAccessToken != null) {
|
||||
if(post.isSaved()) {
|
||||
saveItem.setVisible(true);
|
||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||
} else {
|
||||
saveItem.setVisible(true);
|
||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||
}
|
||||
} else {
|
||||
saveItem.setVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -744,29 +791,44 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.view_post_detail_activity, menu);
|
||||
mMenu = menu;
|
||||
if(mPost != null && mPost.getAuthor().equals(mAccountName)) {
|
||||
if(mPost.getPostType() == Post.TEXT_TYPE) {
|
||||
menu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
||||
}
|
||||
menu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
||||
|
||||
MenuItem nsfwItem = menu.findItem(R.id.action_nsfw_view_post_detail_activity);
|
||||
nsfwItem.setVisible(true);
|
||||
if(mPost.isNSFW()) {
|
||||
nsfwItem.setTitle(R.string.action_unmark_nsfw);
|
||||
if(mPost != null) {
|
||||
MenuItem saveItem = mMenu.findItem(R.id.action_save_view_post_detail_activity);
|
||||
if(mAccessToken != null) {
|
||||
if(mPost.isSaved()) {
|
||||
saveItem.setVisible(true);
|
||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||
} else {
|
||||
saveItem.setVisible(true);
|
||||
saveItem.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||
}
|
||||
} else {
|
||||
nsfwItem.setTitle(R.string.action_mark_nsfw);
|
||||
saveItem.setVisible(false);
|
||||
}
|
||||
|
||||
MenuItem spoilerItem = menu.findItem(R.id.action_spoiler_view_post_detail_activity);
|
||||
spoilerItem.setVisible(true);
|
||||
if(mPost.isSpoiler()) {
|
||||
spoilerItem.setTitle(R.string.action_unmark_spoiler);
|
||||
} else {
|
||||
spoilerItem.setTitle(R.string.action_mark_spoiler);
|
||||
}
|
||||
if(mPost.getAuthor().equals(mAccountName)) {
|
||||
if(mPost.getPostType() == Post.TEXT_TYPE) {
|
||||
menu.findItem(R.id.action_edit_view_post_detail_activity).setVisible(true);
|
||||
}
|
||||
menu.findItem(R.id.action_delete_view_post_detail_activity).setVisible(true);
|
||||
|
||||
menu.findItem(R.id.action_edit_flair_view_post_detail_activity).setVisible(true);
|
||||
MenuItem nsfwItem = menu.findItem(R.id.action_nsfw_view_post_detail_activity);
|
||||
nsfwItem.setVisible(true);
|
||||
if(mPost.isNSFW()) {
|
||||
nsfwItem.setTitle(R.string.action_unmark_nsfw);
|
||||
} else {
|
||||
nsfwItem.setTitle(R.string.action_mark_nsfw);
|
||||
}
|
||||
|
||||
MenuItem spoilerItem = menu.findItem(R.id.action_spoiler_view_post_detail_activity);
|
||||
spoilerItem.setVisible(true);
|
||||
if(mPost.isSpoiler()) {
|
||||
spoilerItem.setTitle(R.string.action_unmark_spoiler);
|
||||
} else {
|
||||
spoilerItem.setTitle(R.string.action_mark_spoiler);
|
||||
}
|
||||
|
||||
menu.findItem(R.id.action_edit_flair_view_post_detail_activity).setVisible(true);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -800,6 +862,51 @@ public class ViewPostDetailActivity extends AppCompatActivity implements FlairBo
|
||||
intent.putExtra(CommentActivity.EXTRA_IS_REPLYING_KEY, false);
|
||||
startActivityForResult(intent, WRITE_COMMENT_REQUEST_CODE);
|
||||
return true;
|
||||
case R.id.action_save_view_post_detail_activity:
|
||||
if(mPost != null && mAccessToken != null) {
|
||||
if(mPost.isSaved()) {
|
||||
item.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||
SaveThing.unsaveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(),
|
||||
new SaveThing.SaveThingListener() {
|
||||
@Override
|
||||
public void success() {
|
||||
mPost.setSaved(false);
|
||||
item.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||
showMessage(R.string.post_unsaved_success);
|
||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed() {
|
||||
mPost.setSaved(true);
|
||||
item.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||
showMessage(R.string.post_unsaved_failed);
|
||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
item.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||
SaveThing.saveThing(mOauthRetrofit, mAccessToken, mPost.getFullName(),
|
||||
new SaveThing.SaveThingListener() {
|
||||
@Override
|
||||
public void success() {
|
||||
mPost.setSaved(true);
|
||||
item.setIcon(R.drawable.ic_baseline_bookmark_24px);
|
||||
showMessage(R.string.post_saved_success);
|
||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void failed() {
|
||||
mPost.setSaved(false);
|
||||
item.setIcon(R.drawable.ic_baseline_bookmark_border_24px);
|
||||
showMessage(R.string.post_saved_failed);
|
||||
EventBus.getDefault().post(new PostUpdateEventToPostList(mPost, postListPosition));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
break;
|
||||
case R.id.action_edit_view_post_detail_activity:
|
||||
Intent editPostItent = new Intent(this, EditPostActivity.class);
|
||||
editPostItent.putExtra(EditPostActivity.EXTRA_ACCESS_TOKEN, mAccessToken);
|
||||
|
9
app/src/main/res/drawable/ic_baseline_bookmark_24px.xml
Normal file
9
app/src/main/res/drawable/ic_baseline_bookmark_24px.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M17,3H7c-1.1,0 -1.99,0.9 -1.99,2L5,21l7,-3 7,3V5c0,-1.1 -0.9,-2 -2,-2z"/>
|
||||
</vector>
|
@ -0,0 +1,9 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M17,3L7,3c-1.1,0 -1.99,0.9 -1.99,2L5,21l7,-3 7,3L19,5c0,-1.1 -0.9,-2 -2,-2zM17,18l-5,-2.18L7,18L7,5h10v13z"/>
|
||||
</vector>
|
@ -9,40 +9,47 @@
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_refresh_view_post_detail_activity"
|
||||
android:id="@+id/action_save_view_post_detail_activity"
|
||||
android:orderInCategory="2"
|
||||
android:title="@string/action_add_comment"
|
||||
app:showAsAction="ifRoom"
|
||||
android:visible="false" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_refresh_view_post_detail_activity"
|
||||
android:orderInCategory="3"
|
||||
android:title="@string/action_refresh"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_edit_view_post_detail_activity"
|
||||
android:orderInCategory="3"
|
||||
android:orderInCategory="4"
|
||||
android:title="@string/action_edit_post"
|
||||
app:showAsAction="never"
|
||||
android:visible="false" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_delete_view_post_detail_activity"
|
||||
android:orderInCategory="4"
|
||||
android:orderInCategory="5"
|
||||
android:title="@string/action_delete_post"
|
||||
app:showAsAction="never"
|
||||
android:visible="false" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_nsfw_view_post_detail_activity"
|
||||
android:orderInCategory="5"
|
||||
app:showAsAction="never"
|
||||
android:visible="false" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_spoiler_view_post_detail_activity"
|
||||
android:orderInCategory="6"
|
||||
app:showAsAction="never"
|
||||
android:visible="false" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_edit_flair_view_post_detail_activity"
|
||||
android:id="@+id/action_spoiler_view_post_detail_activity"
|
||||
android:orderInCategory="7"
|
||||
app:showAsAction="never"
|
||||
android:visible="false" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_edit_flair_view_post_detail_activity"
|
||||
android:orderInCategory="8"
|
||||
android:title="@string/action_edit_flair"
|
||||
app:showAsAction="never"
|
||||
android:visible="false" />
|
||||
|
@ -206,6 +206,10 @@
|
||||
<string name="press_here_to_login">Press here to login</string>
|
||||
<string name="login_first">Login first</string>
|
||||
|
||||
<string name="post_saved_success">Post saved</string>
|
||||
<string name="post_saved_failed">Unable to save post</string>
|
||||
<string name="post_unsaved_success">Post unsaved</string>
|
||||
<string name="post_unsaved_failed">Unable to unsave post</string>
|
||||
<string name="delete_this_post">Delete This Post</string>
|
||||
<string name="delete_this_comment">Delete This Comment</string>
|
||||
<string name="are_you_sure">Are you sure?</string>
|
||||
|
Loading…
Reference in New Issue
Block a user