Commit 5766bfce authored by Thomas's avatar Thomas
Browse files

Merge branch 'develop'

parents f34bfabc 05a7ac40
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -13,8 +13,8 @@ android {
    defaultConfig {
        minSdk 21
        targetSdk 33
        versionCode 455
        versionName "3.13.1"
        versionCode 456
        versionName "3.13.2"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    flavorDimensions "default"
@@ -109,7 +109,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.24.0'
    implementation 'com.github.penfeizhou.android.animation:glide-plugin:2.23.0'
    implementation 'com.google.android.exoplayer:exoplayer:2.18.1'
    implementation "androidx.viewpager2:viewpager2:1.0.0"
    implementation 'com.github.piasy:rxandroidaudio:1.7.0'
+5 −0
Original line number Diff line number Diff line
[
  {
    "version": "3.13.2",
    "code": "456",
    "note": "Changed:\n- Hidden media smaller with preview images\n\nFixed:\n- Issue with Media for Android 11+\n- Crash when not setting a translation key\n- Fix DeepL for API pro\n- Crash when visiting a profile with a lot of media\n- Home muted accounts not working without filters\n- Animated custom emoji not displayed"
  },
  {
    "version": "3.13.1",
    "code": "455",
+14 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static app.fedilab.android.helper.Helper.PREF_USER_TOKEN;
import static app.fedilab.android.helper.Helper.displayReleaseNotesIfNeeded;
import static app.fedilab.android.ui.drawer.StatusAdapter.sendAction;

import android.Manifest;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -51,12 +52,15 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.PopupMenu;
import androidx.appcompat.widget.SearchView;
import androidx.core.app.ActivityCompat;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.view.GravityCompat;
import androidx.fragment.app.Fragment;
@@ -290,6 +294,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
    };
    private NetworkStateReceiver networkStateReceiver;
    private boolean headerMenuOpen;
    private static final int REQUEST_CODE = 5415;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -304,6 +309,15 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
        } else {
            BaseMainActivity.currentToken = sharedpreferences.getString(Helper.PREF_USER_TOKEN, null);
        }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            ActivityResultLauncher<String> permissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> {
                if (!isGranted) {
                    ActivityCompat.requestPermissions(BaseMainActivity.this, new String[]{Manifest.permission.POST_NOTIFICATIONS}, REQUEST_CODE);
                }
            });
            permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS);
        }
        filteredAccounts = new ArrayList<>();
        mamageNewIntent(getIntent());
        filterFetched = false;
+11 −2
Original line number Diff line number Diff line
@@ -243,6 +243,7 @@ public class MediaActivity extends BaseTransparentActivity implements OnDownload
            int position = binding.mediaViewpager.getCurrentItem();
            Attachment attachment = attachments.get(position);
            if (Build.VERSION.SDK_INT >= 23) {
                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
                    if (ContextCompat.checkSelfPermission(MediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(MediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                        ActivityCompat.requestPermissions(MediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SAVE);
                    } else {
@@ -253,6 +254,14 @@ public class MediaActivity extends BaseTransparentActivity implements OnDownload
                            downloadID = -1;
                        }
                    }
                } else {
                    if (attachment.type.compareTo("image") == 0) {
                        MediaHelper.manageMove(MediaActivity.this, attachment.url, false);
                    } else {
                        MediaHelper.manageDownloadsNoPopup(MediaActivity.this, attachment.url);
                        downloadID = -1;
                    }
                }
            } else {
                if (attachment.type.compareToIgnoreCase("image") == 0) {
                    MediaHelper.manageMove(MediaActivity.this, attachment.url, false);
+8 −7
Original line number Diff line number Diff line
@@ -94,28 +94,29 @@ public class CustomEmoji extends ReplacementSpan {
            @Override
            public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                View view = viewWeakReference.get();

                if (animate && resource instanceof Animatable) {
                    Drawable.Callback callback = resource.getCallback();
                    Drawable.Callback drawableCallBack = resource.getCallback();
                    resource.setCallback(new Drawable.Callback() {
                        @Override
                        public void invalidateDrawable(@NonNull Drawable drawable) {
                            if (callback != null) {
                                callback.invalidateDrawable(drawable);
                            if (drawableCallBack != null) {
                                drawableCallBack.invalidateDrawable(drawable);
                            }
                            view.invalidate();
                        }

                        @Override
                        public void scheduleDrawable(@NonNull Drawable drawable, @NonNull Runnable runnable, long l) {
                            if (callback != null) {
                                callback.scheduleDrawable(drawable, runnable, l);
                            if (drawableCallBack != null) {
                                drawableCallBack.scheduleDrawable(drawable, runnable, l);
                            }
                        }

                        @Override
                        public void unscheduleDrawable(@NonNull Drawable drawable, @NonNull Runnable runnable) {
                            if (callback != null) {
                                callback.unscheduleDrawable(drawable, runnable);
                            if (drawableCallBack != null) {
                                drawableCallBack.unscheduleDrawable(drawable, runnable);
                            }
                        }
                    });
Loading