mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2025-03-31 06:25:38 +02:00
58 lines
2.5 KiB
Java
58 lines
2.5 KiB
Java
package CustomView;
|
|
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.net.Uri;
|
|
import android.util.AttributeSet;
|
|
|
|
import androidx.annotation.Nullable;
|
|
import androidx.browser.customtabs.CustomTabsIntent;
|
|
|
|
import ml.docilealligator.infinityforreddit.R;
|
|
import ml.docilealligator.infinityforreddit.ViewSubredditDetailActivity;
|
|
import ml.docilealligator.infinityforreddit.ViewUserDetailActivity;
|
|
import ru.noties.markwon.SpannableConfiguration;
|
|
import ru.noties.markwon.view.MarkwonView;
|
|
|
|
public class CustomMarkwonView extends MarkwonView {
|
|
|
|
public CustomMarkwonView(Context context) {
|
|
super(context);
|
|
}
|
|
|
|
public CustomMarkwonView(Context context, AttributeSet attrs) {
|
|
super(context, attrs);
|
|
}
|
|
|
|
public void setMarkdown(@Nullable String markdown, Context context) {
|
|
SpannableConfiguration configuration = SpannableConfiguration.builder(context).linkResolver((view, link) -> {
|
|
if(link.startsWith("/u/") || link.startsWith("u/")) {
|
|
Intent intent = new Intent(context, ViewUserDetailActivity.class);
|
|
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, link.substring(3));
|
|
context.startActivity(intent);
|
|
} else if(link.startsWith("/r/") || link.startsWith("r/")) {
|
|
Intent intent = new Intent(context, ViewSubredditDetailActivity.class);
|
|
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, link.substring(3));
|
|
context.startActivity(intent);
|
|
} else {
|
|
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
|
|
// add share action to menu list
|
|
builder.addDefaultShareMenuItem();
|
|
builder.setToolbarColor(context.getResources().getColor(R.color.colorPrimary));
|
|
CustomTabsIntent customTabsIntent = builder.build();
|
|
Uri uri = Uri.parse(link);
|
|
if(uri.getHost() != null && uri.getHost().contains("reddit.com")) {
|
|
customTabsIntent.intent.setPackage(context.getPackageName());
|
|
}
|
|
String uriString = uri.toString();
|
|
if(!uriString.startsWith("http://") && (!uriString.startsWith("https://"))) {
|
|
uriString = "http://" + uriString;
|
|
}
|
|
customTabsIntent.launchUrl(context, Uri.parse(uriString));
|
|
}
|
|
}).build();
|
|
|
|
super.setMarkdown(configuration, markdown);
|
|
}
|
|
}
|