Packages
primer_live
0.1.14
An implementation of GitHub's Primer Design System for Phoenix LiveView.
Current section
Files
Jump to
Current section
Files
lib/theme/theme_session_controller.ex
defmodule PrimerLive.ThemeSessionController do
@moduledoc """
Handles api calls to `/api/theme`.
Usage:
Create file `controllers/session_controller.ex`:
```
defmodule MyAppWeb.SessionController do
use MyAppWeb, :controller
use PrimerLive.ThemeSessionController
end
```
"""
defmacro __using__(_) do
quote do
@session_payload_key "payload"
@session_theme_key PrimerLive.Theme.session_theme_key()
def set(conn, data) when is_map_key(data, @session_payload_key),
do: store_session(conn, @session_theme_key, Map.get(data, @session_payload_key))
defp store_session(conn, key, value) do
conn
|> put_session(key, value)
|> json("ok")
end
end
end
end