###What if we could write the optimistic updates on the server side, using Elixir and Drab.Element-like DSL?
optimistic_before :save_data do
set_prop "#name", value: "...processing...", disabled: true
end
def save_data(socket, _sender) do
set_prop socket, "#name", value: Database.get_name()
end
optimistic_after :save_data do
set_prop "#name", disabled: false
end
optimistic_before
must compile to javascript, which is not so complicated, as set_prop/2
is simply translated to JS "Drab.set_prop(#{encode_js(selector)}, #{encode_js(properties)})"
. This JS would be sent to the browser on connect, and register to run before and after the event.