diff options
author | Thomas <tschneider.ac@gmail.com> | 2023-02-06 14:48:45 +0100 |
---|---|---|
committer | Thomas <tschneider.ac@gmail.com> | 2023-02-06 14:48:45 +0100 |
commit | 5c73717373ee30ed52649c75be228630b5f4b9d2 (patch) | |
tree | 0731da56c406800a6302460366184d23b47a3aee | |
parent | 4837afcfb038ee8d561ffba36a6b5e2b3e4d0695 (diff) |
Fix some crashes
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(); + } } } }); |