Handling different events with pattern matching.
def handle_info(%{
event: "presence_diff",
topic: "user-activity"
}, socket) do
send_update(
UserActivityLive,
id: socket.assigns.user_activity_component_id)
{:noreply, socket}
end
def handle_info(%{
event: "presence_diff",
topic: "survey-activity"
}, socket) do
send_update(
SurveyActivityLive,
id: socket.assigns.survey_activity_component_id)
{:noreply, socket}
end
def handle_info(_event, socket) do
{:noreply, socket}
end
Or handling the event with a case.
def handle_info(%{event: "presence_diff", topic: topic} = event, socket) do
case topic do
"user-activity" ->
send_update(
UserActivityLive,
id: socket.assigns.user_activity_component_id
)
"survey-activity" ->
send_update(
SurveyActivityLive,
id: socket.assigns.survey_activity_component_id
)
_ ->
# Handle any other topics or do nothing
:noop
end
{:noreply, socket}
end