DownloadConverter: Inject gson instance using hilt

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-05-20 14:40:49 +05:30
parent 2739f2fbc9
commit e2aa5e6b1d
2 changed files with 16 additions and 6 deletions

View File

@@ -2,6 +2,7 @@ package com.aurora.store.data.room
import android.content.Context import android.content.Context
import androidx.room.Room import androidx.room.Room
import com.aurora.store.data.room.download.DownloadConverter
import com.aurora.store.data.room.download.DownloadDao import com.aurora.store.data.room.download.DownloadDao
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
@@ -18,8 +19,12 @@ object RoomModule {
@Singleton @Singleton
@Provides @Provides
fun providesRoomInstance(@ApplicationContext context: Context): AuroraDatabase { fun providesRoomInstance(
@ApplicationContext context: Context,
downloadConverter: DownloadConverter
): AuroraDatabase {
return Room.databaseBuilder(context, AuroraDatabase::class.java, DATABASE) return Room.databaseBuilder(context, AuroraDatabase::class.java, DATABASE)
.addTypeConverter(downloadConverter)
.fallbackToDestructiveMigration() .fallbackToDestructiveMigration()
.build() .build()
} }

View File

@@ -1,31 +1,36 @@
package com.aurora.store.data.room.download package com.aurora.store.data.room.download
import androidx.room.ProvidedTypeConverter
import androidx.room.TypeConverter import androidx.room.TypeConverter
import com.aurora.gplayapi.data.models.File import com.aurora.gplayapi.data.models.File
import com.google.gson.Gson import com.google.gson.Gson
import com.google.gson.reflect.TypeToken import com.google.gson.reflect.TypeToken
import javax.inject.Inject
import javax.inject.Singleton
object DownloadConverter { @Singleton
@ProvidedTypeConverter
class DownloadConverter @Inject constructor(private val gson: Gson) {
@TypeConverter @TypeConverter
fun toSharedLibList(string: String): List<SharedLib> { fun toSharedLibList(string: String): List<SharedLib> {
val listType = object : TypeToken<List<SharedLib>>() {}.type val listType = object : TypeToken<List<SharedLib>>() {}.type
return Gson().fromJson(string, listType) return gson.fromJson(string, listType)
} }
@TypeConverter @TypeConverter
fun fromSharedLibList(list: List<SharedLib>): String { fun fromSharedLibList(list: List<SharedLib>): String {
return Gson().toJson(list) return gson.toJson(list)
} }
@TypeConverter @TypeConverter
fun toGPlayFileList(string: String): List<File> { fun toGPlayFileList(string: String): List<File> {
val listType = object : TypeToken<List<File>>() {}.type val listType = object : TypeToken<List<File>>() {}.type
return Gson().fromJson(string, listType) return gson.fromJson(string, listType)
} }
@TypeConverter @TypeConverter
fun fromGPlayFileList(list: List<File>): String { fun fromGPlayFileList(list: List<File>): String {
return Gson().toJson(list) return gson.toJson(list)
} }
} }