title: Phoenix Presence track user across multiple channels with alternating meta
body: <p>I am building a whatsapp clone and having trouble figuring out some stuff with Presence.</p>
  
  <p>I have two channel: </p>
  
  <pre><code>  channel "chats:*", Typi.ChatChannel
    channel "users:*", Typi.UserChannel
  </code></pre>
  
  <p>The user is always connected to <code>users:...</code> channel, if he is in the app, and on join I start tracking his presence:</p>
  
  <pre><code>  def join("users:" &lt;&gt; user_id, _payload, socket) do
      send self(), :after_join
      {:ok, socket}
    end
  
    def handle_info(:after_join, socket) do
      Presence.track(socket, socket.assigns.current_user.id, %{})
      {:noreply, socket}
    end
  </code></pre>
  
  <p>When user joins some chat I add <code>chat_id</code> to meta:</p>
  
  <pre><code>  def join("chats:" &lt;&gt; chat_id, _payload, socket) do
      send self(), :after_join
      {:ok, assign(socket, :current_chat, chat)}
    end
  
    def handle_info(:after_join, socket) do
      Presence.track(socket, socket.assigns.current_user.id, %{
        chat_id: socket.assigns.current_chat.id
      })
      {:noreply, socket}
    end
  </code></pre>
  
  <p>When the user leaves the chat I want to delete meta information but keep the presence. How can I do that?</p>
  
  <p>Thanks</p>