Merge branch 'develop' into 'develop'
Activation of gemini links See merge request tom79/fedilab!1031
This commit is contained in:
commit
79ec4765eb
|
@ -828,6 +828,37 @@ public class Account implements Parcelable {
|
||||||
}
|
}
|
||||||
}, matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
}, 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) {
|
if (accountsMentionUnknown.size() > 0) {
|
||||||
for (Account accountMention : accountsMentionUnknown) {
|
for (Account accountMention : accountsMentionUnknown) {
|
||||||
String targetedAccount = "@" + accountMention.getAcct();
|
String targetedAccount = "@" + accountMention.getAcct();
|
||||||
|
|
|
@ -665,9 +665,7 @@ public class Status implements Parcelable {
|
||||||
intent.putExtras(b);
|
intent.putExtras(b);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
} else {
|
} else {
|
||||||
if (!url.toLowerCase().startsWith("http://") && !url.toLowerCase().startsWith("https://"))
|
Helper.openBrowser(context, url);
|
||||||
finalUrl = "http://" + url;
|
|
||||||
Helper.openBrowser(context, finalUrl);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -891,10 +889,7 @@ public class Status implements Parcelable {
|
||||||
contentSpanTranslated.setSpan(new ClickableSpan() {
|
contentSpanTranslated.setSpan(new ClickableSpan() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(@NonNull View textView) {
|
public void onClick(@NonNull View textView) {
|
||||||
String finalUrl = url;
|
Helper.openBrowser(context, url);
|
||||||
if (!url.toLowerCase().startsWith("http://") && !url.toLowerCase().startsWith("https://"))
|
|
||||||
finalUrl = "http://" + url;
|
|
||||||
Helper.openBrowser(context, finalUrl);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3166,7 +3166,7 @@ public class BaseHelper {
|
||||||
public static void openBrowser(Context context, String url) {
|
public static void openBrowser(Context context, String url) {
|
||||||
SharedPreferences sharedpreferences = context.getSharedPreferences(APP_PREFS, android.content.Context.MODE_PRIVATE);
|
SharedPreferences sharedpreferences = context.getSharedPreferences(APP_PREFS, android.content.Context.MODE_PRIVATE);
|
||||||
boolean embedded_browser = sharedpreferences.getBoolean(SET_EMBEDDED_BROWSER, true);
|
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);
|
Intent intent = new Intent(context, WebviewActivity.class);
|
||||||
Bundle b = new Bundle();
|
Bundle b = new Bundle();
|
||||||
String finalUrl = url;
|
String finalUrl = url;
|
||||||
|
|
Loading…
Reference in New Issue