defmodule EzcontainerRailwayWeb.ContainerCreateLive do alias EzcontainerRailway.Railway alias Phoenix.Component use Phoenix.LiveView use EzcontainerRailwayWeb, :live_view def render(assigns) do ~H"""
<%= if @target == "image" do %> <.form for={@form} phx-submit="create_container">
<% end %> <%= if @target == "repo" do %> <.form for={@form} phx-submit="create_container">
<% end %>
""" 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