Skip to content

Commit 61a0723

Browse files
authored
Fix variant roll changing when fetching assets (#704)
1 parent c760ca4 commit 61a0723

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

lib/beacon/plug.ex

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,32 @@ defmodule Beacon.Plug do
1717
"""
1818
@behaviour Plug
1919

20+
@private_routes [
21+
"__beacon_check__",
22+
"__beacon_assets__",
23+
"__beacon_media__"
24+
]
25+
2026
@impl Plug
2127
def init(_opts), do: []
2228

2329
@impl Plug
24-
def call(conn, _opts), do: Plug.Conn.put_session(conn, :beacon_variant_roll, Enum.random(1..100))
30+
def call(conn, _opts) do
31+
if Enum.any?(@private_routes, &(&1 in conn.path_info)) do
32+
conn
33+
else
34+
put_roll(conn)
35+
end
36+
end
37+
38+
defp put_roll(conn) do
39+
path_list = conn.path_params["path"]
40+
41+
with %{private: %{phoenix_live_view: {_, _, %{extra: %{session: %{"beacon_site" => site}}}}}} <- conn,
42+
{_, _} <- Beacon.RouterServer.lookup_path(site, path_list, 1) do
43+
Plug.Conn.put_session(conn, "beacon_variant_roll", Enum.random(1..100))
44+
else
45+
_ -> conn
46+
end
47+
end
2548
end

0 commit comments

Comments
 (0)