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
|
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)
|
||||||
|
|||||||
@@ -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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user