defmodule PlausibleWeb.Live.TeamSetup do @moduledoc """ LiveView for Team setup """ use PlausibleWeb, :live_view alias Plausible.Repo alias Plausible.Teams alias Plausible.Teams.Management.Layout alias PlausibleWeb.Router.Helpers, as: Routes def mount(_params, _session, socket) do current_user = socket.assigns.current_user current_team = socket.assigns.current_team socket = case current_team do %Teams.Team{setup_complete: true} -> socket |> put_flash(:success, "Your team is now created") |> redirect(to: Routes.settings_path(socket, :team_general)) %Teams.Team{} -> team_name_form = current_team |> Teams.Team.name_changeset(%{name: "#{current_user.name}'s team"}) |> Repo.update!() |> Teams.Team.name_changeset(%{}) |> to_form() layout = Layout.init(current_team) assign(socket, team_name_form: team_name_form, team_layout: layout, current_team: current_team ) _ -> socket |> put_flash(:error, "You cannot create any team just yet") |> redirect(to: Routes.site_path(socket, :index)) end socket = if current_team do {:ok, my_role} = Teams.Memberships.team_role(current_team, current_user) assign(socket, my_role: my_role) else socket end {:ok, socket} end def render(assigns) do assigns = assign(assigns, :locked?, Plausible.Teams.Billing.solo?(assigns.current_team)) ~H""" <.focus_box padding?={false}> <:title>
Name your team, add team members and assign roles. When ready, click "Create Team" to send invitations