Loading app/src/main/assets/release_notes/notes.json +5 −0 Original line number Diff line number Diff line [ { "version": "3.9.7", "code": "442", "note": "Added:\n- Dracula theme\n\nChanged:\n- Colors for Light/Dark/Black themes\n\nFixed:\n- Animated profile pictures not displayed\n- Mentions broken in profile bio and fields\n- Tag patterns in URL break the link\n- Typo in followed tags" }, { "version": "3.9.6", "code": "441", Loading app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +8 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.res.ColorStateList; import android.graphics.drawable.Animatable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.SpannableString; Loading Loading @@ -262,6 +263,7 @@ public class ProfileActivity extends BaseActivity { }); boolean disableGif = sharedpreferences.getBoolean(getString(R.string.SET_DISABLE_GIF), false); String targetedUrl = disableGif ? account.avatar_static : account.avatar; // MastodonHelper.loadPPMastodon(binding.accountPp, account); Glide.with(ProfileActivity.this) .asDrawable() .dontTransform() Loading @@ -271,6 +273,11 @@ public class ProfileActivity extends BaseActivity { public void onResourceReady(@NonNull final Drawable resource, Transition<? super Drawable> transition) { binding.profilePicture.setImageDrawable(resource); binding.accountPp.setImageDrawable(resource); if (resource instanceof Animatable) { binding.profilePicture.animate(); binding.accountPp.animate(); ((Animatable) resource).start(); } ActivityCompat.startPostponedEnterTransition(ProfileActivity.this); } Loading Loading @@ -390,7 +397,7 @@ public class ProfileActivity extends BaseActivity { TextView.BufferType.SPANNABLE); binding.accountNote.setMovementMethod(LinkMovementMethod.getInstance()); //MastodonHelper.loadPPMastodon(binding.accountPp, account); binding.accountPp.setOnClickListener(v -> { Intent intent = new Intent(ProfileActivity.this, MediaActivity.class); Bundle b = new Bundle(); Loading app/src/main/java/app/fedilab/android/client/entities/api/Account.java +3 −3 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ public class Account implements Serializable { if (display_name == null || display_name.isEmpty()) { display_name = username; } return SpannableHelper.convert(context, display_name, null, this, null, false, viewWeakReference); return SpannableHelper.convert(context, display_name, null, this, null, false, false, viewWeakReference); } public synchronized Spannable getSpanDisplayName(Activity activity, WeakReference<View> viewWeakReference) { Loading @@ -96,11 +96,11 @@ public class Account implements Serializable { } public synchronized Spannable getSpanDisplayNameTitle(Context context, WeakReference<View> viewWeakReference, String title) { return SpannableHelper.convert(context, title, null, this, null, false, viewWeakReference); return SpannableHelper.convert(context, title, null, this, null, false, false, viewWeakReference); } public synchronized Spannable getSpanNote(Context context, WeakReference<View> viewWeakReference) { return SpannableHelper.convert(context, note, null, this, null, true, viewWeakReference); return SpannableHelper.convert(context, note, null, this, null, true, true, viewWeakReference); } public static class AccountParams implements Serializable { Loading app/src/main/java/app/fedilab/android/client/entities/api/Announcement.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ public class Announcement { public synchronized Spannable getSpanContent(Context context, WeakReference<View> viewWeakReference) { return SpannableHelper.convert(context, content, null, null, this, true, viewWeakReference); return SpannableHelper.convert(context, content, null, null, this, true, false, viewWeakReference); } } app/src/main/java/app/fedilab/android/client/entities/api/Field.java +2 −2 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ public class Field implements Serializable { if (verified_at != null && value != null) { value_span = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.verified_text)); } Spannable spannable = SpannableHelper.convert(context, value, null, account, null, true, viewWeakReference); Spannable spannable = SpannableHelper.convert(context, value, null, account, null, true, true, viewWeakReference); if (value_span != null && spannable != null) { spannable.setSpan(value_span, 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } Loading @@ -57,7 +57,7 @@ public class Field implements Serializable { public synchronized Spannable getLabelSpan(Context context, Account account, WeakReference<View> viewWeakReference) { Spannable spannable = SpannableHelper.convert(context, name, null, account, null, true, viewWeakReference); Spannable spannable = SpannableHelper.convert(context, name, null, account, null, true, true, viewWeakReference); if (name_span != null && spannable != null) { spannable.setSpan(name_span, 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } Loading Loading
app/src/main/assets/release_notes/notes.json +5 −0 Original line number Diff line number Diff line [ { "version": "3.9.7", "code": "442", "note": "Added:\n- Dracula theme\n\nChanged:\n- Colors for Light/Dark/Black themes\n\nFixed:\n- Animated profile pictures not displayed\n- Mentions broken in profile bio and fields\n- Tag patterns in URL break the link\n- Typo in followed tags" }, { "version": "3.9.6", "code": "441", Loading
app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +8 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.res.ColorStateList; import android.graphics.drawable.Animatable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.SpannableString; Loading Loading @@ -262,6 +263,7 @@ public class ProfileActivity extends BaseActivity { }); boolean disableGif = sharedpreferences.getBoolean(getString(R.string.SET_DISABLE_GIF), false); String targetedUrl = disableGif ? account.avatar_static : account.avatar; // MastodonHelper.loadPPMastodon(binding.accountPp, account); Glide.with(ProfileActivity.this) .asDrawable() .dontTransform() Loading @@ -271,6 +273,11 @@ public class ProfileActivity extends BaseActivity { public void onResourceReady(@NonNull final Drawable resource, Transition<? super Drawable> transition) { binding.profilePicture.setImageDrawable(resource); binding.accountPp.setImageDrawable(resource); if (resource instanceof Animatable) { binding.profilePicture.animate(); binding.accountPp.animate(); ((Animatable) resource).start(); } ActivityCompat.startPostponedEnterTransition(ProfileActivity.this); } Loading Loading @@ -390,7 +397,7 @@ public class ProfileActivity extends BaseActivity { TextView.BufferType.SPANNABLE); binding.accountNote.setMovementMethod(LinkMovementMethod.getInstance()); //MastodonHelper.loadPPMastodon(binding.accountPp, account); binding.accountPp.setOnClickListener(v -> { Intent intent = new Intent(ProfileActivity.this, MediaActivity.class); Bundle b = new Bundle(); Loading
app/src/main/java/app/fedilab/android/client/entities/api/Account.java +3 −3 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ public class Account implements Serializable { if (display_name == null || display_name.isEmpty()) { display_name = username; } return SpannableHelper.convert(context, display_name, null, this, null, false, viewWeakReference); return SpannableHelper.convert(context, display_name, null, this, null, false, false, viewWeakReference); } public synchronized Spannable getSpanDisplayName(Activity activity, WeakReference<View> viewWeakReference) { Loading @@ -96,11 +96,11 @@ public class Account implements Serializable { } public synchronized Spannable getSpanDisplayNameTitle(Context context, WeakReference<View> viewWeakReference, String title) { return SpannableHelper.convert(context, title, null, this, null, false, viewWeakReference); return SpannableHelper.convert(context, title, null, this, null, false, false, viewWeakReference); } public synchronized Spannable getSpanNote(Context context, WeakReference<View> viewWeakReference) { return SpannableHelper.convert(context, note, null, this, null, true, viewWeakReference); return SpannableHelper.convert(context, note, null, this, null, true, true, viewWeakReference); } public static class AccountParams implements Serializable { Loading
app/src/main/java/app/fedilab/android/client/entities/api/Announcement.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,7 +56,7 @@ public class Announcement { public synchronized Spannable getSpanContent(Context context, WeakReference<View> viewWeakReference) { return SpannableHelper.convert(context, content, null, null, this, true, viewWeakReference); return SpannableHelper.convert(context, content, null, null, this, true, false, viewWeakReference); } }
app/src/main/java/app/fedilab/android/client/entities/api/Field.java +2 −2 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ public class Field implements Serializable { if (verified_at != null && value != null) { value_span = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.verified_text)); } Spannable spannable = SpannableHelper.convert(context, value, null, account, null, true, viewWeakReference); Spannable spannable = SpannableHelper.convert(context, value, null, account, null, true, true, viewWeakReference); if (value_span != null && spannable != null) { spannable.setSpan(value_span, 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } Loading @@ -57,7 +57,7 @@ public class Field implements Serializable { public synchronized Spannable getLabelSpan(Context context, Account account, WeakReference<View> viewWeakReference) { Spannable spannable = SpannableHelper.convert(context, name, null, account, null, true, viewWeakReference); Spannable spannable = SpannableHelper.convert(context, name, null, account, null, true, true, viewWeakReference); if (name_span != null && spannable != null) { spannable.setSpan(name_span, 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } Loading