From 7f307346f3526e5ba3422a2298c6cb0bbe39a0ab Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 5 Jun 2026 20:53:20 +0900 Subject: [PATCH] =?UTF-8?q?fix(common):=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=BA=90=EC=8B=9C=20=EB=94=94=EB=A0=89=ED=84=B0=EB=A6=AC?= =?UTF-8?q?=EB=A5=BC=20=EB=B6=84=EB=A6=AC=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/common/ImageLoaderProvider.kt | 6 ++- .../common/ImageLoaderProviderTest.kt | 46 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 app/src/test/java/kr/co/vividnext/sodalive/common/ImageLoaderProviderTest.kt diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/ImageLoaderProvider.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/ImageLoaderProvider.kt index 1d9aa051..1056bd8e 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/common/ImageLoaderProvider.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/common/ImageLoaderProvider.kt @@ -7,6 +7,9 @@ import okhttp3.OkHttpClient import java.io.File object ImageLoaderProvider { + const val LEGACY_OKHTTP_IMAGE_CACHE_DIRECTORY_NAME = "image_cache" + const val COIL_IMAGE_CACHE_DIRECTORY_NAME = "coil_image_cache" + lateinit var imageLoader: ImageLoader private set @@ -14,9 +17,10 @@ object ImageLoaderProvider { get() = ::imageLoader.isInitialized fun init(context: Context) { val cacheSize = 250L * 1024L * 1024L // 250 MB + File(context.cacheDir, LEGACY_OKHTTP_IMAGE_CACHE_DIRECTORY_NAME).deleteRecursively() val cacheDirectory = File( context.cacheDir, - "image_cache" + COIL_IMAGE_CACHE_DIRECTORY_NAME ).apply { mkdirs() } val cache = Cache(cacheDirectory, cacheSize) diff --git a/app/src/test/java/kr/co/vividnext/sodalive/common/ImageLoaderProviderTest.kt b/app/src/test/java/kr/co/vividnext/sodalive/common/ImageLoaderProviderTest.kt new file mode 100644 index 00000000..b8388d7b --- /dev/null +++ b/app/src/test/java/kr/co/vividnext/sodalive/common/ImageLoaderProviderTest.kt @@ -0,0 +1,46 @@ +package kr.co.vividnext.sodalive.common + +import android.app.Application +import androidx.test.core.app.ApplicationProvider +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertTrue +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import java.io.File + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [28], application = Application::class) +class ImageLoaderProviderTest { + + @Test + fun `image loader cache directory does not reuse legacy okhttp image cache`() { + assertNotEquals( + ImageLoaderProvider.LEGACY_OKHTTP_IMAGE_CACHE_DIRECTORY_NAME, + ImageLoaderProvider.COIL_IMAGE_CACHE_DIRECTORY_NAME + ) + } + + @Test + fun `image loader init deletes legacy cache and creates new cache directory`() { + val context = ApplicationProvider.getApplicationContext() + val legacyCacheDirectory = File( + context.cacheDir, + ImageLoaderProvider.LEGACY_OKHTTP_IMAGE_CACHE_DIRECTORY_NAME + ) + val newCacheDirectory = File( + context.cacheDir, + ImageLoaderProvider.COIL_IMAGE_CACHE_DIRECTORY_NAME + ) + legacyCacheDirectory.mkdirs() + File(legacyCacheDirectory, "journal").writeText("libcore.io.DiskLruCache\n1\n2\n") + newCacheDirectory.deleteRecursively() + + ImageLoaderProvider.init(context) + + assertFalse(legacyCacheDirectory.exists()) + assertTrue(newCacheDirectory.exists()) + } +}