Current section
Files
Jump to
Current section
Files
lib/exq_ui_web/live/recurring_live/index.ex
defmodule ExqUIWeb.RecurringLive.Index do
@moduledoc false
use ExqUIWeb, :live_view
@compile {:no_warn_undefined, [ExqScheduler]}
@impl true
def mount(_params, _session, socket) do
{:ok, assign(socket, schedules_details())}
end
@impl true
def handle_event("enqueue_now", %{"name" => name}, socket) do
:ok = ExqScheduler.enqueue_now(scheduler(), String.to_atom(name))
{:noreply, assign(socket, schedules_details())}
end
@impl true
def handle_event(
"active",
%{"active" => %{"name" => name, "enabled" => enabled}, "_target" => ["active", "toggle"]},
socket
) do
case enabled do
"false" -> :ok = ExqScheduler.disable(scheduler(), String.to_atom(name))
"true" -> :ok = ExqScheduler.enable(scheduler(), String.to_atom(name))
end
{:noreply, assign(socket, schedules_details())}
end
@impl true
def handle_event("active", _, socket) do
{:noreply, socket}
end
defp schedules_details() do
schedules = ExqScheduler.schedules(scheduler())
%{items: schedules}
end
defp scheduler do
Application.get_env(:exq_ui, :exq_scheduler_name, ExqScheduler)
end
end