Move VtodoCache to kmp

pull/3861/head
Alex Baker 3 months ago
parent 2418b664e9
commit 29cbb33a42

@ -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)
}

@ -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? =

@ -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]" }
}
}
}
Loading…
Cancel
Save