Class: Rooibos::Command::Wait
- Inherits:
-
Object
- Object
- Rooibos::Command::Wait
- Includes:
- Custom
- Defined in:
- lib/rooibos/command/wait.rb
Overview
A one-shot timer command.
Applications need timed events. Notification auto-dismissal, debounced search, and animation frames all depend on delays. Building timers from scratch with threads is error-prone. Cancellation is tricky.
This command waits, then sends a message. It responds to cancellation cooperatively. When canceled, it sends Message::Canceled so you know the timer stopped.
Use it for delayed actions, debounced inputs, or animation loops.
Prefer the Command.wait or Command.tick factory methods for convenience. Both are aliases for the same behavior.
Example: Notification dismissal
def update(msg, model)
case msg
in :save_clicked
[model.with(notification: "Saved!"), Command.wait(3.0, :dismiss)]
in :dismiss
[model.with(notification: nil), nil]
in Message::Canceled
[model.with(notification: nil), nil] # User navigated away
end
end
Example: Animation loop
def update(msg, model)
case msg
in :start_animation
[model.with(frame: 0), Command.tick(0.1, :animate)]
in :animate
frame = (model.frame + 1) % 10
[model.with(frame:), Command.tick(0.1, :animate)]
end
end
Method Summary
Methods included from Custom
#deconstruct_keys, #rooibos_cancellation_grace_period, #rooibos_command?