Keep update values updated from model
This commit is contained in:
parent
3695d4874f
commit
bea99ea701
1 changed files with 16 additions and 26 deletions
|
@ -41,7 +41,7 @@ pub type Model {
|
|||
|
||||
pub type Msg {
|
||||
DeviceLoadResult(Result(Device, ApiError))
|
||||
StartUpdate(Device)
|
||||
StartUpdate
|
||||
UpdateResults(List(UpdateResult))
|
||||
}
|
||||
|
||||
|
@ -67,15 +67,21 @@ pub fn init(
|
|||
|
||||
pub fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) {
|
||||
case msg {
|
||||
DeviceLoadResult(Ok(device)) -> #(
|
||||
Model(..model, loading: False, device: Some(device)),
|
||||
DeviceLoadResult(Ok(device)) -> {
|
||||
let model = Model(..model, loading: False, device: Some(device))
|
||||
#(model, update_state(model.config, model.user, device))
|
||||
}
|
||||
|
||||
StartUpdate -> {
|
||||
case model.device {
|
||||
Some(device) -> #(
|
||||
Model(..model, loading: True),
|
||||
update_state(model.config, model.user, device),
|
||||
)
|
||||
|
||||
StartUpdate(device) -> #(
|
||||
Model(..model, loading: True, device: Some(device)),
|
||||
effect.none(),
|
||||
)
|
||||
None -> #(model, effect.none())
|
||||
}
|
||||
}
|
||||
|
||||
UpdateResults(results) -> #(
|
||||
list.fold(
|
||||
|
@ -891,24 +897,8 @@ fn load_device(config: Config, user: User, installation: InstallationInfo) {
|
|||
|
||||
fn update_state(config: Config, user: User, device: Device) {
|
||||
use dispatch <- effect.from()
|
||||
dispatch(StartUpdate(device))
|
||||
do_update_state(dispatch, config, user, device)
|
||||
Nil
|
||||
}
|
||||
|
||||
fn do_update_state(
|
||||
dispatch: fn(Msg) -> Nil,
|
||||
config: Config,
|
||||
user: User,
|
||||
device: Device,
|
||||
) {
|
||||
timers.set_timeout(
|
||||
fn() {
|
||||
dispatch(StartUpdate(device))
|
||||
do_update_state(dispatch, config, user, device)
|
||||
},
|
||||
config.api_refresh,
|
||||
)
|
||||
timers.set_timeout(fn() { dispatch(StartUpdate) }, config.api_refresh)
|
||||
|
||||
[
|
||||
device_api.status(config, user, device)
|
||||
|
|
Loading…
Reference in a new issue