Convert spiderInfo cache to Coil DiskCache
This commit is contained in:
1 parent
1316875602
commit
d8ccec45f9
2 files changed
+21
-28
No files matched your search
@@ -32,9 +32,9 @@ import androidx.lifecycle.LifecycleOwner
|
|||||||
import androidx.lifecycle.ProcessLifecycleOwner
|
import androidx.lifecycle.ProcessLifecycleOwner
|
||||||
import coil.ImageLoader
|
import coil.ImageLoader
|
||||||
import coil.ImageLoaderFactory
|
import coil.ImageLoaderFactory
|
||||||
|
import coil.disk.DiskCache
|
||||||
import com.hippo.Native
|
import com.hippo.Native
|
||||||
import com.hippo.app.BaseDialogBuilder
|
import com.hippo.app.BaseDialogBuilder
|
||||||
import com.hippo.beerbelly.SimpleDiskCache
|
|
||||||
import com.hippo.ehviewer.client.EhClient
|
import com.hippo.ehviewer.client.EhClient
|
||||||
import com.hippo.ehviewer.client.EhCookieStore
|
import com.hippo.ehviewer.client.EhCookieStore
|
||||||
import com.hippo.ehviewer.client.EhDns
|
import com.hippo.ehviewer.client.EhDns
|
||||||
@@ -332,10 +332,8 @@ class EhApplication : SceneApplication(), DefaultLifecycleObserver, ImageLoaderF
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val spiderInfoCache by lazy {
|
val spiderInfoCache by lazy {
|
||||||
SimpleDiskCache(
|
DiskCache.Builder().directory(File(application.cacheDir, "spider_info"))
|
||||||
File(application.cacheDir, "spider_info"),
|
.maxSizeBytes(20 * 1024 * 1024).build()
|
||||||
20 * 1024 * 1024
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ import androidx.annotation.NonNull;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.UiThread;
|
import androidx.annotation.UiThread;
|
||||||
|
|
||||||
import com.hippo.beerbelly.SimpleDiskCache;
|
|
||||||
import com.hippo.ehviewer.EhApplication;
|
import com.hippo.ehviewer.EhApplication;
|
||||||
import com.hippo.ehviewer.GetText;
|
import com.hippo.ehviewer.GetText;
|
||||||
import com.hippo.ehviewer.R;
|
import com.hippo.ehviewer.R;
|
||||||
@@ -65,6 +64,7 @@ import com.hippo.yorozuya.thread.PriorityThreadFactory;
|
|||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
@@ -82,6 +82,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
import coil.disk.DiskCache;
|
||||||
import eu.kanade.tachiyomi.ui.reader.loader.PageLoader;
|
import eu.kanade.tachiyomi.ui.reader.loader.PageLoader;
|
||||||
import okhttp3.Call;
|
import okhttp3.Call;
|
||||||
import okhttp3.MediaType;
|
import okhttp3.MediaType;
|
||||||
@@ -112,7 +113,7 @@ public final class SpiderQueen implements Runnable {
|
|||||||
@NonNull
|
@NonNull
|
||||||
private final OkHttpClient mHttpClient;
|
private final OkHttpClient mHttpClient;
|
||||||
@NonNull
|
@NonNull
|
||||||
private final SimpleDiskCache mSpiderInfoCache;
|
private final DiskCache mSpiderInfoCache;
|
||||||
@NonNull
|
@NonNull
|
||||||
private final GalleryInfo mGalleryInfo;
|
private final GalleryInfo mGalleryInfo;
|
||||||
@NonNull
|
@NonNull
|
||||||
@@ -689,21 +690,16 @@ public final class SpiderQueen implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Read from cache
|
// Read from cache
|
||||||
InputStreamPipe pipe = mSpiderInfoCache.getInputStreamPipe(Long.toString(mGalleryInfo.gid));
|
var entry = mSpiderInfoCache.get(Long.toString(mGalleryInfo.gid));
|
||||||
if (null != pipe) {
|
if (entry == null) return null;
|
||||||
try {
|
try (entry; InputStream is = new FileInputStream(entry.getData().toFile())) {
|
||||||
pipe.obtain();
|
spiderInfo = SpiderInfo.read(is);
|
||||||
spiderInfo = SpiderInfo.read(pipe.open());
|
if (spiderInfo != null && spiderInfo.gid == mGalleryInfo.gid &&
|
||||||
if (spiderInfo != null && spiderInfo.gid == mGalleryInfo.gid &&
|
spiderInfo.token.equals(mGalleryInfo.token)) {
|
||||||
spiderInfo.token.equals(mGalleryInfo.token)) {
|
return spiderInfo;
|
||||||
return spiderInfo;
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
// Ignore
|
|
||||||
} finally {
|
|
||||||
pipe.close();
|
|
||||||
pipe.release();
|
|
||||||
}
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
// Ignore
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -843,16 +839,15 @@ public final class SpiderQueen implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read from cache
|
// Write to cache
|
||||||
OutputStreamPipe pipe = mSpiderInfoCache.getOutputStreamPipe(Long.toString(mGalleryInfo.gid));
|
var editor = mSpiderInfoCache.edit(Long.toString(mGalleryInfo.gid));
|
||||||
try {
|
if (editor == null) return;
|
||||||
pipe.obtain();
|
try (OutputStream os = new FileOutputStream(editor.getData().toFile())) {
|
||||||
spiderInfo.write(pipe.open());
|
spiderInfo.write(os);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
// Ignore
|
// Ignore
|
||||||
} finally {
|
} finally {
|
||||||
pipe.close();
|
editor.commit();
|
||||||
pipe.release();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user