mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-04-14 03:45:39 +02:00
Handle no browser installed when opening links and no apps are eligible to share when sharing.
This commit is contained in:
parent
3bb5e83d2e
commit
8ba7bd7b7e
@ -1,6 +1,7 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.ColorFilter;
|
import android.graphics.ColorFilter;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
@ -22,7 +23,6 @@ import android.widget.Toast;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.browser.customtabs.CustomTabsIntent;
|
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
@ -411,20 +411,14 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
((PostDetailViewHolder) holder).linkTextView.setText(domain);
|
((PostDetailViewHolder) holder).linkTextView.setText(domain);
|
||||||
|
|
||||||
((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> {
|
((PostDetailViewHolder) holder).mImageView.setOnClickListener(view -> {
|
||||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
Intent intent = new Intent(mActivity, LinkResolverActivity.class);
|
||||||
// add share action to menu list
|
|
||||||
builder.addDefaultShareMenuItem();
|
|
||||||
builder.setToolbarColor(mActivity.getResources().getColor(R.color.colorPrimary));
|
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
|
||||||
Uri uri = Uri.parse(mPost.getUrl());
|
Uri uri = Uri.parse(mPost.getUrl());
|
||||||
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
if(uri.getScheme() == null && uri.getHost() == null) {
|
||||||
customTabsIntent.intent.setPackage(mActivity.getPackageName());
|
intent.setData(LinkResolverActivity.getRedditUriByPath(mPost.getUrl()));
|
||||||
|
} else {
|
||||||
|
intent.setData(uri);
|
||||||
}
|
}
|
||||||
String uriString = mPost.getUrl();
|
mActivity.startActivity(intent);
|
||||||
if(!uriString.startsWith("http://") && !uriString.startsWith("https://")) {
|
|
||||||
uriString = "http://" + uriString;
|
|
||||||
}
|
|
||||||
customTabsIntent.launchUrl(mActivity, Uri.parse(uriString));
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case Post.GIF_VIDEO_TYPE:
|
case Post.GIF_VIDEO_TYPE:
|
||||||
@ -477,20 +471,14 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
|
|
||||||
((PostDetailViewHolder) holder).mNoPreviewLinkImageView.setVisibility(View.VISIBLE);
|
((PostDetailViewHolder) holder).mNoPreviewLinkImageView.setVisibility(View.VISIBLE);
|
||||||
((PostDetailViewHolder) holder).mNoPreviewLinkImageView.setOnClickListener(view -> {
|
((PostDetailViewHolder) holder).mNoPreviewLinkImageView.setOnClickListener(view -> {
|
||||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
Intent intent = new Intent(mActivity, LinkResolverActivity.class);
|
||||||
// add share action to menu list
|
|
||||||
builder.addDefaultShareMenuItem();
|
|
||||||
builder.setToolbarColor(mActivity.getResources().getColor(R.color.colorPrimary));
|
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
|
||||||
Uri uri = Uri.parse(mPost.getUrl());
|
Uri uri = Uri.parse(mPost.getUrl());
|
||||||
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
if(uri.getScheme() == null && uri.getHost() == null) {
|
||||||
customTabsIntent.intent.setPackage(mActivity.getPackageName());
|
intent.setData(LinkResolverActivity.getRedditUriByPath(mPost.getUrl()));
|
||||||
|
} else {
|
||||||
|
intent.setData(uri);
|
||||||
}
|
}
|
||||||
String uriString = mPost.getUrl();
|
mActivity.startActivity(intent);
|
||||||
if(!uriString.startsWith("http://") && !uriString.startsWith("https://")) {
|
|
||||||
uriString = "http://" + uriString;
|
|
||||||
}
|
|
||||||
customTabsIntent.launchUrl(mActivity, Uri.parse(uriString));
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case Post.TEXT_TYPE:
|
case Post.TEXT_TYPE:
|
||||||
@ -1078,11 +1066,15 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
});
|
});
|
||||||
|
|
||||||
mShareButton.setOnClickListener(view -> {
|
mShareButton.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
try {
|
||||||
intent.setType("text/plain");
|
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||||
String extraText = mPost.getTitle() + "\n" + mPost.getPermalink();
|
intent.setType("text/plain");
|
||||||
intent.putExtra(Intent.EXTRA_TEXT, extraText);
|
String extraText = mPost.getTitle() + "\n" + mPost.getPermalink();
|
||||||
mActivity.startActivity(Intent.createChooser(intent, "Share"));
|
intent.putExtra(Intent.EXTRA_TEXT, extraText);
|
||||||
|
mActivity.startActivity(Intent.createChooser(intent, mActivity.getString(R.string.share)));
|
||||||
|
} catch (ActivityNotFoundException e) {
|
||||||
|
Toast.makeText(mActivity, R.string.no_activity_found_for_share, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mUpvoteButton.setOnClickListener(view -> {
|
mUpvoteButton.setOnClickListener(view -> {
|
||||||
@ -1257,12 +1249,16 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
});
|
});
|
||||||
|
|
||||||
shareButton.setOnClickListener(view -> {
|
shareButton.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
try {
|
||||||
intent.setType("text/plain");
|
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||||
String extraText = mIsSingleCommentThreadMode ? mVisibleComments.get(getAdapterPosition() - 2).getPermalink()
|
intent.setType("text/plain");
|
||||||
: mVisibleComments.get(getAdapterPosition() - 1).getPermalink();
|
String extraText = mIsSingleCommentThreadMode ? mVisibleComments.get(getAdapterPosition() - 2).getPermalink()
|
||||||
intent.putExtra(Intent.EXTRA_TEXT, extraText);
|
: mVisibleComments.get(getAdapterPosition() - 1).getPermalink();
|
||||||
mActivity.startActivity(Intent.createChooser(intent, "Share"));
|
intent.putExtra(Intent.EXTRA_TEXT, extraText);
|
||||||
|
mActivity.startActivity(Intent.createChooser(intent, mActivity.getString(R.string.share)));
|
||||||
|
} catch (ActivityNotFoundException e) {
|
||||||
|
Toast.makeText(mActivity, R.string.no_activity_found_for_share, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
expandButton.setOnClickListener(view -> {
|
expandButton.setOnClickListener(view -> {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
@ -161,6 +162,131 @@ class CommentsListingRecyclerViewAdapter extends PagedListAdapter<CommentData, R
|
|||||||
modifyCommentBottomSheetFragment.show(((AppCompatActivity) mContext).getSupportFragmentManager(), modifyCommentBottomSheetFragment.getTag());
|
modifyCommentBottomSheetFragment.show(((AppCompatActivity) mContext).getSupportFragmentManager(), modifyCommentBottomSheetFragment.getTag());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
((DataViewHolder) holder).linearLayout.setOnClickListener(view -> {
|
||||||
|
Intent intent = new Intent(mContext, ViewPostDetailActivity.class);
|
||||||
|
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, comment.getLinkId());
|
||||||
|
intent.putExtra(ViewPostDetailActivity.EXTRA_SINGLE_COMMENT_ID, comment.getId());
|
||||||
|
mContext.startActivity(intent);
|
||||||
|
});
|
||||||
|
|
||||||
|
((DataViewHolder) holder).verticalBlock.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
((DataViewHolder) holder).commentMarkdownView.setOnClickListener(view ->
|
||||||
|
((DataViewHolder) holder).linearLayout.callOnClick());
|
||||||
|
|
||||||
|
((DataViewHolder) holder).shareButton.setOnClickListener(view -> {
|
||||||
|
try {
|
||||||
|
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||||
|
intent.setType("text/plain");
|
||||||
|
String extraText = comment.getPermalink();
|
||||||
|
intent.putExtra(Intent.EXTRA_TEXT, extraText);
|
||||||
|
mContext.startActivity(Intent.createChooser(intent, mContext.getString(R.string.share)));
|
||||||
|
} catch (ActivityNotFoundException e) {
|
||||||
|
Toast.makeText(mContext, R.string.no_activity_found_for_share, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
((DataViewHolder) holder).replyButton.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
((DataViewHolder) holder).upvoteButton.setOnClickListener(view -> {
|
||||||
|
if(mAccessToken == null) {
|
||||||
|
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int previousVoteType = comment.getVoteType();
|
||||||
|
String newVoteType;
|
||||||
|
|
||||||
|
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
||||||
|
|
||||||
|
if(previousVoteType != CommentData.VOTE_TYPE_UPVOTE) {
|
||||||
|
//Not upvoted before
|
||||||
|
comment.setVoteType(CommentData.VOTE_TYPE_UPVOTE);
|
||||||
|
newVoteType = RedditUtils.DIR_UPVOTE;
|
||||||
|
((DataViewHolder) holder).upvoteButton
|
||||||
|
.setColorFilter(ContextCompat.getColor(mContext, R.color.upvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.upvoted));
|
||||||
|
} else {
|
||||||
|
//Upvoted before
|
||||||
|
comment.setVoteType(CommentData.VOTE_TYPE_NO_VOTE);
|
||||||
|
newVoteType = RedditUtils.DIR_UNVOTE;
|
||||||
|
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
||||||
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
||||||
|
}
|
||||||
|
|
||||||
|
((DataViewHolder) holder).scoreTextView.setText(Integer.toString(comment.getScore() + comment.getVoteType()));
|
||||||
|
|
||||||
|
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
||||||
|
@Override
|
||||||
|
public void onVoteThingSuccess(int position) {
|
||||||
|
if(newVoteType.equals(RedditUtils.DIR_UPVOTE)) {
|
||||||
|
comment.setVoteType(CommentData.VOTE_TYPE_UPVOTE);
|
||||||
|
((DataViewHolder) holder).upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.upvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.upvoted));
|
||||||
|
} else {
|
||||||
|
comment.setVoteType(CommentData.VOTE_TYPE_NO_VOTE);
|
||||||
|
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
||||||
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
||||||
|
}
|
||||||
|
|
||||||
|
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
||||||
|
((DataViewHolder) holder).scoreTextView.setText(Integer.toString(comment.getScore() + comment.getVoteType()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onVoteThingFail(int position) { }
|
||||||
|
}, comment.getFullName(), newVoteType, holder.getAdapterPosition());
|
||||||
|
});
|
||||||
|
|
||||||
|
((DataViewHolder) holder).downvoteButton.setOnClickListener(view -> {
|
||||||
|
if(mAccessToken == null) {
|
||||||
|
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int previousVoteType = comment.getVoteType();
|
||||||
|
String newVoteType;
|
||||||
|
|
||||||
|
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
||||||
|
|
||||||
|
if(previousVoteType != CommentData.VOTE_TYPE_DOWNVOTE) {
|
||||||
|
//Not downvoted before
|
||||||
|
comment.setVoteType(CommentData.VOTE_TYPE_DOWNVOTE);
|
||||||
|
newVoteType = RedditUtils.DIR_DOWNVOTE;
|
||||||
|
((DataViewHolder) holder).downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.downvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.downvoted));
|
||||||
|
} else {
|
||||||
|
//Downvoted before
|
||||||
|
comment.setVoteType(CommentData.VOTE_TYPE_NO_VOTE);
|
||||||
|
newVoteType = RedditUtils.DIR_UNVOTE;
|
||||||
|
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
||||||
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
||||||
|
}
|
||||||
|
|
||||||
|
((DataViewHolder) holder).scoreTextView.setText(Integer.toString(comment.getScore() + comment.getVoteType()));
|
||||||
|
|
||||||
|
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
||||||
|
@Override
|
||||||
|
public void onVoteThingSuccess(int position1) {
|
||||||
|
if(newVoteType.equals(RedditUtils.DIR_DOWNVOTE)) {
|
||||||
|
comment.setVoteType(CommentData.VOTE_TYPE_DOWNVOTE);
|
||||||
|
((DataViewHolder) holder).downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.downvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
||||||
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.downvoted));
|
||||||
|
} else {
|
||||||
|
comment.setVoteType(CommentData.VOTE_TYPE_NO_VOTE);
|
||||||
|
((DataViewHolder) holder).downvoteButton.clearColorFilter();
|
||||||
|
((DataViewHolder) holder).scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
||||||
|
}
|
||||||
|
|
||||||
|
((DataViewHolder) holder).upvoteButton.clearColorFilter();
|
||||||
|
((DataViewHolder) holder).scoreTextView.setText(Integer.toString(comment.getScore() + comment.getVoteType()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onVoteThingFail(int position1) { }
|
||||||
|
}, comment.getFullName(), newVoteType, holder.getAdapterPosition());
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -232,125 +358,6 @@ class CommentsListingRecyclerViewAdapter extends PagedListAdapter<CommentData, R
|
|||||||
DataViewHolder(View itemView) {
|
DataViewHolder(View itemView) {
|
||||||
super(itemView);
|
super(itemView);
|
||||||
ButterKnife.bind(this, itemView);
|
ButterKnife.bind(this, itemView);
|
||||||
|
|
||||||
linearLayout.setOnClickListener(view -> {
|
|
||||||
Intent intent = new Intent(mContext, ViewPostDetailActivity.class);
|
|
||||||
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, getItem(getAdapterPosition()).getLinkId());
|
|
||||||
intent.putExtra(ViewPostDetailActivity.EXTRA_SINGLE_COMMENT_ID, getItem(getAdapterPosition()).getId());
|
|
||||||
mContext.startActivity(intent);
|
|
||||||
});
|
|
||||||
|
|
||||||
verticalBlock.setVisibility(View.GONE);
|
|
||||||
|
|
||||||
commentMarkdownView.setOnClickListener(view -> linearLayout.callOnClick());
|
|
||||||
|
|
||||||
shareButton.setOnClickListener(view -> {
|
|
||||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
|
||||||
intent.setType("text/plain");
|
|
||||||
String extraText = getItem(getAdapterPosition()).getPermalink();
|
|
||||||
intent.putExtra(Intent.EXTRA_TEXT, extraText);
|
|
||||||
mContext.startActivity(Intent.createChooser(intent, "Share"));
|
|
||||||
});
|
|
||||||
|
|
||||||
replyButton.setVisibility(View.GONE);
|
|
||||||
|
|
||||||
upvoteButton.setOnClickListener(view -> {
|
|
||||||
if(mAccessToken == null) {
|
|
||||||
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int previousVoteType = getItem(getAdapterPosition()).getVoteType();
|
|
||||||
String newVoteType;
|
|
||||||
|
|
||||||
downvoteButton.clearColorFilter();
|
|
||||||
|
|
||||||
if(previousVoteType != CommentData.VOTE_TYPE_UPVOTE) {
|
|
||||||
//Not upvoted before
|
|
||||||
getItem(getAdapterPosition()).setVoteType(CommentData.VOTE_TYPE_UPVOTE);
|
|
||||||
newVoteType = RedditUtils.DIR_UPVOTE;
|
|
||||||
upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.upvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.upvoted));
|
|
||||||
} else {
|
|
||||||
//Upvoted before
|
|
||||||
getItem(getAdapterPosition()).setVoteType(CommentData.VOTE_TYPE_NO_VOTE);
|
|
||||||
newVoteType = RedditUtils.DIR_UNVOTE;
|
|
||||||
upvoteButton.clearColorFilter();
|
|
||||||
scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
|
||||||
}
|
|
||||||
|
|
||||||
scoreTextView.setText(Integer.toString(getItem(getAdapterPosition()).getScore() + getItem(getAdapterPosition()).getVoteType()));
|
|
||||||
|
|
||||||
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
|
||||||
@Override
|
|
||||||
public void onVoteThingSuccess(int position) {
|
|
||||||
if(newVoteType.equals(RedditUtils.DIR_UPVOTE)) {
|
|
||||||
getItem(getAdapterPosition()).setVoteType(CommentData.VOTE_TYPE_UPVOTE);
|
|
||||||
upvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.upvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.upvoted));
|
|
||||||
} else {
|
|
||||||
getItem(getAdapterPosition()).setVoteType(CommentData.VOTE_TYPE_NO_VOTE);
|
|
||||||
upvoteButton.clearColorFilter();
|
|
||||||
scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
|
||||||
}
|
|
||||||
|
|
||||||
downvoteButton.clearColorFilter();
|
|
||||||
scoreTextView.setText(Integer.toString(getItem(getAdapterPosition()).getScore() + getItem(getAdapterPosition()).getVoteType()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onVoteThingFail(int position) { }
|
|
||||||
}, getItem(getAdapterPosition()).getFullName(), newVoteType, getAdapterPosition());
|
|
||||||
});
|
|
||||||
|
|
||||||
downvoteButton.setOnClickListener(view -> {
|
|
||||||
if(mAccessToken == null) {
|
|
||||||
Toast.makeText(mContext, R.string.login_first, Toast.LENGTH_SHORT).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int previousVoteType = getItem(getAdapterPosition()).getVoteType();
|
|
||||||
String newVoteType;
|
|
||||||
|
|
||||||
upvoteButton.clearColorFilter();
|
|
||||||
|
|
||||||
if(previousVoteType != CommentData.VOTE_TYPE_DOWNVOTE) {
|
|
||||||
//Not downvoted before
|
|
||||||
getItem(getAdapterPosition()).setVoteType(CommentData.VOTE_TYPE_DOWNVOTE);
|
|
||||||
newVoteType = RedditUtils.DIR_DOWNVOTE;
|
|
||||||
downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.downvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.downvoted));
|
|
||||||
} else {
|
|
||||||
//Downvoted before
|
|
||||||
getItem(getAdapterPosition()).setVoteType(CommentData.VOTE_TYPE_NO_VOTE);
|
|
||||||
newVoteType = RedditUtils.DIR_UNVOTE;
|
|
||||||
downvoteButton.clearColorFilter();
|
|
||||||
scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
|
||||||
}
|
|
||||||
|
|
||||||
scoreTextView.setText(Integer.toString(getItem(getAdapterPosition()).getScore() + getItem(getAdapterPosition()).getVoteType()));
|
|
||||||
|
|
||||||
VoteThing.voteThing(mOauthRetrofit, mAccessToken, new VoteThing.VoteThingListener() {
|
|
||||||
@Override
|
|
||||||
public void onVoteThingSuccess(int position1) {
|
|
||||||
if(newVoteType.equals(RedditUtils.DIR_DOWNVOTE)) {
|
|
||||||
getItem(getAdapterPosition()).setVoteType(CommentData.VOTE_TYPE_DOWNVOTE);
|
|
||||||
downvoteButton.setColorFilter(ContextCompat.getColor(mContext, R.color.downvoted), android.graphics.PorterDuff.Mode.SRC_IN);
|
|
||||||
scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.downvoted));
|
|
||||||
} else {
|
|
||||||
getItem(getAdapterPosition()).setVoteType(CommentData.VOTE_TYPE_NO_VOTE);
|
|
||||||
downvoteButton.clearColorFilter();
|
|
||||||
scoreTextView.setTextColor(ContextCompat.getColor(mContext, R.color.defaultTextColor));
|
|
||||||
}
|
|
||||||
|
|
||||||
upvoteButton.clearColorFilter();
|
|
||||||
scoreTextView.setText(Integer.toString(getItem(getAdapterPosition()).getScore() + getItem(getAdapterPosition()).getVoteType()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onVoteThingFail(int position1) { }
|
|
||||||
}, getItem(getAdapterPosition()).getFullName(), newVoteType, getAdapterPosition());
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package ml.docilealligator.infinityforreddit;
|
package ml.docilealligator.infinityforreddit;
|
||||||
|
|
||||||
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.ColorFilter;
|
import android.graphics.ColorFilter;
|
||||||
@ -18,7 +19,6 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.browser.customtabs.CustomTabsIntent;
|
|
||||||
import androidx.cardview.widget.CardView;
|
import androidx.cardview.widget.CardView;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.paging.PagedListAdapter;
|
import androidx.paging.PagedListAdapter;
|
||||||
@ -401,20 +401,14 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
|||||||
((DataViewHolder) holder).linkTextView.setText(domain);
|
((DataViewHolder) holder).linkTextView.setText(domain);
|
||||||
|
|
||||||
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
|
((DataViewHolder) holder).imageView.setOnClickListener(view -> {
|
||||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
||||||
// add share action to menu list
|
|
||||||
builder.addDefaultShareMenuItem();
|
|
||||||
builder.setToolbarColor(mContext.getResources().getColor(R.color.colorPrimary));
|
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
|
||||||
Uri uri = Uri.parse(post.getUrl());
|
Uri uri = Uri.parse(post.getUrl());
|
||||||
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
if(uri.getScheme() == null && uri.getHost() == null) {
|
||||||
customTabsIntent.intent.setPackage(mContext.getPackageName());
|
intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
|
||||||
|
} else {
|
||||||
|
intent.setData(uri);
|
||||||
}
|
}
|
||||||
String uriString = post.getUrl();
|
mContext.startActivity(intent);
|
||||||
if(!uriString.startsWith("http://") && !uriString.startsWith("https://")) {
|
|
||||||
uriString = "http://" + uriString;
|
|
||||||
}
|
|
||||||
customTabsIntent.launchUrl(mContext, Uri.parse(uriString));
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case Post.GIF_VIDEO_TYPE:
|
case Post.GIF_VIDEO_TYPE:
|
||||||
@ -462,20 +456,14 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
|||||||
((DataViewHolder) holder).linkTextView.setText(noPreviewLinkDomain);
|
((DataViewHolder) holder).linkTextView.setText(noPreviewLinkDomain);
|
||||||
((DataViewHolder) holder).noPreviewLinkImageView.setVisibility(View.VISIBLE);
|
((DataViewHolder) holder).noPreviewLinkImageView.setVisibility(View.VISIBLE);
|
||||||
((DataViewHolder) holder).noPreviewLinkImageView.setOnClickListener(view -> {
|
((DataViewHolder) holder).noPreviewLinkImageView.setOnClickListener(view -> {
|
||||||
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
Intent intent = new Intent(mContext, LinkResolverActivity.class);
|
||||||
// add share action to menu list
|
|
||||||
builder.addDefaultShareMenuItem();
|
|
||||||
builder.setToolbarColor(mContext.getResources().getColor(R.color.colorPrimary));
|
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
|
||||||
Uri uri = Uri.parse(post.getUrl());
|
Uri uri = Uri.parse(post.getUrl());
|
||||||
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
if(uri.getScheme() == null && uri.getHost() == null) {
|
||||||
customTabsIntent.intent.setPackage(mContext.getPackageName());
|
intent.setData(LinkResolverActivity.getRedditUriByPath(post.getUrl()));
|
||||||
|
} else {
|
||||||
|
intent.setData(uri);
|
||||||
}
|
}
|
||||||
String uriString = noPreviewLinkUrl;
|
mContext.startActivity(intent);
|
||||||
if(!uriString.startsWith("http://") && !uriString.startsWith("https://")) {
|
|
||||||
uriString = "http://" + uriString;
|
|
||||||
}
|
|
||||||
customTabsIntent.launchUrl(mContext, Uri.parse(uriString));
|
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case Post.TEXT_TYPE:
|
case Post.TEXT_TYPE:
|
||||||
@ -626,11 +614,15 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
|||||||
});
|
});
|
||||||
|
|
||||||
((DataViewHolder) holder).shareButton.setOnClickListener(view -> {
|
((DataViewHolder) holder).shareButton.setOnClickListener(view -> {
|
||||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
try {
|
||||||
intent.setType("text/plain");
|
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||||
String extraText = title + "\n" + permalink;
|
intent.setType("text/plain");
|
||||||
intent.putExtra(Intent.EXTRA_TEXT, extraText);
|
String extraText = title + "\n" + permalink;
|
||||||
mContext.startActivity(Intent.createChooser(intent, "Share"));
|
intent.putExtra(Intent.EXTRA_TEXT, extraText);
|
||||||
|
mContext.startActivity(Intent.createChooser(intent, mContext.getString(R.string.share)));
|
||||||
|
} catch (ActivityNotFoundException e) {
|
||||||
|
Toast.makeText(mContext, R.string.no_activity_found_for_share, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,6 @@ class SubmitPost {
|
|||||||
submitPostListener.submitFailed(null);
|
submitPostListener.submitFailed(null);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.i("call_failed", response.message());
|
|
||||||
submitPostListener.submitFailed(response.message());
|
submitPostListener.submitFailed(response.message());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -188,6 +188,7 @@
|
|||||||
|
|
||||||
<string name="open_link_with">Open link with</string>
|
<string name="open_link_with">Open link with</string>
|
||||||
<string name="no_browser_found">No browser found</string>
|
<string name="no_browser_found">No browser found</string>
|
||||||
|
<string name="no_activity_found_for_share">There is no app that can handle the share action</string>
|
||||||
|
|
||||||
<string name="archived_post_vote_unavailable">Archived post. Vote unavailable.</string>
|
<string name="archived_post_vote_unavailable">Archived post. Vote unavailable.</string>
|
||||||
<string name="archived_post_comment_unavailable">Archived post. Comment unavailable.</string>
|
<string name="archived_post_comment_unavailable">Archived post. Comment unavailable.</string>
|
||||||
@ -301,4 +302,6 @@
|
|||||||
<string name="no_image_path_received">No image path received</string>
|
<string name="no_image_path_received">No image path received</string>
|
||||||
<string name="no_video_path_received">No video path received</string>
|
<string name="no_video_path_received">No video path received</string>
|
||||||
<string name="cannot_handle_intent">Could not handle the share request</string>
|
<string name="cannot_handle_intent">Could not handle the share request</string>
|
||||||
|
|
||||||
|
<string name="share">Share</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user