I have a feature with feature flagging enabled, basis the condition I want to load different pages in my screen, to achieve this I have the following enum:
enum class ImageHolderEnum( val titleId: Int, val qFragment: BaseFragment, val fragment: BaseFragment ) : IPageHolder { PAGE1(R.string.tab_shop_baby, BabyTwoFragment(), BabyThreeFragment()) { override fun getTitle(): Int = titleId override fun getFragmentToAdd(): BaseFragment = if (isFeatureAllowed()) qFragment else fragment }, PAGE2(R.string.tab_shop_mom, MomThreeFragment(), MomTwoFragment()) { override fun getTitle(): Int = titleId override fun getFragmentToAdd(): BaseFragment = if (isFeatureAllowed()) qFragment else fragment }, PAGE3(R.string.tab_shop_dad, DadTwoFragment(), DadThreeFragment()) { override fun getTitle(): Int = titleId override fun getFragmentToAdd(): BaseFragment = if (isFeatureAllowed()) qFragment else fragment }; fun isFeatureAllowed(): Boolean { val qSlideConfig: QSlideConfig by remoteFeatureFlag() // Kind of dependency injection here return qSlideConfig.isQSlideEnabled() } }
The interface is as follows:
interface IPageHolder { fun getTitle(): Int fun getFragmentToAdd(): BaseFragment }
I am concerned if I am using the dependency injection inside the enum and breaking some principles.