remove dependencies from setup wizard

This commit is contained in:
Milos Kozak 2022-11-18 23:22:00 +01:00
parent dd9518b73b
commit 72505b6093
11 changed files with 60 additions and 21 deletions

View file

@ -0,0 +1,9 @@
package info.nightscout.rx.events
import android.content.Context
// Pass RL status to setup wizard
class EventSWRLStatus(val status: String) : EventStatus() {
override fun getStatus(context: Context): String = status
}

View file

@ -0,0 +1,9 @@
package info.nightscout.rx.events
import android.content.Context
// Pass pump status to setup wizard
class EventSWSyncStatus(val status: String) : EventStatus() {
override fun getStatus(context: Context): String = status
}

View file

@ -9,7 +9,6 @@ import androidx.appcompat.app.AppCompatActivity
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.ProfileSealed
import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange
import info.nightscout.androidaps.setupwizard.elements.SWBreak
import info.nightscout.androidaps.setupwizard.elements.SWButton
import info.nightscout.androidaps.setupwizard.elements.SWEditEncryptedPassword
@ -41,12 +40,10 @@ import info.nightscout.interfaces.pump.OmnipodEros
import info.nightscout.interfaces.queue.CommandQueue
import info.nightscout.interfaces.ui.ActivityNames
import info.nightscout.interfaces.utils.HardLimits
import info.nightscout.plugins.constraints.objectives.ObjectivesFragment
import info.nightscout.plugins.constraints.objectives.ObjectivesPlugin
import info.nightscout.plugins.profile.ProfilePlugin
import info.nightscout.plugins.sync.nsShared.events.EventNSClientStatus
import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventPumpStatusChanged
import info.nightscout.rx.events.EventSWRLStatus
import info.nightscout.rx.events.EventSWSyncStatus
import info.nightscout.rx.events.EventSWUpdate
import info.nightscout.shared.interfaces.ResourceHelper
import info.nightscout.shared.sharedPreferences.SP
@ -61,10 +58,8 @@ class SWDefinition @Inject constructor(
private val rh: ResourceHelper,
private val sp: SP,
private val profileFunction: ProfileFunction,
private val profilePlugin: ProfilePlugin,
private val activePlugin: ActivePlugin,
private val commandQueue: CommandQueue,
private val objectivesPlugin: ObjectivesPlugin,
private val configBuilder: ConfigBuilder,
private val loop: Loop,
private val importExportPrefs: ImportExportPrefs,
@ -224,7 +219,7 @@ class SWDefinition @Inject constructor(
)
.add(SWBreak(injector))
.add(
SWEventListener(injector, EventNSClientStatus::class.java)
SWEventListener(injector, EventSWSyncStatus::class.java)
.label(R.string.status)
.initialStatus(activePlugin.firstActiveSync?.status ?: "")
)
@ -332,10 +327,10 @@ class SWDefinition @Inject constructor(
//.add(ProfileFragment())
)
.validator {
profilePlugin.profile?.getDefaultProfile()?.let { ProfileSealed.Pure(it).isValid("StartupWizard", activePlugin.activePump, config, rh, rxBus, hardLimits, false).isValid }
activePlugin.activeProfileSource.profile?.getDefaultProfile()?.let { ProfileSealed.Pure(it).isValid("StartupWizard", activePlugin.activePump, config, rh, rxBus, hardLimits, false).isValid }
?: false
}
.visibility { profilePlugin.isEnabled() }
.visibility { (activePlugin.activeProfileSource as PluginBase).isEnabled() }
private val screenProfileSwitch get() = SWScreen(injector, R.string.careportal_profileswitch)
.skippable(false)
@ -368,7 +363,7 @@ class SWDefinition @Inject constructor(
activePump is OmnipodEros && !activePump.isRileyLinkReady()
})
.add( // Omnipod Eros only
SWEventListener(injector, EventRileyLinkDeviceStatusChange::class.java)
SWEventListener(injector, EventSWRLStatus::class.java)
.label(R.string.setupwizard_pump_riley_link_status)
.visibility { activePlugin.activePump is OmnipodEros })
.add(SWButton(injector)
@ -466,10 +461,11 @@ class SWDefinition @Inject constructor(
.add(SWBreak(injector))
.add(
SWFragment(injector, this)
.add(ObjectivesFragment())
.add(activity.supportFragmentManager.fragmentFactory.instantiate(ClassLoader.getSystemClassLoader(), (activePlugin.activeObjectives as PluginBase).pluginDescription.fragmentClass!!))
//.add(ObjectivesFragment())
)
.validator { objectivesPlugin.objectives[Objectives.FIRST_OBJECTIVE].isStarted }
.visibility { !objectivesPlugin.objectives[Objectives.FIRST_OBJECTIVE].isStarted && config.APS }
.validator { activePlugin.activeObjectives?.isStarted(Objectives.FIRST_OBJECTIVE) ?: false}
.visibility { config.APS && !(activePlugin.activeObjectives?.isStarted(Objectives.FIRST_OBJECTIVE) ?: false) }
private fun swDefinitionFull() = // List all the screens here
add(screenSetupWizard)

View file

@ -10,16 +10,16 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
import info.nightscout.androidaps.databinding.ActivitySetupwizardBinding
import info.nightscout.androidaps.logging.UserEntryLogger
import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange
import info.nightscout.androidaps.setupwizard.elements.SWItem
import info.nightscout.core.fabric.FabricPrivacy
import info.nightscout.core.ui.dialogs.OKDialog
import info.nightscout.interfaces.locale.LocaleHelper.update
import info.nightscout.plugins.sync.nsShared.events.EventNSClientStatus
import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.events.EventProfileStoreChanged
import info.nightscout.rx.events.EventProfileSwitchChanged
import info.nightscout.rx.events.EventPumpStatusChanged
import info.nightscout.rx.events.EventSWRLStatus
import info.nightscout.rx.events.EventSWSyncStatus
import info.nightscout.rx.events.EventSWUpdate
import info.nightscout.shared.sharedPreferences.SP
import io.reactivex.rxjava3.disposables.CompositeDisposable
@ -80,11 +80,11 @@ class SetupWizardActivity : NoSplashAppCompatActivity() {
.observeOn(aapsSchedulers.main)
.subscribe({ updateButtons() }, fabricPrivacy::logException)
disposable += rxBus
.toObservable(EventRileyLinkDeviceStatusChange::class.java)
.toObservable(EventSWRLStatus::class.java)
.observeOn(aapsSchedulers.main)
.subscribe({ updateButtons() }, fabricPrivacy::logException)
disposable += rxBus
.toObservable(EventNSClientStatus::class.java)
.toObservable(EventSWSyncStatus::class.java)
.observeOn(aapsSchedulers.main)
.subscribe({ updateButtons() }, fabricPrivacy::logException)
disposable += rxBus

View file

@ -16,4 +16,5 @@ interface Objectives {
}
fun isAccomplished(index: Int): Boolean
fun isStarted(index: Int): Boolean
}

View file

@ -149,5 +149,6 @@ class ObjectivesPlugin @Inject constructor(
return value
}
override fun isAccomplished(index: Int) = objectives[Objectives.MAXIOB_OBJECTIVE].isAccomplished
override fun isAccomplished(index: Int) = objectives[index].isAccomplished
override fun isStarted(index: Int): Boolean = objectives[index].isStarted
}

View file

@ -40,6 +40,7 @@ import info.nightscout.rx.events.EventAppExit
import info.nightscout.rx.events.EventChargingState
import info.nightscout.rx.events.EventNetworkChange
import info.nightscout.rx.events.EventPreferenceChange
import info.nightscout.rx.events.EventSWSyncStatus
import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag
import info.nightscout.shared.interfaces.ResourceHelper
@ -92,10 +93,12 @@ class NSClientPlugin @Inject constructor(
disposable += rxBus
.toObservable(EventNSClientStatus::class.java)
.observeOn(aapsSchedulers.io)
.subscribe({ event: EventNSClientStatus ->
.subscribe({ event ->
if (event.version == NsClient.Version.V1) {
status = event.getStatus(context)
rxBus.send(EventNSClientUpdateGUI())
// Pass to setup wizard
rxBus.send(EventSWSyncStatus(event.getStatus(context)))
}
}, fabricPrivacy::logException)
disposable += rxBus

View file

@ -42,6 +42,7 @@ import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventChargingState
import info.nightscout.rx.events.EventNetworkChange
import info.nightscout.rx.events.EventPreferenceChange
import info.nightscout.rx.events.EventSWSyncStatus
import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag
import info.nightscout.sdk.NSAndroidClientImpl
@ -149,6 +150,8 @@ class NSClientV3Plugin @Inject constructor(
if (event.version == NsClient.Version.V3) {
status = event.getStatus(context)
rxBus.send(EventNSClientUpdateGUI())
// Pass to setup wizard
rxBus.send(EventSWSyncStatus(event.getStatus(context)))
}
}, fabricPrivacy::logException)
disposable += rxBus

View file

@ -11,6 +11,7 @@ import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotifi
import info.nightscout.androidaps.plugins.pump.common.PumpPluginAbstract
import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus
import info.nightscout.androidaps.plugins.pump.common.defs.PumpDriverState
import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpInfo
@ -67,6 +68,7 @@ import info.nightscout.rx.AapsSchedulers
import info.nightscout.rx.bus.RxBus
import info.nightscout.rx.events.EventRefreshButtonState
import info.nightscout.rx.events.EventRefreshOverview
import info.nightscout.rx.events.EventSWRLStatus
import info.nightscout.rx.logging.AAPSLogger
import info.nightscout.rx.logging.LTag
import info.nightscout.shared.interfaces.ResourceHelper
@ -157,6 +159,13 @@ class MedtronicPumpPlugin @Inject constructor(
}.start()
}
}
// Pass only to setup wizard
disposable.add(
rxBus
.toObservable(EventRileyLinkDeviceStatusChange::class.java)
.observeOn(aapsSchedulers.io)
.subscribe({ event: EventRileyLinkDeviceStatusChange -> rxBus.send(EventSWRLStatus(event.getStatus(context))) }, fabricPrivacy::logException)
)
super.onStart()
}

View file

@ -108,6 +108,7 @@ import info.nightscout.rx.events.EventAppExit;
import info.nightscout.rx.events.EventAppInitialized;
import info.nightscout.rx.events.EventPreferenceChange;
import info.nightscout.rx.events.EventRefreshOverview;
import info.nightscout.rx.events.EventSWRLStatus;
import info.nightscout.rx.logging.AAPSLogger;
import info.nightscout.rx.logging.LTag;
import info.nightscout.shared.interfaces.ResourceHelper;
@ -326,6 +327,13 @@ public class OmnipodErosPumpPlugin extends PumpPluginBase implements Pump, Riley
.observeOn(aapsSchedulers.getIo())
.subscribe(event -> handlePodFaultEvent(), fabricPrivacy::logException)
);
// Pass only to setup wizard
disposable.add(rxBus
.toObservable(EventRileyLinkDeviceStatusChange.class)
.observeOn(aapsSchedulers.getIo())
.subscribe(event -> rxBus.send(new EventSWRLStatus(event.getStatus(context))),
fabricPrivacy::logException)
);
disposable.add(rxBus
.toObservable(EventPreferenceChange.class)
.observeOn(aapsSchedulers.getIo())

View file

@ -66,7 +66,7 @@ abstract class PumpPluginAbstract protected constructor(
var pumpSyncStorage: PumpSyncStorage
) : PumpPluginBase(pluginDescription, injector, aapsLogger, rh, commandQueue), Pump, Constraints, info.nightscout.androidaps.plugins.pump.common.sync.PumpSyncEntriesCreator {
private val disposable = CompositeDisposable()
protected val disposable = CompositeDisposable()
// Pump capabilities
final override var pumpDescription = PumpDescription()