switching to vector base activity and injecting epoxy controller for project consistency

This commit is contained in:
Adam Brown 2021-12-07 15:28:50 +00:00
parent 440de9741b
commit 6c21ed8eab
2 changed files with 11 additions and 12 deletions

View File

@ -17,40 +17,36 @@
package im.vector.app.features.debug.features
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.extensions.cleanup
import im.vector.app.core.extensions.configureWith
import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.FragmentGenericRecyclerBinding
import im.vector.app.features.themes.ActivityOtherThemes
import im.vector.app.features.themes.ThemeUtils
import javax.inject.Inject
@AndroidEntryPoint
class DebugFeaturesSettingsActivity : AppCompatActivity() {
class DebugFeaturesSettingsActivity : VectorBaseActivity<FragmentGenericRecyclerBinding>() {
@Inject lateinit var debugFeatures: DebugVectorFeatures
@Inject lateinit var debugFeaturesStateFactory: DebugFeaturesStateFactory
@Inject lateinit var controller: FeaturesController
private lateinit var views: FragmentGenericRecyclerBinding
override fun getBinding() = FragmentGenericRecyclerBinding.inflate(layoutInflater)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ThemeUtils.setActivityTheme(this, ActivityOtherThemes.Default)
views = FragmentGenericRecyclerBinding.inflate(layoutInflater)
setContentView(views.root)
val controller = FeaturesController(object : EnumFeatureItem.Listener {
controller.listener = object : EnumFeatureItem.Listener {
@Suppress("UNCHECKED_CAST")
override fun <T : Enum<T>> onOptionSelected(option: Any?, feature: Feature.EnumFeature<T>) {
debugFeatures.overrideEnum(option as? T, feature.type)
}
})
}
views.genericRecyclerView.configureWith(controller)
controller.setData(debugFeaturesStateFactory.create())
}
override fun onDestroy() {
controller.listener = null
views.genericRecyclerView.cleanup()
super.onDestroy()
}

View File

@ -17,6 +17,7 @@
package im.vector.app.features.debug.features
import com.airbnb.epoxy.TypedEpoxyController
import javax.inject.Inject
import kotlin.reflect.KClass
data class FeaturesState(
@ -34,7 +35,9 @@ sealed interface Feature {
) : Feature
}
class FeaturesController(private val listener: EnumFeatureItem.Listener) : TypedEpoxyController<FeaturesState>() {
class FeaturesController @Inject constructor() : TypedEpoxyController<FeaturesState>() {
var listener: EnumFeatureItem.Listener? = null
override fun buildModels(data: FeaturesState?) {
if (data == null) return