From 3355779f16f40620f8e6b16b7cab9c093badae96 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sun, 27 Sep 2020 22:01:38 +0900 Subject: [PATCH] album renaming performance review (WIP) --- .../aves/channel/calls/ImageFileHandler.java | 4 ++++ .../thibault/aves/model/provider/ImageProvider.java | 13 +++++-------- lib/widgets/collection/thumbnail_collection.dart | 1 - 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/android/app/src/main/java/deckers/thibault/aves/channel/calls/ImageFileHandler.java b/android/app/src/main/java/deckers/thibault/aves/channel/calls/ImageFileHandler.java index b1702a11a..fdea9c636 100644 --- a/android/app/src/main/java/deckers/thibault/aves/channel/calls/ImageFileHandler.java +++ b/android/app/src/main/java/deckers/thibault/aves/channel/calls/ImageFileHandler.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import com.bumptech.glide.Glide; +import java.io.File; import java.util.List; import java.util.Map; @@ -190,6 +191,9 @@ public class ImageFileHandler implements MethodChannel.MethodCallHandler { result.error("renameDirectory-args", "failed because of missing arguments", null); return; } + if (!dirPath.endsWith(File.separator)) { + dirPath += File.separator; + } ImageProvider provider = new MediaStoreImageProvider(); provider.renameDirectory(activity, dirPath, newName, new ImageProvider.AlbumRenameOpCallback() { diff --git a/android/app/src/main/java/deckers/thibault/aves/model/provider/ImageProvider.java b/android/app/src/main/java/deckers/thibault/aves/model/provider/ImageProvider.java index 14a0a620c..4f23bc575 100644 --- a/android/app/src/main/java/deckers/thibault/aves/model/provider/ImageProvider.java +++ b/android/app/src/main/java/deckers/thibault/aves/model/provider/ImageProvider.java @@ -90,11 +90,7 @@ public abstract class ImageProvider { } @SuppressWarnings("UnstableApiUsage") - public void renameDirectory(Context context, String oldDirPath, String newDirName, final AlbumRenameOpCallback callback) { - if (!oldDirPath.endsWith(File.separator)) { - oldDirPath += File.separator; - } - + public void renameDirectory(Context context, final String oldDirPath, String newDirName, final AlbumRenameOpCallback callback) { DocumentFileCompat destinationDirDocFile = StorageUtils.createDirectoryIfAbsent(context, oldDirPath); if (destinationDirDocFile == null) { callback.onFailure(new Exception("failed to find directory at path=" + oldDirPath)); @@ -118,15 +114,16 @@ public abstract class ImageProvider { return; } + String[] oldEntryPaths = entries.stream().map(entry -> oldDirPath + entry.get("displayName")).toArray(String[]::new); + String[] mimeTypes = entries.stream().map(entry -> (String) entry.get("mimeType")).toArray(String[]::new); + MediaScannerConnection.scanFile(context, oldEntryPaths, mimeTypes, null); + List>> scanFutures = new ArrayList<>(); String newDirPath = new File(oldDirPath).getParent() + File.separator + newDirName + File.separator; for (Map entry : entries) { String displayName = (String) entry.get("displayName"); String mimeType = (String) entry.get("mimeType"); - String oldEntryPath = oldDirPath + displayName; - MediaScannerConnection.scanFile(context, new String[]{oldEntryPath}, new String[]{mimeType}, null); - SettableFuture> scanFuture = SettableFuture.create(); scanFutures.add(scanFuture); String newEntryPath = newDirPath + displayName; diff --git a/lib/widgets/collection/thumbnail_collection.dart b/lib/widgets/collection/thumbnail_collection.dart index 8d5328121..d880f4835 100644 --- a/lib/widgets/collection/thumbnail_collection.dart +++ b/lib/widgets/collection/thumbnail_collection.dart @@ -219,7 +219,6 @@ class _CollectionScrollViewState extends State { text: 'No favourites', ); } - debugPrint('collection.filters=${collection.filters}'); if (collection.filters.any((filter) => filter is MimeFilter && filter.mime == MimeTypes.anyVideo)) { return EmptyContent( icon: AIcons.video,