Use moshi codegen

This commit is contained in:
Sad Ellie 2023-12-03 23:33:51 +03:00
parent c1e52557a3
commit 02f9474f1f
4 changed files with 33 additions and 30 deletions

View File

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

View File

@ -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<UserData> = moshi.adapter(UserData::class.java)
private val auth = "com.sadellie.unitto.BackupManager"

View File

@ -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<UnitsEntity>,
val timeZoneTable: List<TimeZoneEntity>,
@Json(name = "unitsTable") val unitsTable: List<UnitsEntity>,
@Json(name = "timeZoneTable") val timeZoneTable: List<TimeZoneEntity>,
)

View File

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