From 42b4793b14699be817f105794238dc0d225cc89c Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 3 Apr 2025 08:08:17 +0200 Subject: [PATCH 1/7] update apng lib --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index de715e3c..f3198f4a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -141,7 +141,7 @@ dependencies { implementation("com.vanniktech:android-image-cropper:4.3.3") annotationProcessor "com.github.bumptech.glide:compiler:4.12.0" implementation 'jp.wasabeef:glide-transformations:4.3.0' - implementation 'com.github.penfeizhou.android.animation:glide-plugin:2.23.0' + implementation 'com.github.penfeizhou.android.animation:glide-plugin:3.0.4' implementation 'androidx.media3:media3-exoplayer-hls:1.2.1' implementation "androidx.media3:media3-exoplayer:1.2.1" implementation "androidx.media3:media3-exoplayer-dash:1.2.1" From 6a238d970fd0806c9f121aa13bdf1291d180917c Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 5 Apr 2025 18:36:25 +0200 Subject: [PATCH 2/7] Fix issue #1169 - Fix crash when media are too heavy --- app/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 85dcfb36..12ee7f2c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -230,6 +230,7 @@ android:configChanges="keyboardHidden|orientation|screenSize" /> From 59c05e35fd7a8312641db2223b9c35b4d54e75af Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 7 Apr 2025 12:11:39 +0200 Subject: [PATCH 3/7] Fix issue #1164 - Custom emojis in bio do not render --- .../mastodon/activities/ProfileActivity.java | 27 +++++++------------ .../mastodon/client/entities/api/Account.java | 3 +++ .../mastodon/ui/drawer/StatusAdapter.java | 1 - 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java index 30af13d8..1588c20c 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java @@ -82,9 +82,6 @@ import java.util.Date; import java.util.List; import java.util.Locale; import java.util.Set; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; import androidmads.library.qrgenearator.QRGContents; import androidmads.library.qrgenearator.QRGEncoder; @@ -103,6 +100,7 @@ import app.fedilab.android.mastodon.client.entities.api.Field; import app.fedilab.android.mastodon.client.entities.api.IdentityProof; import app.fedilab.android.mastodon.client.entities.api.MastodonList; import app.fedilab.android.mastodon.client.entities.api.RelationShip; +import app.fedilab.android.mastodon.client.entities.api.Status; import app.fedilab.android.mastodon.client.entities.app.CachedBundle; import app.fedilab.android.mastodon.client.entities.app.Languages; import app.fedilab.android.mastodon.client.entities.app.Pinned; @@ -132,7 +130,6 @@ public class ProfileActivity extends BaseActivity { private RelationShip relationship; private FamiliarFollowers familiarFollowers; private Account account; - private ScheduledExecutorService scheduledExecutorService; private action doAction; private AccountsVM accountsVM; private RecyclerView identityProofsRecycler; @@ -357,14 +354,7 @@ public class ProfileActivity extends BaseActivity { this.identityProofList = identityProofs; updateAccount(); }); - //Animate emojis - if (account.emojis != null && !account.emojis.isEmpty()) { - boolean disableAnimatedEmoji = sharedpreferences.getBoolean(getString(R.string.SET_DISABLE_ANIMATED_EMOJI), false); - if (!disableAnimatedEmoji) { - scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); - scheduledExecutorService.scheduleAtFixedRate(() -> binding.accountDn.invalidate(), 0, 130, TimeUnit.MILLISECONDS); - } - } + binding.accountTabLayout.clearOnTabSelectedListeners(); binding.accountTabLayout.removeAllTabs(); //Tablayout for timelines/following/followers @@ -550,8 +540,15 @@ public class ProfileActivity extends BaseActivity { }); binding.accountNote.setText( account.getSpanNote(ProfileActivity.this, - new WeakReference<>(binding.accountNote)), + new WeakReference<>(binding.accountNote), () -> { + //TODO: replace this hack + binding.accountNote.setText( + account.getSpanNote(ProfileActivity.this, + new WeakReference<>(binding.accountNote)), TextView.BufferType.SPANNABLE); + + }), TextView.BufferType.SPANNABLE); + binding.accountNote.setMovementMethod(LinkMovementMethod.getInstance()); @@ -1370,10 +1367,6 @@ public class ProfileActivity extends BaseActivity { @Override public void onDestroy() { - if (scheduledExecutorService != null) { - scheduledExecutorService.shutdownNow(); - scheduledExecutorService = null; - } try { unregisterReceiver(broadcast_data); } catch (IllegalArgumentException e) { diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java index 8d4cad29..2408db28 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java @@ -112,6 +112,9 @@ public class Account implements Serializable { public synchronized Spannable getSpanNote(Context context, WeakReference viewWeakReference) { return SpannableHelper.convert(context, note, null, this, null, viewWeakReference, null, true, false); } + public synchronized Spannable getSpanNote(Context context, WeakReference viewWeakReference, Status.Callback callback) { + return SpannableHelper.convert(context, note, null, this, null, viewWeakReference, callback, true, false); + } @Override public boolean equals(@Nullable Object obj) { 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 694e600e..f4642504 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 @@ -59,7 +59,6 @@ import android.os.Looper; import android.text.Html; import android.text.SpannableString; import android.text.TextUtils; -import android.util.Log; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.MotionEvent; From c2683995a10c51ccddbf071b49e4500a5a6d4d54 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 7 Apr 2025 16:06:32 +0200 Subject: [PATCH 4/7] Fix #1163 - Posting messages does not work on some Friendica instances --- .../fedilab/android/mastodon/helper/Helper.java | 16 ++++++++++++++++ .../android/mastodon/jobs/ComposeWorker.java | 13 +------------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java index 257820ba..12a5a0e8 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java @@ -2139,6 +2139,22 @@ public class Helper { .build(); } + public static OkHttpClient myPostOkHttpClient(Context context) { + return new OkHttpClient.Builder() + .addInterceptor(chain -> { + Request originalRequest = chain.request(); + Request requestWithUserAgent = originalRequest.newBuilder() + .header("User-Agent", context.getString(R.string.app_name) + "/" + BuildConfig.VERSION_NAME + "/" + BuildConfig.VERSION_CODE) + .build(); + return chain.proceed(requestWithUserAgent); + }) + .readTimeout(120, TimeUnit.SECONDS) + .connectTimeout(120, TimeUnit.SECONDS) + .callTimeout(120, TimeUnit.SECONDS) + .proxy(Helper.getProxy(context)) + .build(); + } + public static String parseHtml(String html) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY).toString(); diff --git a/app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java b/app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java index 42e1d8e0..ebcb2416 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java +++ b/app/src/main/java/app/fedilab/android/mastodon/jobs/ComposeWorker.java @@ -47,9 +47,7 @@ import com.google.gson.Gson; import java.io.IOException; import java.net.IDN; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import app.fedilab.android.BaseMainActivity; @@ -72,7 +70,6 @@ import app.fedilab.android.mastodon.helper.Helper; import app.fedilab.android.mastodon.ui.drawer.StatusAdapter; import okhttp3.MediaType; import okhttp3.MultipartBody; -import okhttp3.OkHttpClient; import okhttp3.RequestBody; import retrofit2.Call; import retrofit2.Response; @@ -94,19 +91,11 @@ public class ComposeWorker extends Worker { context.getSystemService(NOTIFICATION_SERVICE); } - private static OkHttpClient getOkHttpClient(Context context) { - return new OkHttpClient.Builder() - .readTimeout(120, TimeUnit.SECONDS) - .connectTimeout(120, TimeUnit.SECONDS) - .proxy(Helper.getProxy(context.getApplicationContext())) - .build(); - } - private static MastodonStatusesService init(Context context, String instance) { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + (instance != null ? IDN.toASCII(instance, IDN.ALLOW_UNASSIGNED) : null) + "/api/v1/") .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) - .client(getOkHttpClient(context)) + .client(Helper.myPostOkHttpClient(context)) .build(); return retrofit.create(MastodonStatusesService.class); } From 4baadfba170fbb77a998fc9a8277b0b7ca15b3bb Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 7 Apr 2025 17:16:52 +0200 Subject: [PATCH 5/7] Fix a crash with auto-split messages --- .../fedilab/android/mastodon/ui/drawer/ComposeAdapter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java index 93f301ec..fdec9cd9 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/ui/drawer/ComposeAdapter.java @@ -598,7 +598,9 @@ public class ComposeAdapter extends RecyclerView.Adapter splitText = ComposeHelper.splitToots(contentString, max_car); - contentString = splitText.get(0); + if(!splitText.isEmpty()) { + contentString = splitText.get(0); + } } int currentLength = MastodonHelper.countLength(holder); if (promptDraftListener != null) { From 5cf8332024ce49461e0aa052031664dc0001396d Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 7 Apr 2025 17:21:03 +0200 Subject: [PATCH 6/7] Fix a crash when opening conversations --- .../main/java/app/fedilab/android/mastodon/helper/Helper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java index 12a5a0e8..8e3fa5b2 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java @@ -916,7 +916,7 @@ public class Helper { ft.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit); Fragment _fragment = fragmentManager.findFragmentByTag(tag); if (_fragment != null && _fragment.isAdded()) { - ft.show(_fragment).commit(); + ft.show(_fragment).commitAllowingStateLoss(); fragment = _fragment; } else { if (args != null) fragment.setArguments(args); @@ -928,7 +928,7 @@ public class Helper { }catch (Exception ignored){} } if (!fragmentManager.isDestroyed()) { - ft.commit(); + ft.commitAllowingStateLoss(); } } fragmentManager.executePendingTransactions(); From 14a3ad5a8ef89a033917473cf96c4f509e08f218 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 7 Apr 2025 17:30:33 +0200 Subject: [PATCH 7/7] Fix a background color issue when displaying media --- .../main/res/layouts/mastodon/layout/fragment_slide_media.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml b/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml index e82be301..f59694b1 100644 --- a/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml +++ b/app/src/main/res/layouts/mastodon/layout/fragment_slide_media.xml @@ -9,8 +9,7 @@ + android:layout_height="match_parent">