# `MishkaDocument.Plugins.LiveVisit`
[🔗](https://github.com/mishka-group/mishka_document/blob/v0.0.1/lib/mishka_document/plugins/live_visit.ex#L5)

Gives a page a `live_visit` assign: `true` when the reader reached it by a live navigation, a click
on a link of the site or the browser's Back and Forward, and `false` on a full load.

`doc-workspace-list` takes it as its `live_visit` attribute and, when it is `true`, draws skeleton
cards and streams the cards in behind them, where a full load serves them in the page's HTML.

## Where it is read

A LiveView can read `Phoenix.LiveView.get_connect_params/1` only in its own `mount/3`, and a live
component never. So it is answered on `RuntimeLive.OnMount.AfterCompile`, which
`MishkaCmsWeb.RuntimeLive` fires from `mount/3` with the socket, and kept as an assign for the
page to hand down. The client sends `"_live_referer"` when the join comes from a live navigation,
and never on the first connection after a full load.

A module because a mishka_installer hook is one. Registered in MishkaDocument.Application.

# `error_return`

```elixir
@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}
```

# `okey_return`

```elixir
@type okey_return() :: {:ok, struct() | map() | module() | [any()]}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `config`

```elixir
@spec config() :: keyword()
```

# `config`

```elixir
@spec config(atom()) :: any()
```

# `enable`

```elixir
@spec enable() :: okey_return() | error_return()
```

# `get`

```elixir
@spec get() :: keyword()
```

# `health_check`

```elixir
@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}
```

Optional. See `c:MishkaInstaller.Event.Hook.health_check/0`. Override to report health.

# `on_dependency_error`

```elixir
@spec on_dependency_error(term()) :: term()
```

Optional. See `c:MishkaInstaller.Event.Hook.on_dependency_error/1`. Override to react.

# `register`

```elixir
@spec register() :: okey_return() | error_return()
```

# `restart`

```elixir
@spec restart() :: okey_return() | error_return()
```

# `start`

```elixir
@spec start() :: okey_return() | error_return()
```

# `start_link`

# `stop`

```elixir
@spec stop() :: okey_return() | error_return()
```

# `unregister`

```elixir
@spec unregister() :: okey_return() | error_return()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
