Skip to content

Instantly share code, notes, and snippets.

@rayrayzayzay
Created April 14, 2023 00:48
Show Gist options
  • Save rayrayzayzay/bd486d6a99fa7fbffd4940d122be294c to your computer and use it in GitHub Desktop.
Save rayrayzayzay/bd486d6a99fa7fbffd4940d122be294c to your computer and use it in GitHub Desktop.
defmodule Felt.Channel.ElementHandler do
def handle_event(event, payload, socket) when event in ["create", "update", "delete"] do
with :ok <- ensure_map_editable(socket) do
do_handle_event(event, payload, socket)
else
{:error, reason} ->
{:reply, {:error, reason}, socket}
end
end
def handle_event(event, payload, socket) do
# Handle other events
end
defp do_handle_event("create", payload, socket) do
# Create the element
end
defp do_handle_event("update", payload, socket) do
# Update the element
end
defp do_handle_event("delete", payload, socket) do
# Delete the element
end
defp ensure_map_editable(socket) do
case Felt.Maps.check_map_editable(socket.assigns.map_id, socket.assigns.current_user) do
:ok -> :ok
{:error, :unauthorized} -> {:error, "Not enough permissions"}
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment