refactor: Add UiComponentFactory to manual DI
All checks were successful
/ build-debug (push) Successful in 4m3s

This commit is contained in:
Peter Cai 2024-03-04 18:51:10 -05:00
parent 6356601467
commit 4dd14d23f2
8 changed files with 37 additions and 9 deletions

View file

@ -10,4 +10,5 @@ interface AppContainer {
val euiccChannelManager: IEuiccChannelManager
val subscriptionManager: SubscriptionManager
val preferenceRepository: PreferenceRepository
val uiComponentFactory: UiComponentFactory
}

View file

@ -23,4 +23,8 @@ open class DefaultAppContainer(context: Context) : AppContainer {
override val preferenceRepository by lazy {
PreferenceRepository(context)
}
override val uiComponentFactory by lazy {
DefaultUiComponentFactory()
}
}

View file

@ -0,0 +1,9 @@
package im.angry.openeuicc.di
import im.angry.openeuicc.core.EuiccChannel
import im.angry.openeuicc.ui.EuiccManagementFragment
open class DefaultUiComponentFactory : UiComponentFactory {
override fun createEuiccManagementFragment(channel: EuiccChannel): EuiccManagementFragment =
EuiccManagementFragment.newInstance(channel.slotId, channel.portId)
}

View file

@ -0,0 +1,8 @@
package im.angry.openeuicc.di
import im.angry.openeuicc.core.EuiccChannel
import im.angry.openeuicc.ui.EuiccManagementFragment
interface UiComponentFactory {
fun createEuiccManagementFragment(channel: EuiccChannel): EuiccManagementFragment
}

View file

@ -88,10 +88,6 @@ open class MainActivity : AppCompatActivity(), OpenEuiccContextMarker {
else -> super.onOptionsItemSelected(item)
}
protected open fun createEuiccManagementFragment(channel: EuiccChannel): EuiccManagementFragment =
EuiccManagementFragment.newInstance(channel.slotId, channel.portId)
private suspend fun init() {
withContext(Dispatchers.IO) {
euiccChannelManager.enumerateEuiccChannels()
@ -108,7 +104,7 @@ open class MainActivity : AppCompatActivity(), OpenEuiccContextMarker {
withContext(Dispatchers.Main) {
euiccChannelManager.knownChannels.sortedBy { it.logicalSlotId }.forEach { channel ->
spinnerAdapter.add(getString(R.string.channel_name_format, channel.logicalSlotId))
fragments.add(createEuiccManagementFragment(channel))
fragments.add(appContainer.uiComponentFactory.createEuiccManagementFragment(channel))
}
if (fragments.isNotEmpty()) {

View file

@ -8,4 +8,8 @@ class PrivilegedAppContainer(context: Context) : DefaultAppContainer(context) {
override val euiccChannelManager: IEuiccChannelManager by lazy {
PrivilegedEuiccChannelManager(context)
}
override val uiComponentFactory by lazy {
PrivilegedUiComponentFactory()
}
}

View file

@ -0,0 +1,10 @@
package im.angry.openeuicc.di
import im.angry.openeuicc.core.EuiccChannel
import im.angry.openeuicc.ui.EuiccManagementFragment
import im.angry.openeuicc.ui.PrivilegedEuiccManagementFragment
class PrivilegedUiComponentFactory : DefaultUiComponentFactory() {
override fun createEuiccManagementFragment(channel: EuiccChannel): EuiccManagementFragment =
PrivilegedEuiccManagementFragment.newInstance(channel.slotId, channel.portId)
}

View file

@ -4,7 +4,6 @@ import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import im.angry.openeuicc.R
import im.angry.openeuicc.core.EuiccChannel
import im.angry.openeuicc.util.*
class PrivilegedMainActivity : MainActivity() {
@ -37,7 +36,4 @@ class PrivilegedMainActivity : MainActivity() {
}
else -> super.onOptionsItemSelected(item)
}
override fun createEuiccManagementFragment(channel: EuiccChannel): EuiccManagementFragment =
PrivilegedEuiccManagementFragment.newInstance(channel.slotId, channel.portId)
}