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 {
|
pub type Msg {
|
||||||
DeviceLoadResult(Result(Device, ApiError))
|
DeviceLoadResult(Result(Device, ApiError))
|
||||||
StartUpdate(Device)
|
StartUpdate
|
||||||
UpdateResults(List(UpdateResult))
|
UpdateResults(List(UpdateResult))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,15 +67,21 @@ pub fn init(
|
||||||
|
|
||||||
pub fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) {
|
pub fn update(model: Model, msg: Msg) -> #(Model, Effect(Msg)) {
|
||||||
case msg {
|
case msg {
|
||||||
DeviceLoadResult(Ok(device)) -> #(
|
DeviceLoadResult(Ok(device)) -> {
|
||||||
Model(..model, loading: False, device: Some(device)),
|
let model = Model(..model, loading: False, device: Some(device))
|
||||||
update_state(model.config, model.user, device),
|
#(model, update_state(model.config, model.user, device))
|
||||||
)
|
}
|
||||||
|
|
||||||
StartUpdate(device) -> #(
|
StartUpdate -> {
|
||||||
Model(..model, loading: True, device: Some(device)),
|
case model.device {
|
||||||
effect.none(),
|
Some(device) -> #(
|
||||||
)
|
Model(..model, loading: True),
|
||||||
|
update_state(model.config, model.user, device),
|
||||||
|
)
|
||||||
|
|
||||||
|
None -> #(model, effect.none())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UpdateResults(results) -> #(
|
UpdateResults(results) -> #(
|
||||||
list.fold(
|
list.fold(
|
||||||
|
@ -891,24 +897,8 @@ fn load_device(config: Config, user: User, installation: InstallationInfo) {
|
||||||
|
|
||||||
fn update_state(config: Config, user: User, device: Device) {
|
fn update_state(config: Config, user: User, device: Device) {
|
||||||
use dispatch <- effect.from()
|
use dispatch <- effect.from()
|
||||||
dispatch(StartUpdate(device))
|
|
||||||
do_update_state(dispatch, config, user, device)
|
|
||||||
Nil
|
|
||||||
}
|
|
||||||
|
|
||||||
fn do_update_state(
|
timers.set_timeout(fn() { dispatch(StartUpdate) }, config.api_refresh)
|
||||||
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,
|
|
||||||
)
|
|
||||||
|
|
||||||
[
|
[
|
||||||
device_api.status(config, user, device)
|
device_api.status(config, user, device)
|
||||||
|
|
Loading…
Reference in a new issue