summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas <tschneider.ac@gmail.com>2023-03-13 17:19:38 +0100
committerThomas <tschneider.ac@gmail.com>2023-03-13 17:19:38 +0100
commitfdd39704efe16a02e658248a2e3e510669c6b4a7 (patch)
treeab23df7d4108489a5d274638c8894bb3862b96d2
parent25c372280f8e85c9c7b25024074934f15c7ab7e3 (diff)
Fix jumps with Akkoma/Pleroma when media preview size is not set
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Attachment.java10
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/helper/MediaHelper.java4
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java24
-rw-r--r--app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java4
-rw-r--r--src/fdroid/fastlane/metadata/android/en/changelogs/485.txt1
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