ExodusDataProvider: Migrate to hilt

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-07-09 13:02:55 +07:00
parent b7f2eaa7e3
commit a702f4f24c
2 changed files with 20 additions and 35 deletions

View File

@@ -20,34 +20,23 @@
package com.aurora.store.data.providers package com.aurora.store.data.providers
import android.content.Context import android.content.Context
import com.aurora.store.data.SingletonHolder import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import org.json.JSONArray import org.json.JSONArray
import org.json.JSONObject import org.json.JSONObject
import java.nio.charset.StandardCharsets import java.nio.charset.StandardCharsets
import javax.inject.Singleton
class ExodusDataProvider private constructor(val context: Context) { @Module
@InstallIn(SingletonComponent::class)
object ExodusDataProvider {
companion object : SingletonHolder<ExodusDataProvider, Context>(::ExodusDataProvider) @Provides
@Singleton
private val exodusTrackers: JSONObject fun providesLocalTrackersInfo(@ApplicationContext context: Context): JSONObject {
init {
exodusTrackers = loadLocalTrackers()
}
fun getLocalTrackers(): JSONObject {
return exodusTrackers
}
fun getFilteredTrackers(trackerIds: List<Int>): List<JSONObject> {
return trackerIds.map {
exodusTrackers.getJSONObject(
it.toString()
)
}.toList()
}
private fun loadLocalTrackers(): JSONObject {
val inputStream = context.assets.open("exodus_trackers.json") val inputStream = context.assets.open("exodus_trackers.json")
val bytes = ByteArray(inputStream.available()) val bytes = ByteArray(inputStream.available())
inputStream.read(bytes) inputStream.read(bytes)

View File

@@ -29,12 +29,12 @@ import com.aurora.extensions.browse
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.model.ExodusTracker import com.aurora.store.data.model.ExodusTracker
import com.aurora.store.data.model.Report import com.aurora.store.data.model.Report
import com.aurora.store.data.providers.ExodusDataProvider
import com.aurora.store.databinding.ActivityGenericRecyclerBinding import com.aurora.store.databinding.ActivityGenericRecyclerBinding
import com.aurora.store.view.epoxy.views.HeaderViewModel_ import com.aurora.store.view.epoxy.views.HeaderViewModel_
import com.aurora.store.view.epoxy.views.details.ExodusViewModel_ import com.aurora.store.view.epoxy.views.details.ExodusViewModel_
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.json.JSONObject import org.json.JSONObject
import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) { class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
@@ -45,6 +45,9 @@ class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
private val args: DetailsExodusFragmentArgs by navArgs() private val args: DetailsExodusFragmentArgs by navArgs()
@Inject
lateinit var exodusTrackers: JSONObject
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
_binding = ActivityGenericRecyclerBinding.bind(view) _binding = ActivityGenericRecyclerBinding.bind(view)
@@ -88,7 +91,10 @@ class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
} }
private fun getExodusTrackersFromReport(report: Report): List<ExodusTracker> { private fun getExodusTrackersFromReport(report: Report): List<ExodusTracker> {
val trackerObjects: List<JSONObject> = fetchLocalTrackers(report.trackers) val trackerObjects = report.trackers.map {
exodusTrackers.getJSONObject(it.toString())
}.toList()
return trackerObjects.map { return trackerObjects.map {
ExodusTracker().apply { ExodusTracker().apply {
id = it.getInt("id") id = it.getInt("id")
@@ -103,14 +109,4 @@ class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
} }
}.toList() }.toList()
} }
private fun fetchLocalTrackers(trackerIds: List<Int>): List<JSONObject> {
return try {
ExodusDataProvider
.with(requireContext())
.getFilteredTrackers(trackerIds)
} catch (e: Exception) {
emptyList()
}
}
} }