# `MishkaBlog.Dashboard.WidgetSettings`
[🔗](https://github.com/mishka-group/mishka_blog/blob/v0.0.1/lib/mishka_blog/dashboard/widget_settings.ex#L5)

Registers every mishka_blog dashboard widget's own settings with the Settings page through the
`settings:register` mishka_installer hook — so "Posts to show" is documented under the **Blog** tab
(`category: "blog"`, group **Dashboard widgets**) alongside the rest of the blog's settings,
instead of hiding inside the dashboard's per-user layout where nothing else could see it.

It walks `MishkaBlog.Application.dashboard_widgets/0` and asks each descriptor for its definitions
(`MishkaCmsCore.Dashboard.Widget.settings_definitions/1`), which derives the key from
`Widget.setting_key/2` — the same function the dashboard reads through. A widget that adds a
setting is registered by declaring it; there is no second list to keep in step, and a widget that
declares none contributes nothing.

Every definition is `scope: :user`: the value belongs to the admin reading the board, and both
editors — the card's gear and this tab — write the same `Settings.put_user/3` row, so nobody ever
sees anybody else's number. Registered in `MishkaBlog.Application`.

See `MishkaBlog.Notifiers.NotifySettings` for the sibling that registers the blog's notification
toggles, and `MishkaCmsCore.Settings.define/3`.

# `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*
