Skip to contents

Create a conditional reactive that updates only when conditions are met

Usage

payload_conditional(
  path = "/ingress",
  session,
  condition_func,
  intervalMillis = 300
)

Arguments

path

The URL path used in payload_ui() or payload_methods() (default "/ingress")

session

The Shiny session object

condition_func

Function that returns TRUE when reactive should update

intervalMillis

Polling interval in milliseconds (default 300)

Value

A reactive expression that updates only when condition is met

Examples

if (interactive()) {
  server <- function(input, output, session) {
    # Only update when temperature exceeds threshold
    high_temp_alert <- payload_conditional("/api/sensors", session,
      condition_func = function(payload) {
        !is.null(payload$payload$temperature) &&
        payload$payload$temperature > 30
      }
    )

    # Only update during business hours
    business_hours_data <- payload_conditional("/api/data", session,
      condition_func = function(payload) {
        hour <- as.numeric(format(Sys.time(), "%H"))
        hour >= 9 && hour <= 17
      }
    )
  }
}