diff options
Diffstat (limited to 'app/src/main/java/app/fedilab')
15 files changed, 138 insertions, 107 deletions
diff --git a/app/src/main/java/app/fedilab/android/activities/BaseActivity.java b/app/src/main/java/app/fedilab/android/activities/BaseActivity.java index 6ecb3e377..96f7a25d9 100644 --- a/app/src/main/java/app/fedilab/android/activities/BaseActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/BaseActivity.java @@ -6,7 +6,6 @@ import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.os.Bundle; -import android.os.StrictMode; import android.view.ActionMode; import android.view.View; import android.widget.Toast; @@ -25,7 +24,6 @@ import org.jetbrains.annotations.NotNull; import java.util.Timer; -import app.fedilab.android.BuildConfig; import app.fedilab.android.helper.Helper; import es.dmoral.toasty.Toasty; diff --git a/app/src/main/java/app/fedilab/android/activities/LoginActivity.java b/app/src/main/java/app/fedilab/android/activities/LoginActivity.java index 692f0c430..5207547ff 100644 --- a/app/src/main/java/app/fedilab/android/activities/LoginActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/LoginActivity.java @@ -593,7 +593,12 @@ public class LoginActivity extends BaseActivity { editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token); editor.apply(); //Update the account with the token; - new UpdateAccountInfoAsyncTask(LoginActivity.this, token, client_id, client_secret, refresh_token, instance, socialNetwork).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + if (instance != null) { + new UpdateAccountInfoAsyncTask(LoginActivity.this, token, client_id, client_secret, refresh_token, instance, socialNetwork).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + } else { + connectionButton.setEnabled(true); + Toasty.error(LoginActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show(); + } } catch (JSONException e) { e.printStackTrace(); } diff --git a/app/src/main/java/app/fedilab/android/activities/TootActivity.java b/app/src/main/java/app/fedilab/android/activities/TootActivity.java index 569ea9867..b57b77ae5 100644 --- a/app/src/main/java/app/fedilab/android/activities/TootActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/TootActivity.java @@ -207,6 +207,7 @@ import static app.fedilab.android.helper.Helper.THEME_BLACK; import static app.fedilab.android.helper.Helper.THEME_DARK; import static app.fedilab.android.helper.Helper.THEME_LIGHT; import static app.fedilab.android.helper.Helper.countWithEmoji; +import static app.fedilab.android.helper.Helper.isValidContextForGlide; /** @@ -646,7 +647,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, } } - public static String manageMentions(Context context, String userIdReply, Status tootReply) { + public static String manageMentions(String userIdReply, Status tootReply) { String contentView = ""; //Retrieves mentioned accounts + OP and adds them at the beginin of the toot ArrayList<String> mentionedAccountsAdded = new ArrayList<>(); @@ -1340,53 +1341,57 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, it.remove(); } if (fileName != null) { - Glide.with(imageView.getContext()) - .asBitmap() - .load(fileName) - .into(new CustomTarget<Bitmap>() { - @Override - public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) { - imageView.setImageBitmap(resource); - } + if (isValidContextForGlide(imageView.getContext())) { + Glide.with(imageView.getContext()) + .asBitmap() + .load(fileName) + .into(new CustomTarget<Bitmap>() { + @Override + public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) { + imageView.setImageBitmap(resource); + } - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { - } - }); + } + }); + } } } } else { - String finalUrl = url; - Glide.with(imageView.getContext()) - .asBitmap() - .load(url) - .error(Glide.with(imageView).asBitmap().load(R.drawable.ic_audio_wave)) - .into(new CustomTarget<Bitmap>() { - @Override - public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) { - imageView.setImageBitmap(resource); - if (displayWYSIWYG()) { - url_for_media = finalUrl; - Iterator it = filesMap.entrySet().iterator(); - String fileName = null; - while (it.hasNext()) { - Map.Entry pair = (Map.Entry) it.next(); - fileName = (String) pair.getKey(); - it.remove(); - } - if (fileName != null && fileName.contains("fedilabins_")) { - wysiwyg.insertImage(resource); + if (isValidContextForGlide(imageView.getContext())) { + String finalUrl = url; + Glide.with(imageView.getContext()) + .asBitmap() + .load(url) + .error(Glide.with(imageView).asBitmap().load(R.drawable.ic_audio_wave)) + .into(new CustomTarget<Bitmap>() { + @Override + public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) { + imageView.setImageBitmap(resource); + if (displayWYSIWYG()) { + url_for_media = finalUrl; + Iterator it = filesMap.entrySet().iterator(); + String fileName = null; + while (it.hasNext()) { + Map.Entry pair = (Map.Entry) it.next(); + fileName = (String) pair.getKey(); + it.remove(); + } + if (fileName != null && fileName.contains("fedilabins_")) { + wysiwyg.insertImage(resource); + } } } - } - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { + @Override + public void onLoadCleared(@Nullable Drawable placeholder) { - } - }); + } + }); + } } @@ -2246,8 +2251,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, if (namebar != null && namebar.getParent() != null) ((ViewGroup) namebar.getParent()).removeView(namebar); } - List<Attachment> tmp_attachment = new ArrayList<>(); - tmp_attachment.addAll(attachments); + List<Attachment> tmp_attachment = new ArrayList<>(attachments); attachments.removeAll(tmp_attachment); tmp_attachment.clear(); } @@ -2585,8 +2589,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, if (namebar != null && namebar.getParent() != null) ((ViewGroup) namebar.getParent()).removeView(namebar); } - List<Attachment> tmp_attachment = new ArrayList<>(); - tmp_attachment.addAll(attachments); + List<Attachment> tmp_attachment = new ArrayList<>(attachments); attachments.removeAll(tmp_attachment); tmp_attachment.clear(); } @@ -3069,9 +3072,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, } }); imageView.setTag(attachment.getId()); - imageView.setOnClickListener(view -> { - imageView.setOnClickListener(view1 -> showAddDescription(attachment)); - }); + imageView.setOnClickListener(view -> imageView.setOnClickListener(view1 -> showAddDescription(attachment))); imageView.setOnLongClickListener(view -> { showRemove(imageView.getId()); return false; @@ -3396,7 +3397,7 @@ public class TootActivity extends BaseActivity implements UploadStatusDelegate, private void displayPollPopup() { AlertDialog.Builder alertPoll = new AlertDialog.Builder(TootActivity.this, style); alertPoll.setTitle(R.string.create_poll); - View view = getLayoutInflater().inflate(R.layout.popup_poll, null); + View view = getLayoutInflater().inflate(R.layout.popup_poll, new LinearLayout(TootActivity.this), false); alertPoll.setView(view); Spinner poll_choice = view.findViewById(R.id.poll_choice); Spinner poll_duration = view.findViewById(R.id.poll_duration); diff --git a/app/src/main/java/app/fedilab/android/activities/WebviewActivity.java b/app/src/main/java/app/fedilab/android/activities/WebviewActivity.java index 181b39523..a0eda86da 100644 --- a/app/src/main/java/app/fedilab/android/activities/WebviewActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/WebviewActivity.java @@ -190,7 +190,7 @@ public class WebviewActivity extends BaseActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { if (!peertubeLink) - setCount(this, "0"); + setCount(WebviewActivity.this, "0"); defaultMenu = menu; return super.onPrepareOptionsMenu(menu); } diff --git a/app/src/main/java/app/fedilab/android/activities/WebviewConnectActivity.java b/app/src/main/java/app/fedilab/android/activities/WebviewConnectActivity.java index f360dcc3c..ffddd14ff 100644 --- a/app/src/main/java/app/fedilab/android/activities/WebviewConnectActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/WebviewConnectActivity.java @@ -150,7 +150,9 @@ public class WebviewConnectActivity extends BaseActivity { } }); - + if (instance == null) { + finish(); + } webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { @@ -200,6 +202,7 @@ public class WebviewConnectActivity extends BaseActivity { }); webView.loadUrl(LoginActivity.redirectUserToAuthorizeAndLogin(WebviewConnectActivity.this, clientId, instance)); + } @Override 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) { diff --git a/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java index de0124764..b9fe42e2e 100644 --- a/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/PixelfedListAdapter.java @@ -459,7 +459,7 @@ public class PixelfedListAdapter extends RecyclerView.Adapter implements OnPostA InputMethodManager.SHOW_FORCED, 0); EditText content_cw = new EditText(context); content_cw.setText(status.getReblog() != null ? status.getReblog().getSpoiler_text() : status.getSpoiler_text()); - String content = TootActivity.manageMentions(context, userId, status.getReblog() != null ? status.getReblog() : status); + String content = TootActivity.manageMentions(userId, status.getReblog() != null ? status.getReblog() : status); TextWatcher textWatcher = PixelfedComposeActivity.initializeTextWatcher(context, social, holder.quick_reply_text, holder.toot_space_left, null, null, PixelfedListAdapter.this, PixelfedListAdapter.this, PixelfedListAdapter.this); holder.quick_reply_text.addTextChangedListener(textWatcher); holder.quick_reply_text.setText(content); diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index b06d2aa75..4c7da76a2 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -480,6 +480,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct public void onPostStatusAction(APIResponse apiResponse) { if (apiResponse.getError() != null) { Toasty.error(context, apiResponse.getError().getError(), Toast.LENGTH_SHORT).show(); + storeToot(); return; } final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE); @@ -487,7 +488,6 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct String instance = Helper.getLiveInstance(context); boolean split_toot = sharedpreferences.getBoolean(Helper.SET_AUTOMATICALLY_SPLIT_TOOTS + userId + instance, false); - if (split_toot && splitToot != null && stepSpliToot < splitToot.size()) { String tootContent = splitToot.get(stepSpliToot); stepSpliToot += 1; diff --git a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java index 283b59c04..9bb0f09e9 100644 --- a/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/ContentSettingsFragment.java @@ -2406,6 +2406,10 @@ public class ContentSettingsFragment extends Fragment implements OnRetrieveRemot editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "ca"); editor.commit(); break; + case 22: + editor.putString(Helper.SET_DEFAULT_LOCALE_NEW, "szl"); + editor.commit(); + break; } PackageManager packageManager = context.getPackageManager(); diff --git a/app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java b/app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java index 5c8859b55..1aa301fe5 100644 --- a/app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/DisplayStatusFragment.java @@ -1062,7 +1062,6 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter @Override public void onRetrieveFeedsAfterBookmark(APIResponse apiResponse) { - if (statusListAdapter == null && pixelfedListAdapter == null) return; if (apiResponse == null || (apiResponse.getError() != null && apiResponse.getError().getStatusCode() != 404 && apiResponse.getError().getStatusCode() != 501)) { @@ -1078,36 +1077,42 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter return; } List<Status> statuses = apiResponse.getStatuses(); - if (statuses == null || statuses.size() == 0 || this.statuses == null) return; //Find the position of toots between those already present int position = 0; - if (position < this.statuses.size() && statuses.get(0).getCreated_at() != null && this.statuses.get(position).getCreated_at() != null) { while (position < this.statuses.size() && statuses.get(0).getCreated_at().before(this.statuses.get(position).getCreated_at())) { position++; } } ArrayList<Status> tmpStatuses = new ArrayList<>(); - for (Status tmpStatus : statuses) { - //Put the toot at its place in the list (id desc) - if (!apiResponse.isFetchmore() && this.statuses.size() > 0 && !this.statuses.contains(tmpStatus) && tmpStatus.getCreated_at() != null && this.statuses.get(0).getCreated_at() != null && tmpStatus.getCreated_at().after(this.statuses.get(0).getCreated_at())) { //Element not already added - //Mark status at new ones when their id is greater than the last read toot id - if ((type == RetrieveFeedsAsyncTask.Type.HOME || type == RetrieveFeedsAsyncTask.Type.PF_HOME) && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate)) { - tmpStatus.setNew(true); - MainActivity.countNewStatus++; - } - tmpStatuses.add(tmpStatus); - } else if (apiResponse.isFetchmore() && !this.statuses.contains(tmpStatus)) { //Element not already added - //Mark status at new ones when their id is greater than the last read toot id - if ((type == RetrieveFeedsAsyncTask.Type.HOME || type == RetrieveFeedsAsyncTask.Type.PF_HOME) && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate)) { - tmpStatus.setNew(true); - MainActivity.countNewStatus++; + + + if (this.statuses.size() > 0) { + for (Status tmpStatus : statuses) { + //Put the toot at its place in the list (id desc) + if (!apiResponse.isFetchmore() && this.statuses.size() > 0 && !this.statuses.contains(tmpStatus) && tmpStatus.getCreated_at() != null && this.statuses.get(0).getCreated_at() != null && tmpStatus.getCreated_at().after(this.statuses.get(0).getCreated_at())) { //Element not already added + //Mark status at new ones when their id is greater than the last read toot id + if ((type == RetrieveFeedsAsyncTask.Type.HOME || type == RetrieveFeedsAsyncTask.Type.PF_HOME) && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate)) { + tmpStatus.setNew(true); + MainActivity.countNewStatus++; + } + tmpStatuses.add(tmpStatus); + } else if (apiResponse.isFetchmore() && !this.statuses.contains(tmpStatus)) { //Element not already added + //Mark status at new ones when their id is greater than the last read toot id + if ((type == RetrieveFeedsAsyncTask.Type.HOME || type == RetrieveFeedsAsyncTask.Type.PF_HOME) && lastReadTootDate != null && tmpStatus.getCreated_at().after(lastReadTootDate)) { + tmpStatus.setNew(true); + MainActivity.countNewStatus++; + } + tmpStatuses.add(tmpStatus); } - tmpStatuses.add(tmpStatus); } + } else { + this.statuses.addAll(statuses); + tmpStatuses.addAll(statuses); } + try { ((MainActivity) context).updateHomeCounter(); } catch (Exception ignored) { diff --git a/app/src/main/java/app/fedilab/android/helper/Helper.java b/app/src/main/java/app/fedilab/android/helper/Helper.java index d0ede0a82..028870d21 100644 --- a/app/src/main/java/app/fedilab/android/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/helper/Helper.java @@ -3135,6 +3135,7 @@ public class Helper { finalUrl = "http://" + url; b.putString("url", finalUrl); intent.putExtras(b); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } else { boolean custom_tabs = sharedpreferences.getBoolean(Helper.SET_CUSTOM_TABS, true); @@ -3149,6 +3150,7 @@ public class Helper { } |