diff --git a/data/backup/build.gradle.kts b/data/backup/build.gradle.kts index 27888522..39951244 100644 --- a/data/backup/build.gradle.kts +++ b/data/backup/build.gradle.kts @@ -17,6 +17,7 @@ */ plugins { + id("com.google.devtools.ksp") id("unitto.library") id("unitto.android.library.jacoco") id("unitto.android.hilt") @@ -27,6 +28,7 @@ android.namespace = "com.sadellie.unitto.data.backup" dependencies { implementation(libs.androidx.datastore.datastore.preferences) implementation(libs.com.squareup.moshi.moshi.kotlin) + ksp(libs.com.squareup.moshi.moshi.kotlin.codegen) implementation(project(":data:database")) implementation(project(":data:model")) diff --git a/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt b/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt index 4d7f8e71..7392bd2e 100644 --- a/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt +++ b/data/backup/src/main/java/com/sadellie/unitto/data/backup/BackupManager.kt @@ -52,7 +52,6 @@ import com.sadellie.unitto.data.userprefs.getUnitConverterFormatTime import com.sadellie.unitto.data.userprefs.getUnitConverterSorting import com.squareup.moshi.JsonAdapter import com.squareup.moshi.Moshi -import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.first @@ -70,9 +69,7 @@ class BackupManager @Inject constructor( // Not planned at the moment // private val calculatorHistoryDao: CalculatorHistoryDao, ) { - private val moshi: Moshi = Moshi.Builder() - .addLast(KotlinJsonAdapterFactory()) - .build() + private val moshi: Moshi = Moshi.Builder().build() private val jsonAdapter: JsonAdapter = moshi.adapter(UserData::class.java) private val auth = "com.sadellie.unitto.BackupManager" diff --git a/data/backup/src/main/java/com/sadellie/unitto/data/backup/UserData.kt b/data/backup/src/main/java/com/sadellie/unitto/data/backup/UserData.kt index 1c155d79..c93d4012 100644 --- a/data/backup/src/main/java/com/sadellie/unitto/data/backup/UserData.kt +++ b/data/backup/src/main/java/com/sadellie/unitto/data/backup/UserData.kt @@ -20,36 +20,39 @@ package com.sadellie.unitto.data.backup import com.sadellie.unitto.data.database.TimeZoneEntity import com.sadellie.unitto.data.database.UnitsEntity +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass // Don't move to model module. This uses entity classes from database module -data class UserData( - val themingMode: String, - val enableDynamicTheme: Boolean, - val enableAmoledTheme: Boolean, - val customColor: Long, - val monetMode: String, - val startingScreen: String, - val enableToolsExperiment: Boolean, - val enableVibrations: Boolean, - val middleZero: Boolean, - val acButton: Boolean, - val rpnMode: Boolean, +@JsonClass(generateAdapter = true) +internal data class UserData( + @Json(name = "themingMode") val themingMode: String, + @Json(name = "enableDynamicTheme") val enableDynamicTheme: Boolean, + @Json(name = "enableAmoledTheme") val enableAmoledTheme: Boolean, + @Json(name = "customColor") val customColor: Long, + @Json(name = "monetMode") val monetMode: String, + @Json(name = "startingScreen") val startingScreen: String, + @Json(name = "enableToolsExperiment") val enableToolsExperiment: Boolean, + @Json(name = "enableVibrations") val enableVibrations: Boolean, + @Json(name = "middleZero") val middleZero: Boolean, + @Json(name = "acButton") val acButton: Boolean, + @Json(name = "rpnMode") val rpnMode: Boolean, - val precision: Int, - val separator: Int, - val outputFormat: Int, + @Json(name = "precision") val precision: Int, + @Json(name = "separator") val separator: Int, + @Json(name = "outputFormat") val outputFormat: Int, - val radianMode: Boolean, - val partialHistoryView: Boolean, - val clearInputAfterEquals: Boolean, + @Json(name = "radianMode") val radianMode: Boolean, + @Json(name = "partialHistoryView") val partialHistoryView: Boolean, + @Json(name = "clearInputAfterEquals") val clearInputAfterEquals: Boolean, - val latestLeftSide: String, - val latestRightSide: String, - val shownUnitGroups: String, - val unitConverterFavoritesOnly: Boolean, - val unitConverterFormatTime: Boolean, - val unitConverterSorting: String, + @Json(name = "latestLeftSide") val latestLeftSide: String, + @Json(name = "latestRightSide") val latestRightSide: String, + @Json(name = "shownUnitGroups") val shownUnitGroups: String, + @Json(name = "unitConverterFavoritesOnly") val unitConverterFavoritesOnly: Boolean, + @Json(name = "unitConverterFormatTime") val unitConverterFormatTime: Boolean, + @Json(name = "unitConverterSorting") val unitConverterSorting: String, - val unitsTable: List, - val timeZoneTable: List, + @Json(name = "unitsTable") val unitsTable: List, + @Json(name = "timeZoneTable") val timeZoneTable: List, ) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1081efb5..605c581a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -63,6 +63,7 @@ com-google-dagger-android-hilt-android = { group = "com.google.dagger", name = " com-google-dagger-dagger-android-processor = { group = "com.google.dagger", name = "dagger-android-processor", version.ref = "comGoogleDagger" } com-google-dagger-hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "comGoogleDagger" } com-squareup-moshi-moshi-kotlin = { group = "com.squareup.moshi", name = "moshi-kotlin", version.ref = "comSquareupMoshiMoshiKotlin" } +com-squareup-moshi-moshi-kotlin-codegen = { group = "com.squareup.moshi", name = "moshi-kotlin-codegen", version.ref = "comSquareupMoshiMoshiKotlin" } com-squareup-retrofit2-converter-moshi = { group = "com.squareup.retrofit2", name = "converter-moshi", version.ref = "comSquareupRetrofit2ConverterMoshi" } junit-junit = { group = "junit", name = "junit", version.ref = "junitJunit" } org-burnoutcrew-composereorderable-reorderable = { group = "org.burnoutcrew.composereorderable", name = "reorderable", version.ref = "orgBurnoutcrewComposereorderableReorderable" }