defmodule PlausibleWeb.Components.Site.Feature.ToggleLive do @moduledoc """ LiveComponent for rendering a user-facing feature toggle in LiveView contexts. Instead of using form submission, this component messages itself to handle toggles. """ use PlausibleWeb, :live_component def update(assigns, socket) do site = Plausible.Repo.preload(assigns.site, :team) team = Plausible.Teams.with_subscription(site.team) site = %{site | team: team} current_setting = assigns.feature_mod.enabled?(site) disabled? = assigns.feature_mod.check_availability(team) !== :ok {:ok, socket |> assign(assigns) |> assign(:site, site) |> assign(:current_setting, current_setting) |> assign(:disabled?, disabled?)} end attr :site, Plausible.Site, required: true attr :feature_mod, :atom, required: true attr :current_user, Plausible.Auth.User, required: true def render(assigns) do ~H"""