From c22e104a244dd04378990bc880a55c64dad9c937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Berenice=20Medel=20S=C3=A1nchez?= Date: Thu, 9 Dec 2021 11:56:02 -0600 Subject: [PATCH] change key to string when tracking and untrackin presences --- .../presence/phoenix_presence_client.ex | 19 ++++++++++++------- lib/live_beats_web/live/profile_live.ex | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/live_beats/presence/phoenix_presence_client.ex b/lib/live_beats/presence/phoenix_presence_client.ex index 7912b9a..c35a19e 100644 --- a/lib/live_beats/presence/phoenix_presence_client.ex +++ b/lib/live_beats/presence/phoenix_presence_client.ex @@ -15,11 +15,11 @@ defmodule Phoenix.Presence.Client do end def track(topic, key, meta) do - GenServer.call(PresenceClient, {:track, self(), topic, key, meta}) + GenServer.call(PresenceClient, {:track, self(), topic, to_string(key), meta}) end def untrack(topic, key) do - GenServer.call(PresenceClient, {:untrack, self(), topic, key}) + GenServer.call(PresenceClient, {:untrack, self(), to_string(topic), key}) end def init(opts) do @@ -41,6 +41,11 @@ defmodule Phoenix.Presence.Client do {:noreply, merge_diff(state, topic, diff)} end + def handle_call(:state, _from, state) do + IO.inspect(state.topics, label: :state_topics) + {:reply, :ok, state} + end + def handle_call({:track, pid, topic, key, meta}, _from, state) do {:reply, :ok, track_pid(state, pid, topic, key, meta)} end @@ -105,16 +110,16 @@ defmodule Phoenix.Presence.Client do |> Map.keys() |> Enum.count() - leaved_key = Map.keys(leaves) |> hd - left_meta = leaves[leaved_key].metas |> hd + left_key = Map.keys(leaves) |> hd + left_meta = leaves[left_key].metas |> hd - state.client.handle_leave(topic, leaved_key, left_meta, state) + state.client.handle_leave(topic, left_key, left_meta, state) # if no more presences for given topic, unsubscribe if presences_count == 0 do Phoenix.PubSub.unsubscribe(state.pubsub, topic) - update_topics_state(:remove_topic, state, topic, leaved_key) + update_topics_state(:remove_topic, state, topic, left_key) else - update_topics_state(:remove_presence, state, topic, leaved_key) + update_topics_state(:remove_presence, state, topic, left_key) end end diff --git a/lib/live_beats_web/live/profile_live.ex b/lib/live_beats_web/live/profile_live.ex index b9ff901..affaa3c 100644 --- a/lib/live_beats_web/live/profile_live.ex +++ b/lib/live_beats_web/live/profile_live.ex @@ -159,7 +159,7 @@ defmodule LiveBeatsWeb.ProfileLive do end def handle_info({LiveBeats.PresenceClient, %{user_left: user_id}}, socket) do - updated_presences = socket.assign.presences |> Enum.reject(fn user -> user.id == user_id end) + updated_presences = socket.assigns.presences |> Enum.reject(fn user -> user.id == user_id end) {:noreply, assign(socket, :presences, updated_presences)} end