summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android/client
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android/client')
-rw-r--r--app/src/main/java/app/fedilab/android/client/Entities/Account.java14
-rw-r--r--app/src/main/java/app/fedilab/android/client/Entities/Status.java45
2 files changed, 33 insertions, 26 deletions
diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Account.java b/app/src/main/java/app/fedilab/android/client/Entities/Account.java
index 0a6f3e98e..65e9ad7f5 100644
--- a/app/src/main/java/app/fedilab/android/client/Entities/Account.java
+++ b/app/src/main/java/app/fedilab/android/client/Entities/Account.java
@@ -139,7 +139,7 @@ public class Account implements Parcelable {
private String invite_request;
private String created_by_application_id;
private String invited_by_account_id;
- private boolean emojiFound = false;
+ private transient boolean emojiFound = false;
public Account() {
}
@@ -202,7 +202,7 @@ public class Account implements Parcelable {
public static void makeAccountNameEmoji(final WeakReference<Context> contextWeakReference, Account account) {
Context context = contextWeakReference.get();
- if ((context instanceof Activity && ((Activity) context).isFinishing()) || account.getDisplay_name() == null)
+ if ((context instanceof Activity && ((Activity) context).isFinishing()) || account == null || account.getDisplay_name() == null)
return;
account.setDisplayNameSpan(new SpannableString(account.getDisplay_name()));
@@ -723,7 +723,7 @@ public class Account implements Parcelable {
int startPositionTar = spannableString.toString().indexOf("@" + this.getMoved_to_account().getAcct());
int endPositionTar = startPositionTar + ("@" + this.getMoved_to_account().getAcct()).length();
final Account idTar = this.getMoved_to_account();
- if (endPositionTar <= spannableString.toString().length() && endPositionTar >= startPositionTar)
+ if (startPositionTar >= 0 && endPositionTar <= spannableString.toString().length() && endPositionTar >= startPositionTar)
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -801,7 +801,7 @@ public class Account implements Parcelable {
int matchStart = matcher.start(0);
int matchEnd = matcher.end();
final String url = fieldSpan.toString().substring(matchStart, matchEnd);
- if (matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
+ if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -832,7 +832,7 @@ public class Account implements Parcelable {
int matchStart = matcher.start(0);
int matchEnd = matcher.end();
final String email = fieldSpan.toString().substring(matchStart, matchEnd);
- if (matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
+ if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -865,7 +865,7 @@ public class Account implements Parcelable {
int matchStart = matcher.start(1);
int matchEnd = matcher.end();
final String tag = fieldSpan.toString().substring(matchStart, matchEnd);
- if (matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart)
+ if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart)
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -935,7 +935,7 @@ public class Account implements Parcelable {
int matchStart = matcher.start(0);
int matchEnd = matcher.end();
final String url = fieldSpan.toString().substring(matchStart, matchEnd);
- if (matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
+ if (matchStart >= 0 && matchEnd <= fieldSpan.toString().length() && matchEnd >= matchStart) {
fieldSpan.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Status.java b/app/src/main/java/app/fedilab/android/client/Entities/Status.java
index edd0862c5..b9cd3f100 100644
--- a/app/src/main/java/app/fedilab/android/client/Entities/Status.java
+++ b/app/src/main/java/app/fedilab/android/client/Entities/Status.java
@@ -145,17 +145,17 @@ public class Status implements Parcelable {
private Card card;
private String language;
private boolean isTranslated = false;
- private boolean isEmojiFound = false;
- private boolean isPollEmojiFound = false;
- private boolean isImageFound = false;
- private boolean isEmojiTranslateFound = false;
+ private transient boolean isEmojiFound = false;
+ private transient boolean isPollEmojiFound = false;
+ private transient boolean isImageFound = false;
+ private transient boolean isEmojiTranslateFound = false;
private boolean isTranslationShown = false;
private boolean isNew = false;
private boolean isVisible = true;
private boolean fetchMore = false;
private String content, contentCW, contentTranslated;
private SpannableString contentSpan, contentSpanCW, contentSpanTranslated;
- private RetrieveFeedsAsyncTask.Type type;
+ private transient RetrieveFeedsAsyncTask.Type type;
private int itemViewType;
private String conversationId;
private boolean isExpanded = false;
@@ -184,9 +184,9 @@ public class Status implements Parcelable {
private List<String> imageURL;
private int viewType;
private boolean isFocused = false;
- private long db_id;
- private boolean commentsFetched = false;
- private List<Status> comments = new ArrayList<>();
+ private transient long db_id;
+ private transient boolean commentsFetched = false;
+ private transient List<Status> comments = new ArrayList<>();
public Status() {
}
@@ -423,6 +423,7 @@ public class Status implements Parcelable {
HashMap<String, String> targetedURL = new HashMap<>();
HashMap<String, Account> accountsMentionUnknown = new HashMap<>();
String liveInstance = Helper.getLiveInstance(context);
+ int i = 1;
while (matcher.find()) {
String key;
@@ -433,14 +434,14 @@ public class Status implements Parcelable {
key = key.substring(1);
if (!key.startsWith("#") && !key.startsWith("@") && !key.trim().equals("") && !Objects.requireNonNull(matcher.group(2)).contains("search?tag=") && !Objects.requireNonNull(matcher.group(2)).contains(liveInstance + "/users/")) {
-
String url;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
url = Html.fromHtml(matcher.group(2), Html.FROM_HTML_MODE_LEGACY).toString();
} else {
url = Html.fromHtml(matcher.group(2)).toString();
}
- targetedURL.put(key, url);
+ targetedURL.put(key + "|" + i, url);
+ i++;
} else if (key.startsWith("@") || Objects.requireNonNull(matcher.group(2)).contains(liveInstance + "/users/")) {
String acct;
String url;
@@ -524,7 +525,7 @@ public class Status implements Parcelable {
int matchStart = matcher.start(2);
int matchEnd = matcher.end();
final String twittername = matcher.group(2);
- if (matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
+ if (matchStart >= 0 && matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
spannableStringT.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -573,7 +574,7 @@ public class Status implements Parcelable {
endPosition = startPosition + key.length();
}
//Accounts can be mentioned several times so we have to loop
- if (endPosition <= spannableStringT.toString().length() && endPosition >= startPosition)
+ if (startPosition >= 0 && endPosition <= spannableStringT.toString().length() && endPosition >= startPosition)
spannableStringT.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -603,14 +604,19 @@ public class Status implements Parcelable {
}
if (targetedURL.size() > 0) {
Iterator it = targetedURL.entrySet().iterator();
+ int endPosition = 0;
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
- String key = (String) pair.getKey();
+ String key = ((String) pair.getKey()).split("\\|")[0];
+
String url = (String) pair.getValue();
if (spannableStringT.toString().toLowerCase().contains(key.toLowerCase())) {
//Accounts can be mentioned several times so we have to loop
- int startPosition = spannableStringT.toString().toLowerCase().indexOf(key.toLowerCase());
- int endPosition = startPosition + key.length();
+ int startPosition = spannableStringT.toString().toLowerCase().indexOf(key.toLowerCase(), endPosition);
+ if (startPosition < 0) {
+ startPosition = 0;
+ }
+ endPosition = startPosition + key.length();
if (key.contains("…") && !key.endsWith("…")) {
key = key.split("…")[0] + "…";
SpannableStringBuilder ssb = new SpannableStringBuilder();
@@ -782,7 +788,7 @@ public class Status implements Parcelable {
int matchStart = matcher.start(1);
int matchEnd = matcher.end();
final String tag = spannableStringT.toString().substring(matchStart, matchEnd);
- if (matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
+ if (matchStart >= 0 && matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
spannableStringT.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -791,6 +797,7 @@ public class Status implements Parcelable {
Bundle b = new Bundle();
b.putString("tag", tag.substring(1));
intent.putExtras(b);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
@@ -811,7 +818,7 @@ public class Status implements Parcelable {
int matchStart = matcher.start(1);
int matchEnd = matcher.end();
final String groupname = spannableStringT.toString().substring(matchStart, matchEnd);
- if (matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
+ if (matchStart >= 0 && matchEnd <= spannableStringT.toString().length() && matchEnd >= matchStart)
spannableStringT.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -864,7 +871,7 @@ public class Status implements Parcelable {
int matchStart = matcherALink.start();
int matchEnd = matcherALink.end();
final String url = contentSpanTranslated.toString().substring(matcherALink.start(1), matcherALink.end(1));
- if (matchEnd <= contentSpanTranslated.toString().length() && matchEnd >= matchStart)
+ if (matchStart >= 0 && matchEnd <= contentSpanTranslated.toString().length() && matchEnd >= matchStart)
contentSpanTranslated.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View textView) {
@@ -1307,7 +1314,7 @@ public class Status implements Parcelable {
}
public String getContent() {
- return content;
+ return content.replaceAll("\\p{C}", "?");
}
public void setContent(Context context, String content) {