Is it possible to navigate to a LiveView in init
(i.e. without clicking a link)? I am hoping to preserve my ash_authentication_phoenix
sign_in LiveView without recreating it with Hologram.
Not yet, but this will be possible with the planned middleware layer that’s coming to Hologram.
In the meantime, if you need this functionality now, there’s a workaround… though I should warn you it’s the kind of hack that makes you want to take a shower afterwards
The idea is:
- In your
init/3
, set some flag in the state (e.g.,redirect_to_live_view: true
) - Use that flag in your layout template to either hide the page content or show a loading indicator
- Add
put_action(:execute_js_redirect, ...)
in your pageinit/3
function - Implement that action to call
Hologram.JS.exec/1
with your JavaScript redirect code
Something like:
def action(:execute_js_redirect, _params, component) do
Hologram.JS.exec("window.location.href = '/your-liveview-path'")
component
end
It’s not pretty, but it should let you preserve your ash_authentication_phoenix
auth behaviour for now until proper support lands.
Hope this helps!
Ugh!..
The Hologram no-JS promise broken! T_T
Just kidding. This is really not that bad as a temporary fix! I appreciate the help–I was really much more concerned that I would have to figure out the auth page setup…
Looking forward to the future middleware Thanks.