@startuml
skinparam BackgroundColor F0F0F0
participant "Battery Charger" as bc
participant "Worker Event" as we
participant "Event Manager" as evm
participant "System Manager" as sm
participant "Current application" as ca
participant "TopBar" as tb
participant "Battery Widget" as bw
participant "Event Store\nBattery" as es
bc -> we : Interrupt
we -> bc : Store status to EventStore
bc -> es : modify()
we -> evm : BatteryStatusChangeMessage
group If Discharging
evm -> sm : BatteryStatusChangeMessage
sm -> sm : If State::ShutdownReady:\n state = State:Shutdown
end
evm -> ca : BatteryStatusChangeMessage
ca -> tb : updateBattery()
tb <-> es : get()
tb -> bw : show(batteryContext)
@enduml