Loading app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Attachment.java +10 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading app/src/main/java/app/fedilab/android/mastodon/helper/MediaHelper.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); } } } Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +12 −12 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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()); Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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); } Loading Loading @@ -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); Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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()); Loading src/fdroid/fastlane/metadata/android/en/changelogs/485.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Attachment.java +10 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading
app/src/main/java/app/fedilab/android/mastodon/helper/MediaHelper.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); } } } Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +12 −12 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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()); Loading @@ -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; } Loading Loading @@ -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; } Loading Loading @@ -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); } Loading Loading @@ -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); Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusDirectMessageAdapter.java +2 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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()); Loading
src/fdroid/fastlane/metadata/android/en/changelogs/485.txt +1 −0 Original line number Diff line number Diff line Loading @@ -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