This repository has been archived on 2024-06-24. You can view files and clone it, but cannot push or open issues or pull requests.
augie/webapp/lib/augie_web/live/safety_live.ex

37 lines
1.1 KiB
Elixir
Raw Normal View History

2020-07-05 12:56:32 +12:00
defmodule AugieWeb.SafetyLive do
alias Augie.Firmata.Commands
alias Phoenix.PubSub
use Phoenix.LiveView
@moduledoc false
def mount(_params, _context, socket) do
if connected?(socket) do
PubSub.subscribe(Augie.PubSub, "command.safety")
Commands.get_safety()
end
{:ok, assign(socket, state: :unknown)}
end
def handle_event("toggle-safety", _, %{assigns: %{state: :unknown}} = socket),
do: {:noreply, socket}
def handle_event("toggle-safety", _, %{assigns: %{state: :armed}} = socket),
do: {:noreply, assign(socket, state: :safe)}
def handle_event("toggle-safety", _, %{assigns: %{state: :safe}} = socket),
do: {:noreply, assign(socket, state: :armed)}
def handle_info({:safety, :armed}, socket), do: {:noreply, assign(socket, state: :armed)}
def handle_info({:safety, :safe}, socket), do: {:noreply, assign(socket, state: :safe)}
defp message(:unknown), do: "UNKNOWN"
defp message(:armed), do: "ARMED"
defp message(:safe), do: "SAFE"
defp emoji(:unknown), do: ""
defp emoji(:armed), do: "⚠️"
defp emoji(:safe), do: ""
end