Loading app/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -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" Loading app/src/main/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -230,6 +230,7 @@ android:configChanges="keyboardHidden|orientation|screenSize" /> <activity android:name=".mastodon.activities.MediaActivity" android:hardwareAccelerated="false" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@style/Transparent" /> Loading app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java +10 −17 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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()); Loading Loading @@ -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) { Loading app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java +3 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,9 @@ public class Account implements Serializable { public synchronized Spannable getSpanNote(Context context, WeakReference<View> viewWeakReference) { return SpannableHelper.convert(context, note, null, this, null, viewWeakReference, null, true, false); } public synchronized Spannable getSpanNote(Context context, WeakReference<View> viewWeakReference, Status.Callback callback) { return SpannableHelper.convert(context, note, null, this, null, viewWeakReference, callback, true, false); } @Override public boolean equals(@Nullable Object obj) { Loading app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +18 −2 Original line number Diff line number Diff line Loading @@ -918,7 +918,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); Loading @@ -930,7 +930,7 @@ public class Helper { }catch (Exception ignored){} } if (!fragmentManager.isDestroyed()) { ft.commit(); ft.commitAllowingStateLoss(); } } fragmentManager.executePendingTransactions(); Loading Loading @@ -2159,6 +2159,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(); Loading Loading
app/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -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" Loading
app/src/main/AndroidManifest.xml +1 −0 Original line number Diff line number Diff line Loading @@ -230,6 +230,7 @@ android:configChanges="keyboardHidden|orientation|screenSize" /> <activity android:name=".mastodon.activities.MediaActivity" android:hardwareAccelerated="false" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@style/Transparent" /> Loading
app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java +10 −17 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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()); Loading Loading @@ -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) { Loading
app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java +3 −0 Original line number Diff line number Diff line Loading @@ -112,6 +112,9 @@ public class Account implements Serializable { public synchronized Spannable getSpanNote(Context context, WeakReference<View> viewWeakReference) { return SpannableHelper.convert(context, note, null, this, null, viewWeakReference, null, true, false); } public synchronized Spannable getSpanNote(Context context, WeakReference<View> viewWeakReference, Status.Callback callback) { return SpannableHelper.convert(context, note, null, this, null, viewWeakReference, callback, true, false); } @Override public boolean equals(@Nullable Object obj) { Loading
app/src/main/java/app/fedilab/android/mastodon/helper/Helper.java +18 −2 Original line number Diff line number Diff line Loading @@ -918,7 +918,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); Loading @@ -930,7 +930,7 @@ public class Helper { }catch (Exception ignored){} } if (!fragmentManager.isDestroyed()) { ft.commit(); ft.commitAllowingStateLoss(); } } fragmentManager.executePendingTransactions(); Loading Loading @@ -2159,6 +2159,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(); Loading