diff options
author | Thomas <tschneider.ac@gmail.com> | 2023-03-13 17:19:38 +0100 |
---|---|---|
committer | Thomas <tschneider.ac@gmail.com> | 2023-03-13 17:19:38 +0100 |
commit | fdd39704efe16a02e658248a2e3e510669c6b4a7 (patch) | |
tree | ab23df7d4108489a5d274638c8894bb3862b96d2 | |
parent | 25c372280f8e85c9c7b25024074934f15c7ab7e3 (diff) |
Fix jumps with Akkoma/Pleroma when media preview size is not set
5 files changed, 27 insertions, 16 deletions
diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Attachment.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Attachment.java index ba06b6695..53718c0f7 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Attachment.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Attachment.java @@ -73,6 +73,16 @@ public class Attachment implements Serializable { public MediaData original; @SerializedName("small") public MediaData small; + + public MediaData getSmall() { + if (small != null) { + return small; + } else if (original != null) { + return original; + } else { + return null; + } + } } public static class Focus implements Serializable { diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/MediaHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/MediaHelper.java index b1dbee3cf..4acca2b57 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/MediaHelper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/MediaHelper.java @@ -390,8 +390,8 @@ public class MediaHelper { int maxHeight = RelativeLayout.LayoutParams.WRAP_CONTENT; if (attachmentList != null && attachmentList.size() > 0) { for (Attachment attachment : attachmentList) { - if (attachment.meta != null && attachment.meta.small != null && attachment.meta.small.height > maxHeight) { - maxHeight = (int) Helper.convertDpToPixel(attachment.meta.small.height, context); + if (attachment.meta != null && attachment.meta.getSmall() != null && attachment.meta.getSmall().height > maxHeight) { + maxHeight = (int) Helper.convertDpToPixel(attachment.meta.getSmall().height, context); } } } 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 741e47f43..95b55f8f7 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 @@ -1527,7 +1527,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> holder.binding.media.moreMedia.setVisibility(View.GONE); } else if (statusToDeal.media_attachments.size() == 3) { holder.binding.media.media1Container.setVisibility(View.VISIBLE); - if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.small != null && statusToDeal.media_attachments.get(0).meta.small.width < statusToDeal.media_attachments.get(0).meta.small.height) { + if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.getSmall() != null && statusToDeal.media_attachments.get(0).meta.getSmall().width < statusToDeal.media_attachments.get(0).meta.getSmall().height) { ConstraintSet constraintSet = new ConstraintSet(); constraintSet.clone(holder.binding.media.mediaContainer); constraintSet.connect(holder.binding.media.media4Container.getId(), ConstraintSet.START, holder.binding.media.media1Container.getId(), ConstraintSet.END); @@ -1570,7 +1570,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> if (mediaPosition == 1) { holder.binding.media.media1Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 2 && statusToDeal.media_attachments.size() == 3) { - if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.small != null && statusToDeal.media_attachments.get(0).meta.small.width < statusToDeal.media_attachments.get(0).meta.small.height) { + if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.getSmall() != null && statusToDeal.media_attachments.get(0).meta.getSmall().width < statusToDeal.media_attachments.get(0).meta.getSmall().height) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); @@ -1590,9 +1590,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> float ratio = 1.0f; float mediaH = -1.0f; float mediaW = -1.0f; - if (attachment.meta != null && attachment.meta.small != null) { - mediaH = attachment.meta.small.height; - mediaW = attachment.meta.small.width; + if (attachment.meta != null && attachment.meta.getSmall() != null) { + mediaH = attachment.meta.getSmall().height; + mediaW = attachment.meta.getSmall().width; if (mediaW != 0) { ratio = measuredWidth > 0 ? measuredWidth / mediaW : 1.0f; } @@ -2628,7 +2628,7 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> float focusX = 0.f; float focusY = 0.f; - if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.small != null && statusToDeal.media_attachments.get(0).meta.focus != null) { + if (statusToDeal.media_attachments.get(0).meta != null && statusToDeal.media_attachments.get(0).meta.getSmall() != null && statusToDeal.media_attachments.get(0).meta.focus != null) { focusX = statusToDeal.media_attachments.get(0).meta.focus.x; focusY = statusToDeal.media_attachments.get(0).meta.focus.y; } @@ -2905,9 +2905,9 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> } int mediaH = 0; int mediaW = 0; - if (attachment.meta != null && attachment.meta.small != null) { - mediaH = attachment.meta.small.height; - mediaW = attachment.meta.small.width; + if (attachment.meta != null && attachment.meta.getSmall() != null) { + mediaH = attachment.meta.getSmall().height; + mediaW = attachment.meta.getSmall().width; } return prepareRequestBuilder(context, attachment, mediaW, mediaH, focusX, focusY, attachment.sensitive, timelineType == Timeline.TimeLineEnum.ART).load(attachment); } @@ -3127,10 +3127,10 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> }); } if (status.art_attachment != null) { - if (status.art_attachment.meta != null && status.art_attachment.meta.small != null) { + if (status.art_attachment.meta != null && status.art_attachment.meta.getSmall() != null) { ConstraintLayout.LayoutParams lp; - float mediaH = status.art_attachment.meta.small.height; - float mediaW = status.art_attachment.meta.small.width; + float mediaH = status.art_attachment.meta.getSmall().height; + float mediaW = status.art_attachment.meta.getSmall().width; float ratio = measuredWidthArt > 0 ? measuredWidthArt / mediaW : 1.0f; lp = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, (int) (mediaH * ratio)); holder.bindingArt.artMedia.setScaleType(ImageView.ScaleType.FIT_CENTER); diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java index 8f865ebbe..3f5a5d6e9 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java @@ -534,7 +534,7 @@ public class StatusDirectMessageAdapter extends RecyclerView.Adapter<RecyclerVie holder.binding.media.moreMedia.setVisibility(View.GONE); } else if (status.media_attachments.size() == 3) { holder.binding.media.media1Container.setVisibility(View.VISIBLE); - if (status.media_attachments.get(0).meta != null && status.media_attachments.get(0).meta.small.width < status.media_attachments.get(0).meta.small.height) { + if (status.media_attachments.get(0).meta != null && status.media_attachments.get(0).meta.getSmall().width < status.media_attachments.get(0).meta.getSmall().height) { ConstraintSet constraintSet = new ConstraintSet(); constraintSet.clone(holder.binding.media.mediaContainer); constraintSet.connect(holder.binding.media.media4Container.getId(), ConstraintSet.START, holder.binding.media.media1Container.getId(), ConstraintSet.END); @@ -594,7 +594,7 @@ public class StatusDirectMessageAdapter extends RecyclerView.Adapter<RecyclerVie if (mediaPosition == 1) { holder.binding.media.media1Container.addView(layoutMediaBinding.getRoot()); } else if (mediaPosition == 2 && status.media_attachments.size() == 3) { - if (status.media_attachments.get(0).meta != null && status.media_attachments.get(0).meta.small.width < status.media_attachments.get(0).meta.small.height) { + if (status.media_attachments.get(0).meta != null && status.media_attachments.get(0).meta.getSmall().width < status.media_attachments.get(0).meta.getSmall().height) { holder.binding.media.media2Container.addView(layoutMediaBinding.getRoot()); } else { holder.binding.media.media3Container.addView(layoutMediaBinding.getRoot()); diff --git a/src/fdroid/fastlane/metadata/android/en/changelogs/485.txt b/src/fdroid/fastlane/metadata/android/en/changelogs/485.txt index 703c17481..9f7d61710 100644 --- a/src/fdroid/fastlane/metadata/android/en/changelogs/485.txt +++ b/src/fdroid/fastlane/metadata/android/en/changelogs/485.txt @@ -9,4 +9,5 @@ Changed: Fixed: - Fix an issue with Nitter and some URLs - Fix an issue when entering a Peertube instance +- Fix jumps with Akkoma/Pleroma when media preview size is not set - Some crashes
\ No newline at end of file |