Я создаю клон WhatsApp и не могу разобраться в некоторых вещах с Presence.
У меня два канала:
channel "chats:*", Typi.ChatChannel
channel "users:*", Typi.UserChannel
Пользователь всегда подключен к users:...
каналу, если он в приложении, и при подключении я начинаю отслеживать его присутствие:
def join("users:" <> 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
Когда пользователь присоединяется к чату, я добавляю chat_id
в мета:
def join("chats:" <> 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
Когда пользователь покидает чат, я хочу удалить метаинформацию, но сохранить присутствие. Как я могу это сделать?
Спасибо