defmodule EzcontainerRailwayWeb.ContainerCreateLive do
alias EzcontainerRailway.Railway
alias Phoenix.Component
use Phoenix.LiveView
use EzcontainerRailwayWeb, :live_view
def render(assigns) do
~H"""
"""
end
def mount(_params, session, socket) do
form = Component.to_form(%{"name" => "", "tag" => ""})
{:ok, socket |> assign(form: form, target: "image", session: session, loading: false)}
end
def handle_info({:create, data}, socket) do
{:ok, resp} = Railway.create_service(
data["name"],
"image",
socket.assigns.session["railway_token"]
)
{:noreply, socket |> put_flash(:info, "container deplying") |> push_redirect(to: "/containers")}
end
def handle_event("create_container", data, socket) do
send(self(), {:create, data})
{:noreply, socket |> assign(loading: true)}
end
def handle_event("switch_target", _, socket) do
IO.inspect socket.assigns
case socket.assigns.target do
"repo" -> {:noreply, socket |> assign(target: "image")}
"image" -> {:noreply, socket |> assign(target: "repo")}
end
end
end