From cb95a855991f0f7073a05a74357675cfea10b647 Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Sun, 17 Apr 2022 16:09:45 -0700 Subject: [PATCH 1/3] Allow for testing environments where session keys get turned into strings --- lib/phoenix_live_session.ex | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/phoenix_live_session.ex b/lib/phoenix_live_session.ex index 10f5214..1576d3b 100644 --- a/lib/phoenix_live_session.ex +++ b/lib/phoenix_live_session.ex @@ -180,8 +180,8 @@ defmodule PhoenixLiveSession do defp put_meta(data, sid, opts) do data - |> Map.put(:__sid__, sid) - |> Map.put(:__opts__, opts) + |> Map.put("__sid__", sid) + |> Map.put("__opts__", opts) end defp maybe_clean(opts) do @@ -225,19 +225,17 @@ defmodule PhoenixLiveSession do """ @spec maybe_subscribe(Phoenix.LiveView.Socket.t(), Plug.Session.Store.session()) :: Phoenix.LiveView.Socket.t() - def maybe_subscribe(socket, session) do + def maybe_subscribe(socket, %{"__sid__" => sid, "__opts__" => opts}) do if LiveView.connected?(socket) do - sid = Map.fetch!(session, :__sid__) - opts = Map.fetch!(session, :__opts__) pub_sub = Keyword.fetch!(opts, :pub_sub) - channel = "live_session:#{sid}" - PubSub.subscribe(pub_sub, channel) + PubSub.subscribe(pub_sub, "live_session:#{sid}") put_in(socket.private[:live_session], id: sid, opts: opts) else socket end end + def maybe_subscribe(socket, _), do: socket @doc """ This function can be called in two ways:any() @@ -263,8 +261,8 @@ defmodule PhoenixLiveSession do socket end - @spec put_session(%{__sid__: String.t(), __opts__: list()}, String.t() | atom(), term()) :: %{} - def put_session(%{__sid__: sid, __opts__: opts}, key, value) do + @spec put_session(%{"__sid__" => String.t(), "__opts__" => list()}, String.t() | atom(), term()) :: %{} + def put_session(%{"__sid__" => sid, "__opts__" => opts}, key, value) do put_in(sid, to_string(key), value, opts) get(nil, sid, opts) From 245c0f7c7f6e491205e3794f696e0d69939d6f0d Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Sun, 17 Apr 2022 16:35:24 -0700 Subject: [PATCH 2/3] Fixing type annotation --- lib/phoenix_live_session.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/phoenix_live_session.ex b/lib/phoenix_live_session.ex index 1576d3b..4f4ad55 100644 --- a/lib/phoenix_live_session.ex +++ b/lib/phoenix_live_session.ex @@ -261,7 +261,7 @@ defmodule PhoenixLiveSession do socket end - @spec put_session(%{"__sid__" => String.t(), "__opts__" => list()}, String.t() | atom(), term()) :: %{} + @spec put_session(map(), String.t() | atom(), term()) :: %{} def put_session(%{"__sid__" => sid, "__opts__" => opts}, key, value) do put_in(sid, to_string(key), value, opts) From bdf468cedd45a1722add409fa7f0f93d2f06dcc4 Mon Sep 17 00:00:00 2001 From: Kurtis Rainbolt-Greene Date: Sun, 17 Apr 2022 16:35:33 -0700 Subject: [PATCH 3/3] Running the formatter --- lib/phoenix_live_session.ex | 3 ++- mix.exs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/phoenix_live_session.ex b/lib/phoenix_live_session.ex index 4f4ad55..3f47db8 100644 --- a/lib/phoenix_live_session.ex +++ b/lib/phoenix_live_session.ex @@ -235,6 +235,7 @@ defmodule PhoenixLiveSession do socket end end + def maybe_subscribe(socket, _), do: socket @doc """ @@ -262,7 +263,7 @@ defmodule PhoenixLiveSession do end @spec put_session(map(), String.t() | atom(), term()) :: %{} - def put_session(%{"__sid__" => sid, "__opts__" => opts}, key, value) do + def put_session(%{"__sid__" => sid, "__opts__" => opts}, key, value) do put_in(sid, to_string(key), value, opts) get(nil, sid, opts) diff --git a/mix.exs b/mix.exs index b337ff5..39eaceb 100644 --- a/mix.exs +++ b/mix.exs @@ -28,7 +28,7 @@ defmodule PhoenixLiveSession.MixProject do %{ description: "In-memory live sessions for LiveViews and Phoenix controllers.", licenses: ["Apache-2.0"], - links: %{"GitHub" => "https://github.com/pentacent/phoenix_live_session"}, + links: %{"GitHub" => "https://github.com/pentacent/phoenix_live_session"} } end