summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-02-06 14:48:45 +0100
committerThomas <tschneider.ac@gmail.com>2023-02-06 14:48:45 +0100
commit5c73717373ee30ed52649c75be228630b5f4b9d2 (patch)
tree0731da56c406800a6302460366184d23b47a3aee
parent4837afcfb038ee8d561ffba36a6b5e2b3e4d0695 (diff)
Fix some crashes
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/MastodonHelper.java6
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java13
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMediaProfile.java4
3 files changed, 16 insertions, 7 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/MastodonHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/MastodonHelper.java
index 7d00f7bf7..0c27c57e7 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/helper/MastodonHelper.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/helper/MastodonHelper.java
@@ -130,8 +130,12 @@ public class MastodonHelper {
* @return Pagination
*/
public static Pagination getPagination(Headers headers) {
- String link = headers.get("Link");
+
Pagination pagination = new Pagination();
+ if (headers == null) {
+ return pagination;
+ }
+ String link = headers.get("Link");
if (link != null) {
Pattern patternMaxId = Pattern.compile("max_id=([0-9a-zA-Z]+).*");
Matcher matcherMaxId = patternMaxId.matcher(link);
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
index a6e5ce332..1353d368e 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java
@@ -2137,7 +2137,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
//We hide the button
status.isFetchMore = false;
String fromId;
- if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
+ if (status.positionFetchMore == Status.PositionFetchMore.TOP || holder.getBindingAdapterPosition() == 0) {
fromId = statusList.get(holder.getBindingAdapterPosition()).id;
} else {
fromId = statusList.get(holder.getBindingAdapterPosition() - 1).id;
@@ -2158,7 +2158,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
statusIdMin = status.id;
}
}
- if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
+ if (status.positionFetchMore == Status.PositionFetchMore.TOP || holder.getBindingAdapterPosition() == 0) {
statusIdMax = statusList.get(holder.getBindingAdapterPosition()).id;
} else {
statusIdMax = statusList.get(holder.getBindingAdapterPosition() - 1).id;
@@ -2470,6 +2470,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
public List<Attachment> getPreloadItems(int position) {
List<Attachment> attachments = new ArrayList<>();
int max_size = statusList.size();
+ if (max_size == 0) {
+ return attachments;
+ }
int siblings = 3;
int from = Math.max((position - siblings), 0);
if (from > max_size - 1) {
@@ -2646,7 +2649,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
status.isFetchMore = false;
notifyItemChanged(holder.getBindingAdapterPosition());
String fromId;
- if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
+ if (status.positionFetchMore == Status.PositionFetchMore.TOP || holder.getBindingAdapterPosition() == 0) {
fromId = statusList.get(holder.getBindingAdapterPosition()).id;
} else {
fromId = statusList.get(holder.getBindingAdapterPosition() - 1).id;
@@ -2664,7 +2667,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
minId = status.id;
}
}
- if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
+ if (status.positionFetchMore == Status.PositionFetchMore.TOP || holder.getBindingAdapterPosition() == 0) {
maxId = statusList.get(holder.getBindingAdapterPosition()).id;
} else {
maxId = statusList.get(holder.getBindingAdapterPosition() - 1).id;
@@ -2702,7 +2705,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
//We hide the button
status.isFetchMore = false;
String fromId;
- if (status.positionFetchMore == Status.PositionFetchMore.TOP) {
+ if (status.positionFetchMore == Status.PositionFetchMore.TOP || holder.getBindingAdapterPosition() == 0) {
fromId = statusList.get(holder.getBindingAdapterPosition()).id;
} else {
fromId = statusList.get(holder.getBindingAdapterPosition() - 1).id;
diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMediaProfile.java b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMediaProfile.java
index 6e9a14669..c6da7a0b6 100644
--- a/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMediaProfile.java
+++ b/app/src/main/java/app/fedilab/android/mastodon/ui/fragment/media/FragmentMediaProfile.java
@@ -96,7 +96,9 @@ public class FragmentMediaProfile extends Fragment {
accountsVM.getAccountStatuses(tempInstance, null, accountId, null, null, null, null, null, true, false, MastodonHelper.statusesPerCall(requireActivity()))
.observe(getViewLifecycleOwner(), statuses -> initializeStatusesCommonView(statuses));
} else {
- Toasty.error(requireActivity(), getString(R.string.toast_fetch_error), Toasty.LENGTH_LONG).show();
+ if (isAdded() && !requireActivity().isFinishing()) {
+ Toasty.error(requireActivity(), getString(R.string.toast_fetch_error), Toasty.LENGTH_LONG).show();
+ }
}
}
});