diff --git a/app/src/main/java/com/aurora/store/data/providers/ExodusDataProvider.kt b/app/src/main/java/com/aurora/store/data/providers/ExodusDataProvider.kt index a18f80d9e..f5b4d437c 100644 --- a/app/src/main/java/com/aurora/store/data/providers/ExodusDataProvider.kt +++ b/app/src/main/java/com/aurora/store/data/providers/ExodusDataProvider.kt @@ -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) - - private val exodusTrackers: JSONObject - - init { - exodusTrackers = loadLocalTrackers() - } - - fun getLocalTrackers(): JSONObject { - return exodusTrackers - } - - fun getFilteredTrackers(trackerIds: List): List { - 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) diff --git a/app/src/main/java/com/aurora/store/view/ui/details/DetailsExodusFragment.kt b/app/src/main/java/com/aurora/store/view/ui/details/DetailsExodusFragment.kt index f8dcc4b37..110a8b673 100644 --- a/app/src/main/java/com/aurora/store/view/ui/details/DetailsExodusFragment.kt +++ b/app/src/main/java/com/aurora/store/view/ui/details/DetailsExodusFragment.kt @@ -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 { - val trackerObjects: List = 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): List { - return try { - ExodusDataProvider - .with(requireContext()) - .getFilteredTrackers(trackerIds) - } catch (e: Exception) { - emptyList() - } - } }