ExodusDataProvider: Migrate to hilt
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -20,34 +20,23 @@
|
||||
package com.aurora.store.data.providers
|
||||
|
||||
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.JSONObject
|
||||
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)
|
||||
|
||||
private val exodusTrackers: 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 {
|
||||
@Provides
|
||||
@Singleton
|
||||
fun providesLocalTrackersInfo(@ApplicationContext context: Context): JSONObject {
|
||||
val inputStream = context.assets.open("exodus_trackers.json")
|
||||
val bytes = ByteArray(inputStream.available())
|
||||
inputStream.read(bytes)
|
||||
|
||||
@@ -29,12 +29,12 @@ import com.aurora.extensions.browse
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.data.model.ExodusTracker
|
||||
import com.aurora.store.data.model.Report
|
||||
import com.aurora.store.data.providers.ExodusDataProvider
|
||||
import com.aurora.store.databinding.ActivityGenericRecyclerBinding
|
||||
import com.aurora.store.view.epoxy.views.HeaderViewModel_
|
||||
import com.aurora.store.view.epoxy.views.details.ExodusViewModel_
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
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()
|
||||
|
||||
@Inject
|
||||
lateinit var exodusTrackers: JSONObject
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
_binding = ActivityGenericRecyclerBinding.bind(view)
|
||||
@@ -88,7 +91,10 @@ class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
|
||||
}
|
||||
|
||||
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 {
|
||||
ExodusTracker().apply {
|
||||
id = it.getInt("id")
|
||||
@@ -103,14 +109,4 @@ class DetailsExodusFragment : Fragment(R.layout.activity_generic_recycler) {
|
||||
}
|
||||
}.toList()
|
||||
}
|
||||
|
||||
private fun fetchLocalTrackers(trackerIds: List<Int>): List<JSONObject> {
|
||||
return try {
|
||||
ExodusDataProvider
|
||||
.with(requireContext())
|
||||
.getFilteredTrackers(trackerIds)
|
||||
} catch (e: Exception) {
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user