grych/drab

Cohabitation with LiveView

guidotripaldi opened this issue · 0 comments

Since LiveView is now public, probably the developers will try to use both libraries in the same app, but at this time it is not possible because Drab.Client.generate_drab_js/3 rises when it tries to get the controller module for a LV page, as :phoenix_controller is not present in the conn of a LiveView page.

Checking for the presence of :live_view_module in the conn parameters reveals if the page is suited or not for generating the drab js, for example:

  defp generate_drab_js(conn, connect?, assigns) do

    if !conn.assigns[:live_view_module] do
      controller = Phoenix.Controller.controller_module(conn)
      ...

This way both libraries can cohabit at the same time in the same app, using Drab only for pages based on Controllers/.eex templates (but not for LiveView pages because its js code will not be injected).

Edit:
The PR #192 solve this problem with a more general solution than the one initially proposed above