mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-03-28 04:15:29 +01:00
Handle invalid uri when opening in Custom Tabs.
This commit is contained in:
parent
478b85e67b
commit
2c6ca51e5c
@ -44,7 +44,11 @@ public class CustomMarkwonView extends MarkwonView {
|
|||||||
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
||||||
customTabsIntent.intent.setPackage(context.getPackageName());
|
customTabsIntent.intent.setPackage(context.getPackageName());
|
||||||
}
|
}
|
||||||
customTabsIntent.launchUrl(context, uri);
|
String uriString = uri.toString();
|
||||||
|
if(!uriString.startsWith("http://") && (!uriString.startsWith("https://"))) {
|
||||||
|
uriString = "http://" + uriString;
|
||||||
|
}
|
||||||
|
customTabsIntent.launchUrl(context, Uri.parse(uriString));
|
||||||
}
|
}
|
||||||
}).build();
|
}).build();
|
||||||
|
|
||||||
|
@ -374,7 +374,15 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
builder.addDefaultShareMenuItem();
|
builder.addDefaultShareMenuItem();
|
||||||
builder.setToolbarColor(mActivity.getResources().getColor(R.color.colorPrimary));
|
builder.setToolbarColor(mActivity.getResources().getColor(R.color.colorPrimary));
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
CustomTabsIntent customTabsIntent = builder.build();
|
||||||
customTabsIntent.launchUrl(mActivity, Uri.parse(mPost.getUrl()));
|
Uri uri = Uri.parse(mPost.getUrl());
|
||||||
|
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
||||||
|
customTabsIntent.intent.setPackage(mActivity.getPackageName());
|
||||||
|
}
|
||||||
|
String uriString = mPost.getUrl();
|
||||||
|
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:
|
||||||
@ -431,7 +439,15 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
builder.addDefaultShareMenuItem();
|
builder.addDefaultShareMenuItem();
|
||||||
builder.setToolbarColor(mActivity.getResources().getColor(R.color.colorPrimary));
|
builder.setToolbarColor(mActivity.getResources().getColor(R.color.colorPrimary));
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
CustomTabsIntent customTabsIntent = builder.build();
|
||||||
customTabsIntent.launchUrl(mActivity, Uri.parse(mPost.getUrl()));
|
Uri uri = Uri.parse(mPost.getUrl());
|
||||||
|
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
||||||
|
customTabsIntent.intent.setPackage(mActivity.getPackageName());
|
||||||
|
}
|
||||||
|
String uriString = mPost.getUrl();
|
||||||
|
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:
|
||||||
@ -451,6 +467,11 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
comment = mVisibleComments.get(holder.getAdapterPosition() - 1);
|
comment = mVisibleComments.get(holder.getAdapterPosition() - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(mIsSingleCommentThreadMode && comment.getId().equals(mSingleCommentId)) {
|
||||||
|
((CommentViewHolder) holder).itemView.setBackgroundColor(
|
||||||
|
mActivity.getResources().getColor(R.color.singleCommentThreadBackgroundColor));
|
||||||
|
}
|
||||||
|
|
||||||
String authorPrefixed = "u/" + comment.getAuthor();
|
String authorPrefixed = "u/" + comment.getAuthor();
|
||||||
((CommentViewHolder) holder).authorTextView.setText(authorPrefixed);
|
((CommentViewHolder) holder).authorTextView.setText(authorPrefixed);
|
||||||
|
|
||||||
@ -722,6 +743,8 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
((CommentViewHolder) holder).expandButton.setVisibility(View.GONE);
|
((CommentViewHolder) holder).expandButton.setVisibility(View.GONE);
|
||||||
((CommentViewHolder) holder).upVoteButton.clearColorFilter();
|
((CommentViewHolder) holder).upVoteButton.clearColorFilter();
|
||||||
((CommentViewHolder) holder).downVoteButton.clearColorFilter();
|
((CommentViewHolder) holder).downVoteButton.clearColorFilter();
|
||||||
|
((CommentViewHolder) holder).itemView.setBackgroundColor(
|
||||||
|
mActivity.getResources().getColor(R.color.cardViewBackgroundColor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1297,6 +1320,8 @@ class CommentAndPostRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerVie
|
|||||||
|
|
||||||
itemView.setOnClickListener(view -> {
|
itemView.setOnClickListener(view -> {
|
||||||
if(mActivity != null && mActivity instanceof ViewPostDetailActivity) {
|
if(mActivity != null && mActivity instanceof ViewPostDetailActivity) {
|
||||||
|
mIsSingleCommentThreadMode = false;
|
||||||
|
mSingleCommentId = null;
|
||||||
((ViewPostDetailActivity) mActivity).changeToSingleThreadMode();
|
((ViewPostDetailActivity) mActivity).changeToSingleThreadMode();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -17,7 +17,8 @@ import static androidx.browser.customtabs.CustomTabsService.ACTION_CUSTOM_TABS_C
|
|||||||
|
|
||||||
public class LinkResolverActivity extends AppCompatActivity {
|
public class LinkResolverActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private static final String POST_PATTERN = "/r/\\w+/comments/\\w+/*[\\w+]*/*";
|
private static final String POST_PATTERN = "/r/\\w+/comments/\\w+/{0,1}\\w+/{0,1}";
|
||||||
|
private static final String COMMENT_PATTERN = "/r/\\w+/comments/\\w+/{0,1}\\w+/\\w+/{0,1}";
|
||||||
private static final String SUBREDDIT_PATTERN = "/r/\\w+/*";
|
private static final String SUBREDDIT_PATTERN = "/r/\\w+/*";
|
||||||
private static final String USER_PATTERN = "/user/\\w+/*";
|
private static final String USER_PATTERN = "/user/\\w+/*";
|
||||||
|
|
||||||
@ -41,6 +42,17 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
} else {
|
} else {
|
||||||
deepLinkError(uri);
|
deepLinkError(uri);
|
||||||
}
|
}
|
||||||
|
} else if(path.matches(COMMENT_PATTERN)) {
|
||||||
|
List<String> segments = uri.getPathSegments();
|
||||||
|
int commentsIndex = segments.lastIndexOf("comments");
|
||||||
|
if(commentsIndex >=0 && commentsIndex < segments.size() - 1) {
|
||||||
|
Intent intent = new Intent(this, ViewPostDetailActivity.class);
|
||||||
|
intent.putExtra(ViewPostDetailActivity.EXTRA_POST_ID, segments.get(commentsIndex + 1));
|
||||||
|
intent.putExtra(ViewPostDetailActivity.EXTRA_SINGLE_COMMENT_ID, segments.get(segments.size() - 1));
|
||||||
|
startActivity(intent);
|
||||||
|
} else {
|
||||||
|
deepLinkError(uri);
|
||||||
|
}
|
||||||
} else if(path.matches(SUBREDDIT_PATTERN)) {
|
} else if(path.matches(SUBREDDIT_PATTERN)) {
|
||||||
String subredditName = path.substring(3);
|
String subredditName = path.substring(3);
|
||||||
if(subredditName.equals("popular") || subredditName.equals("all")) {
|
if(subredditName.equals("popular") || subredditName.equals("all")) {
|
||||||
@ -73,7 +85,11 @@ public class LinkResolverActivity extends AppCompatActivity {
|
|||||||
builder.setToolbarColor(getResources().getColor(R.color.colorPrimary));
|
builder.setToolbarColor(getResources().getColor(R.color.colorPrimary));
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
CustomTabsIntent customTabsIntent = builder.build();
|
||||||
customTabsIntent.intent.setPackage(resolveInfos.get(0).activityInfo.packageName);
|
customTabsIntent.intent.setPackage(resolveInfos.get(0).activityInfo.packageName);
|
||||||
customTabsIntent.launchUrl(this, uri);
|
String uriString = uri.toString();
|
||||||
|
if(!uriString.startsWith("http://") || (!uriString.startsWith("https://"))) {
|
||||||
|
uriString = "http://" + uriString;
|
||||||
|
}
|
||||||
|
customTabsIntent.launchUrl(this, Uri.parse(uriString));
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
|
@ -390,7 +390,15 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
|||||||
builder.addDefaultShareMenuItem();
|
builder.addDefaultShareMenuItem();
|
||||||
builder.setToolbarColor(mContext.getResources().getColor(R.color.colorPrimary));
|
builder.setToolbarColor(mContext.getResources().getColor(R.color.colorPrimary));
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
CustomTabsIntent customTabsIntent = builder.build();
|
||||||
customTabsIntent.launchUrl(mContext, Uri.parse(post.getUrl()));
|
Uri uri = Uri.parse(post.getUrl());
|
||||||
|
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
||||||
|
customTabsIntent.intent.setPackage(mContext.getPackageName());
|
||||||
|
}
|
||||||
|
String uriString = post.getUrl();
|
||||||
|
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:
|
||||||
@ -443,7 +451,15 @@ class PostRecyclerViewAdapter extends PagedListAdapter<Post, RecyclerView.ViewHo
|
|||||||
builder.addDefaultShareMenuItem();
|
builder.addDefaultShareMenuItem();
|
||||||
builder.setToolbarColor(mContext.getResources().getColor(R.color.colorPrimary));
|
builder.setToolbarColor(mContext.getResources().getColor(R.color.colorPrimary));
|
||||||
CustomTabsIntent customTabsIntent = builder.build();
|
CustomTabsIntent customTabsIntent = builder.build();
|
||||||
customTabsIntent.launchUrl(mContext, Uri.parse(noPreviewLinkUrl));
|
Uri uri = Uri.parse(post.getUrl());
|
||||||
|
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
||||||
|
customTabsIntent.intent.setPackage(mContext.getPackageName());
|
||||||
|
}
|
||||||
|
String uriString = noPreviewLinkUrl;
|
||||||
|
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:
|
||||||
|
@ -45,4 +45,6 @@
|
|||||||
<color name="navBarColor">#FFFFFF</color>
|
<color name="navBarColor">#FFFFFF</color>
|
||||||
|
|
||||||
<color name="cardViewBackgroundColor">#FFFFFF</color>
|
<color name="cardViewBackgroundColor">#FFFFFF</color>
|
||||||
|
|
||||||
|
<color name="singleCommentThreadBackgroundColor">#B3E5F9</color>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user