From 5f6da284fbaa4af7e8aa490713afed8f14f4a192 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Tue, 3 Jan 2023 02:00:16 +0800 Subject: [PATCH] fixup! Create download dir only in download mode --- .../ehviewer/download/DownloadManager.java | 4 +- .../com/hippo/ehviewer/spider/SpiderDen.java | 53 +++++++------------ .../hippo/ehviewer/spider/SpiderQueen.java | 11 ++-- .../ehviewer/ui/scene/DownloadsScene.java | 2 +- .../ehviewer/ui/scene/GalleryDetailScene.java | 2 +- 5 files changed, 31 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java index 575e00abf..d569be799 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java @@ -588,11 +588,11 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { galleryInfo.uploader = downloadInfo.uploader; galleryInfo.rating = downloadInfo.rating; - UniFile downloadDir = SpiderDen.getGalleryDownloadDir(galleryInfo, false); + UniFile downloadDir = SpiderDen.getGalleryDownloadDir(galleryInfo.gid); if (downloadDir == null) { continue; } - UniFile file = downloadDir.findFile(".ehviewer"); + UniFile file = downloadDir.findFile(SpiderQueen.SPIDER_INFO_FILENAME); if (file == null) { continue; } diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java index e667dddc5..18c826a9e 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java @@ -51,11 +51,14 @@ public final class SpiderDen { private static SimpleDiskCache sCache; @Nullable private UniFile mDownloadDir; + private final GalleryInfo mGalleryInfo; private final long mGid; private volatile int mMode = SpiderQueen.MODE_READ; public SpiderDen(GalleryInfo galleryInfo) { + mGalleryInfo = galleryInfo; mGid = galleryInfo.gid; + mDownloadDir = getGalleryDownloadDir(galleryInfo.gid); } public static void initialize(Context context) { @@ -63,24 +66,15 @@ public final class SpiderDen { MathUtils.clamp(Settings.getReadCacheSize(), 40, 1280) * 1024 * 1024); } - public static UniFile getGalleryDownloadDir(GalleryInfo galleryInfo, boolean create) { + public static UniFile getGalleryDownloadDir(long gid) { UniFile dir = Settings.getDownloadLocation(); - if (dir != null) { - // Read from DB - String dirname = EhDB.getDownloadDirname(galleryInfo.gid); - if (null != dirname) { - // Some dirname may be invalid in some version - dirname = FileUtils.sanitizeFilename(dirname); - EhDB.putDownloadDirname(galleryInfo.gid, dirname); - } - - // Create it - if (null == dirname && create) { - dirname = FileUtils.sanitizeFilename(galleryInfo.gid + "-" + EhUtils.getSuitableTitle(galleryInfo)); - EhDB.putDownloadDirname(galleryInfo.gid, dirname); - } - - return null != dirname ? dir.subFile(dirname) : null; + // Read from DB + String dirname = EhDB.getDownloadDirname(gid); + if (dir != null && dirname != null) { + // Some dirname may be invalid in some version + dirname = FileUtils.sanitizeFilename(dirname); + EhDB.putDownloadDirname(gid, dirname); + return dir.subFile(dirname); } else { return null; } @@ -114,6 +108,11 @@ public final class SpiderDen { } private boolean ensureDownloadDir() { + if (mDownloadDir == null) { + var dirname = FileUtils.sanitizeFilename(mGid + "-" + EhUtils.getSuitableTitle(mGalleryInfo)); + EhDB.putDownloadDirname(mGid, dirname); + mDownloadDir = getGalleryDownloadDir(mGid); + } return mDownloadDir != null && mDownloadDir.ensureDir(); } @@ -127,13 +126,12 @@ public final class SpiderDen { @Nullable public UniFile getDownloadDir() { + if (mDownloadDir == null) { + mDownloadDir = getGalleryDownloadDir(mGid); + } return mDownloadDir != null && mDownloadDir.isDirectory() ? mDownloadDir : null; } - public void setDownloadDir(UniFile dir) { - mDownloadDir = dir; - } - private boolean containInCache(int index) { if (sCache == null) { return false; @@ -344,17 +342,4 @@ public final class SpiderDen { } } - private static class StartWithFilenameFilter implements FilenameFilter { - - private final String mPrefix; - - public StartWithFilenameFilter(String prefix) { - mPrefix = prefix; - } - - @Override - public boolean accept(UniFile dir, String filename) { - return filename.startsWith(mPrefix); - } - } } diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java index f3f272dc4..433a96dca 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java @@ -318,9 +318,6 @@ public final class SpiderQueen implements Runnable { mode = MODE_READ; } - if (mSpiderDen.getDownloadDir() == null) { - mSpiderDen.setDownloadDir(SpiderDen.getGalleryDownloadDir(mGalleryInfo, mode == MODE_DOWNLOAD)); - } mSpiderDen.setMode(mode); // Update download page @@ -367,6 +364,7 @@ public final class SpiderQueen implements Runnable { } updateMode(); + writeSpiderInfoToLocal(); } private void clearMode(@Mode int mode) { @@ -842,6 +840,13 @@ public final class SpiderQueen implements Runnable { } } + private void writeSpiderInfoToLocal() { + var spiderInfo = mSpiderInfo.get(); + if (spiderInfo != null) { + writeSpiderInfoToLocal(spiderInfo); + } + } + private synchronized void writeSpiderInfoToLocal(@NonNull SpiderInfo spiderInfo) { // Write to download dir UniFile downloadDir = mSpiderDen.getDownloadDir(); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java index 944e0f0b6..cfdca0512 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java @@ -995,7 +995,7 @@ public class DownloadsScene extends BaseToolbarScene int i = 0; for (DownloadInfo info : mDownloadInfoList) { // Put file - files[i] = SpiderDen.getGalleryDownloadDir(info, false); + files[i] = SpiderDen.getGalleryDownloadDir(info.gid); // Remove download path EhDB.removeDownloadDirname(info.gid); i++; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index 15c440b41..04afe1f6e 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -2074,7 +2074,7 @@ public class GalleryDetailScene extends CollapsingToolbarScene implements View.O boolean checked = mBuilder.isChecked(); Settings.putRemoveImageFiles(checked); if (checked) { - UniFile file = SpiderDen.getGalleryDownloadDir(mGalleryInfo, false); + UniFile file = SpiderDen.getGalleryDownloadDir(mGalleryInfo.gid); EhDB.removeDownloadDirname(mGalleryInfo.gid); deleteFileAsync(file); }