导航菜单

页面标题

页面副标题

Betterhalf.ai v5.1.1 - AddAssetsToAlbum.java 源代码

正在查看: Betterhalf.ai v5.1.1 应用的 AddAssetsToAlbum.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package expo.modules.medialibrary.albums;

import android.content.Context;
import android.database.Cursor;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Build;
import com.facebook.react.bridge.BaseJavaModule;
import expo.modules.kotlin.Promise;
import expo.modules.medialibrary.AlbumException;
import expo.modules.medialibrary.MediaLibraryConstantsKt;
import expo.modules.medialibrary.MediaLibraryException;
import expo.modules.medialibrary.MediaLibraryUtils;
import expo.modules.medialibrary.PermissionsException;
import expo.modules.medialibrary.albums.AssetFileStrategy;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import kotlin.Metadata;
import kotlin.collections.CollectionsKt;
import kotlin.io.CloseableKt;
import kotlin.jvm.internal.Intrinsics;

@Metadata(d1 = {"\u0000>\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\u0010\u000e\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\b\u0000\u0018\u00002\u00020\u0001B3\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\f\u0010\u0004\u001a\b\u0012\u0004\u0012\u00020\u00060\u0005\u0012\u0006\u0010\u0007\u001a\u00020\u0006\u0012\u0006\u0010\b\u001a\u00020\t\u0012\u0006\u0010\n\u001a\u00020\u000b¢\u0006\u0002\u0010\fJ\u0006\u0010\u0014\u001a\u00020\u0015R\u0014\u0010\r\u001a\u00020\u000e8BX\u0082\u0004¢\u0006\u0006\u001a\u0004\b\u000f\u0010\u0010R\u000e\u0010\u0007\u001a\u00020\u0006X\u0082\u0004¢\u0006\u0002\n\u0000R\u0016\u0010\u0004\u001a\b\u0012\u0004\u0012\u00020\u00060\u0005X\u0082\u0004¢\u0006\u0004\n\u0002\u0010\u0011R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\n\u001a\u00020\u000bX\u0082\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0012\u001a\u00020\u0013X\u0082\u0004¢\u0006\u0002\n\u0000¨\u0006\u0016"}, d2 = {"Lexpo/modules/medialibrary/albums/AddAssetsToAlbum;", "", "context", "Landroid/content/Context;", "assetIds", "", "", "albumId", "copyToAlbum", "", BaseJavaModule.METHOD_TYPE_PROMISE, "Lexpo/modules/kotlin/Promise;", "(Landroid/content/Context;[Ljava/lang/String;Ljava/lang/String;ZLexpo/modules/kotlin/Promise;)V", "album", "Ljava/io/File;", "getAlbum", "()Ljava/io/File;", "[Ljava/lang/String;", "strategy", "Lexpo/modules/medialibrary/albums/AssetFileStrategy;", "execute", "", "expo-media-library_release"}, k = 1, mv = {1, 8, 0}, xi = 48)
public final class AddAssetsToAlbum {
    private final String albumId;
    private final String[] assetIds;
    private final Context context;
    private final Promise promise;
    private final AssetFileStrategy strategy;

    public AddAssetsToAlbum(Context context, String[] strArr, String str, boolean z, Promise promise) {
        Intrinsics.checkNotNullParameter(context, "context");
        Intrinsics.checkNotNullParameter(strArr, "assetIds");
        Intrinsics.checkNotNullParameter(str, "albumId");
        Intrinsics.checkNotNullParameter(promise, BaseJavaModule.METHOD_TYPE_PROMISE);
        this.context = context;
        this.assetIds = strArr;
        this.albumId = str;
        this.promise = promise;
        AssetFileStrategy.Companion companion = AssetFileStrategy.INSTANCE;
        this.strategy = z ? companion.getCopyStrategy() : companion.getMoveStrategy();
    }

    private final File getAlbum() {
        Cursor query = this.context.getContentResolver().query(MediaLibraryConstantsKt.getEXTERNAL_CONTENT_URI(), new String[]{"_data"}, "bucket_id=?", new String[]{this.albumId}, null);
        try {
            Cursor cursor = query;
            if (cursor == null) {
                throw new AlbumException("Could not get album. Query returns null.");
            }
            if (cursor.getCount() == 0) {
                throw new AlbumException("No album with id: " + this.albumId);
            }
            cursor.moveToNext();
            File file = new File(cursor.getString(cursor.getColumnIndex("_data")));
            if (!file.isFile()) {
                throw new MediaLibraryException();
            }
            String parent = file.getParent();
            Intrinsics.checkNotNull(parent);
            File file2 = new File(parent);
            CloseableKt.closeFinally(query, (Throwable) null);
            return file2;
        } catch (Throwable th) {
            try {
                throw th;
            } catch (Throwable th2) {
                CloseableKt.closeFinally(query, th);
                throw th2;
            }
        }
    }

    public final void execute() {
        MediaLibraryUtils mediaLibraryUtils = MediaLibraryUtils.INSTANCE;
        Context context = this.context;
        String[] strArr = this.assetIds;
        List<MediaLibraryUtils.AssetFile> assetsById = mediaLibraryUtils.getAssetsById(context, (String[]) Arrays.copyOf(strArr, strArr.length));
        if (Build.VERSION.SDK_INT >= 30 && !getAlbum().canWrite()) {
            throw new PermissionsException("The application doesn't have permission to write to the album's directory. For more information, check out https://expo.fyi/android-r.");
        }
        List<MediaLibraryUtils.AssetFile> list = assetsById;
        ArrayList arrayList = new ArrayList(CollectionsKt.collectionSizeOrDefault(list, 10));
        Iterator<T> it = list.iterator();
        while (it.hasNext()) {
            arrayList.add(this.strategy.apply((MediaLibraryUtils.AssetFile) it.next(), getAlbum(), this.context).getPath());
        }
        ArrayList arrayList2 = arrayList;
        final AtomicInteger atomicInteger = new AtomicInteger(arrayList2.size());
        MediaScannerConnection.scanFile(this.context, (String[]) arrayList2.toArray(new String[0]), null, new MediaScannerConnection.OnScanCompletedListener() {
            @Override
            public final void onScanCompleted(String str, Uri uri) {
                AddAssetsToAlbum.execute$lambda$2(atomicInteger, this, str, uri);
            }
        });
    }

    public static final void execute$lambda$2(AtomicInteger atomicInteger, AddAssetsToAlbum addAssetsToAlbum, String str, Uri uri) {
        Intrinsics.checkNotNullParameter(atomicInteger, "$atomicInteger");
        Intrinsics.checkNotNullParameter(addAssetsToAlbum, "this$0");
        if (atomicInteger.decrementAndGet() == 0) {
            addAssetsToAlbum.promise.resolve(true);
        }
    }
}