When some buttons are clicked they will change the state of the system, but other UI components will not detect that change correctly. So those triggers are put on hold. This will remove the hold after those UI components have updated.
Examples
# Within shiny both session and input variables will exist,
# this creates examples here for testing purposes:
sess_res = DW_test_mksession(session=list())
#> → ASM: including file
#> → ASM: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → ASM: dest: file.path("config","report.docx")
#> → ASM: including file
#> → ASM: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → ASM: dest: file.path("config","report.pptx")
#> → ASM: including file
#> → ASM: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → ASM: dest: file.path("config","report.yaml")
#> → ASM: State initialized
#> → ASM: setting word placeholders:
#> → ASM: -> setting docx ph: HEADERLEFT = left header
#> → ASM: -> setting docx ph: HEADERRIGHT = right header
#> → ASM: -> setting docx ph: FOOTERLEFT = left footer
#> → ASM: module isgood: TRUE
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → UD: dest: file.path("config","report.docx")
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → UD: dest: file.path("config","report.pptx")
#> → UD: including file
#> → UD: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → UD: dest: file.path("config","report.yaml")
#> → UD: State initialized
#> → UD: module checksum updated:897d952fecbc804999396a96f9df4b20
#> → UD: module isgood: TRUE
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.docx")
#> → DW: dest: file.path("config","report.docx")
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.pptx")
#> → DW: dest: file.path("config","report.pptx")
#> → DW: including file
#> → DW: source: file.path(system.file(package="onbrand"), "templates", "report.yaml")
#> → DW: dest: file.path("config","report.yaml")
#> → DW: State initialized
#> → DW: module checksum updated:5b0f0b05ee3ac7336a74c564bb6efdad
#> → DW: loading data view idx: 1
#> → DW: setting name: Observations
#> → DW: module checksum updated:1ac3e0afcc601f848943f92b854b3830
#> → DW: -> filter
#> → DW: module checksum updated:67aff6e926eba73b3ecb361d26624844
#> → DW: -> filter
#> → DW: module checksum updated:0234f6d458ef7487a3b2e991b2d0957b
#> → DW: -> mutate
#> → DW: module checksum updated:37d0958f042076b974fdd3f894157822
#> → DW: loading data view idx: 2
#> → DW: setting name: PK 3mg SD IV
#> → DW: module checksum updated:4e7ca05728d66df3adfcf87387f9543a
#> → DW: -> filter
#> → DW: module checksum updated:2d95bc56262f46b7f135dd33fc4722b3
#> → DW: -> filter
#> → DW: module checksum updated:b8a30837145926d2d9cc6f788c10b7ed
#> → DW: -> filter
#> → DW: module checksum updated:24b554ee8736ebc84979c896ac2e93c3
#> → DW: -> filter
#> → DW: module checksum updated:daad88263faf7cbf90871ed00a0dd275
#> → DW: loading data view idx: 3
#> → DW: setting name: PK 3mg SD IV (NCA)
#> → DW: module checksum updated:a7b3ea35cdba272682716aa4619d3983
#> → DW: -> filter
#> → DW: module checksum updated:e8d2f77c0bd731995d845ee8be623e22
#> → DW: -> filter
#> → DW: module checksum updated:24cc7b591ca756a0abf560fb5295e04d
#> → DW: -> filter
#> → DW: module checksum updated:f79ef26bdb4dac420c24650b9e96f721
#> → DW: loading data view idx: 4
#> → DW: setting name: PKPD 3mg SD IV (NCA)
#> → DW: module checksum updated:c737e8b3a28ba600a83ddf58a969c90a
#> → DW: -> filter
#> → DW: module checksum updated:4c0d054f8ec47ae97fd1c650d8ddad55
#> → DW: -> filter
#> → DW: module checksum updated:1e3d65ec1bd6ee5850d67bd2250e3223
#> → DW: -> filter
#> → DW: module checksum updated:1e3d65ec1bd6ee5850d67bd2250e3223
#> → DW: module isgood: TRUE
session = sess_res$session
input = sess_res$input
# For this example we also need a state variable
state = sess_res$state
# This sets a hold on the specified inputID. This is normally done in
# your XX_fetch_state() function.
state = set_hold(state, inputId = "select_dw_views")
# This will fetch the hold status of the specified inputID.
fetch_hold(state, inputId = "select_dw_views")
#> [1] TRUE
# This will remove the hold and is normally done in one of the UI outputs
# with a priority set to ensure it happens after the rest of the UI has
# refreshed.
state = remove_hold(state, session, inputId = "select_dw_views")