From 29cbb33a42838b606e71c94642b5cb7e406e8a37 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 4 Sep 2025 11:35:59 -0500 Subject: [PATCH] Move VtodoCache to kmp --- .../org/tasks/injection/ApplicationModule.kt | 12 ++++++++++++ .../kotlin}/org/tasks/caldav/FileStorage.kt | 9 +++------ .../kotlin}/org/tasks/caldav/VtodoCache.kt | 17 +++++++---------- 3 files changed, 22 insertions(+), 16 deletions(-) rename {app/src/main/java => kmp/src/commonMain/kotlin}/org/tasks/caldav/FileStorage.kt (75%) rename {app/src/main/java => kmp/src/commonMain/kotlin}/org/tasks/caldav/VtodoCache.kt (87%) diff --git a/app/src/main/java/org/tasks/injection/ApplicationModule.kt b/app/src/main/java/org/tasks/injection/ApplicationModule.kt index 5e886c3a5..56fa47c80 100644 --- a/app/src/main/java/org/tasks/injection/ApplicationModule.kt +++ b/app/src/main/java/org/tasks/injection/ApplicationModule.kt @@ -15,6 +15,8 @@ import org.tasks.analytics.Firebase import org.tasks.billing.BillingClient import org.tasks.billing.BillingClientImpl import org.tasks.billing.Inventory +import org.tasks.caldav.FileStorage +import org.tasks.caldav.VtodoCache import org.tasks.compose.drawer.DrawerConfiguration import org.tasks.data.dao.AlarmDao import org.tasks.data.dao.Astrid2ContentProviderDao @@ -167,4 +169,14 @@ class ApplicationModule { taskDao = taskDao, tasksPreferences = tasksPreferences, ) + + @Provides + @Singleton + fun providesFileStorage(@ApplicationContext context: Context) = + FileStorage(context.filesDir.absolutePath) + + @Provides + @Singleton + fun providesVtodoCache(caldavDao: CaldavDao, fileStorage: FileStorage) = + VtodoCache(caldavDao, fileStorage) } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/caldav/FileStorage.kt b/kmp/src/commonMain/kotlin/org/tasks/caldav/FileStorage.kt similarity index 75% rename from app/src/main/java/org/tasks/caldav/FileStorage.kt rename to kmp/src/commonMain/kotlin/org/tasks/caldav/FileStorage.kt index bfd388b0d..2c536ad8a 100644 --- a/app/src/main/java/org/tasks/caldav/FileStorage.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/caldav/FileStorage.kt @@ -1,16 +1,13 @@ package org.tasks.caldav -import android.content.Context -import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import java.io.File -import javax.inject.Inject -class FileStorage @Inject constructor( - @ApplicationContext context: Context +class FileStorage( + rootPath: String ) { - val root = File(context.filesDir, "vtodo") + val root = File(rootPath, "vtodo") @Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS") fun getFile(vararg segments: String?): File? = diff --git a/app/src/main/java/org/tasks/caldav/VtodoCache.kt b/kmp/src/commonMain/kotlin/org/tasks/caldav/VtodoCache.kt similarity index 87% rename from app/src/main/java/org/tasks/caldav/VtodoCache.kt rename to kmp/src/commonMain/kotlin/org/tasks/caldav/VtodoCache.kt index e8deddce1..8e9ac3abb 100644 --- a/app/src/main/java/org/tasks/caldav/VtodoCache.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/caldav/VtodoCache.kt @@ -1,18 +1,15 @@ package org.tasks.caldav +import co.touchlab.kermit.Logger import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.tasks.data.dao.CaldavDao import org.tasks.data.entity.CaldavAccount import org.tasks.data.entity.CaldavCalendar import org.tasks.data.entity.CaldavTask -import timber.log.Timber import java.io.File -import javax.inject.Inject -import javax.inject.Singleton -@Singleton -class VtodoCache @Inject constructor( +class VtodoCache( private val caldavDao: CaldavDao, private val fileStorage: FileStorage, ) { @@ -30,7 +27,7 @@ class VtodoCache @Inject constructor( ?: return@withContext source.copyTo(target, overwrite = true) val deleted = source.delete() - Timber.d("Moved $source to $target [success=${deleted}]") + Logger.d("VtodoCache") { "Moved $source to $target [success=${deleted}]" } } suspend fun getVtodo(caldavTask: CaldavTask?): String? { @@ -69,28 +66,28 @@ class VtodoCache @Inject constructor( suspend fun delete(calendar: CaldavCalendar, caldavTask: CaldavTask) = withContext(Dispatchers.IO) { fileStorage.getFile(calendar.account, caldavTask.calendar, caldavTask.obj)?.let { val deleted = it.delete() - Timber.d("Deleting $it [success=$deleted]") + Logger.d("VtodoCache") { "Deleting $it [success=$deleted]" } } } suspend fun delete(calendar: CaldavCalendar) = withContext(Dispatchers.IO) { fileStorage.getFile(calendar.account, calendar.uuid)?.let { val deleted = it.deleteRecursively() - Timber.d("Deleting $it [success=$deleted]") + Logger.d("VtodoCache") { "Deleting $it [success=$deleted]" } } } suspend fun delete(account: CaldavAccount) = withContext(Dispatchers.IO) { fileStorage.getFile(account.uuid)?.let { val deleted = it.deleteRecursively() - Timber.d("Deleting $it [success=$deleted]") + Logger.d("VtodoCache") { "Deleting $it [success=$deleted]" } } } suspend fun clear() = withContext(Dispatchers.IO) { fileStorage.getFile()?.let { val deleted = it.deleteRecursively() - Timber.d("Deleting $it [success=$deleted]") + Logger.d("VtodoCache") { "Deleting $it [success=$deleted]" } } } }