| defmodule Plausible.InstallationSupport.State do |
| @moduledoc """ |
| The state to be shared across check during site installation support. |
| |
| Assigns are meant to be used to communicate between checks, while |
| `diagnostics` are specific to the check group being executed. |
| """ |
|
|
| defstruct url: nil, |
| data_domain: nil, |
| report_to: nil, |
| assigns: %{}, |
| diagnostics: %{}, |
| skip_further_checks?: false |
|
|
| @type diagnostics_type :: |
| Plausible.InstallationSupport.Verification.Diagnostics.t() |
| | Plausible.InstallationSupport.Detection.Diagnostics.t() |
|
|
| @type t :: %__MODULE__{ |
| url: String.t() | nil, |
| data_domain: String.t() | nil, |
| report_to: pid() | nil, |
| assigns: map(), |
| diagnostics: diagnostics_type(), |
| skip_further_checks?: boolean() |
| } |
|
|
| def assign(%__MODULE__{} = state, assigns) do |
| %{state | assigns: Map.merge(state.assigns, Enum.into(assigns, %{}))} |
| end |
|
|
| def put_diagnostics(%__MODULE__{} = state, diagnostics) when is_list(diagnostics) do |
| %{state | diagnostics: struct!(state.diagnostics, diagnostics)} |
| end |
|
|
| def put_diagnostics(%__MODULE__{} = state, diagnostics) do |
| put_diagnostics(state, List.wrap(diagnostics)) |
| end |
| end |
|
|