Merge branch 'develop' into 'develop'

Activation of gemini links

See merge request tom79/fedilab!1031
This commit is contained in:
Thomas 2021-02-19 13:31:33 +00:00
commit 79ec4765eb
3 changed files with 34 additions and 8 deletions

View File

@ -828,6 +828,37 @@ public class Account implements Parcelable {
}
}, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
matcher = Pattern.compile("gemini://([\\d\\w.-]*)(:\\d+)?(/\\S*)?").matcher(fieldSpan);
while (matcher.find()) {
URLSpan[] urls = fieldSpan.getSpans(0, fieldSpan.length(), URLSpan.class);
for (URLSpan span : urls)
fieldSpan.removeSpan(span);
int matchStart = matcher.start(0);
int matchEnd = matcher.end();
final String url = fieldSpan.toString().substring(matchStart, matchEnd);
if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
try {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(intent);
} catch (Exception e) {
Toasty.error(context, context.getString(R.string.toast_no_apps), Toast.LENGTH_LONG).show();
}
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.setColor(link_color);
}
}, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
fieldsSpan.put(keySpan, fieldSpan);
}
}
if (accountsMentionUnknown.size() > 0) {
for (Account accountMention : accountsMentionUnknown) {
String targetedAccount = "@" + accountMention.getAcct();

View File

@ -665,9 +665,7 @@ public class Status implements Parcelable {
intent.putExtras(b);
context.startActivity(intent);
} else {
if (!url.toLowerCase().startsWith("http://") && !url.toLowerCase().startsWith("https://"))
finalUrl = "http://" + url;
Helper.openBrowser(context, finalUrl);
Helper.openBrowser(context, url);
}
}
@ -891,10 +889,7 @@ public class Status implements Parcelable {
contentSpanTranslated.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
String finalUrl = url;
if (!url.toLowerCase().startsWith("http://") && !url.toLowerCase().startsWith("https://"))
finalUrl = "http://" + url;
Helper.openBrowser(context, finalUrl);
Helper.openBrowser(context, url);
}
@Override

View File

@ -3166,7 +3166,7 @@ public class BaseHelper {
public static void openBrowser(Context context, String url) {
SharedPreferences sharedpreferences = context.getSharedPreferences(APP_PREFS, android.content.Context.MODE_PRIVATE);
boolean embedded_browser = sharedpreferences.getBoolean(SET_EMBEDDED_BROWSER, true);
if (embedded_browser) {
if (embedded_browser && !url.toLowerCase().startsWith("gemini://")) {
Intent intent = new Intent(context, WebviewActivity.class);
Bundle b = new Bundle();
String finalUrl = url;