Files
wanderer/lib/wanderer_app_web/controllers/blog_controller.ex
Dmitry Popov 4136aaad76 Initial commit
2024-09-18 01:55:30 +04:00

72 lines
1.4 KiB
Elixir

defmodule WandererAppWeb.BlogController do
use WandererAppWeb, :controller
alias WandererApp.Blog
require Logger
def index(conn, _params) do
invite_token = conn.query_params["invite"]
invite_token_valid =
case WandererApp.Env.invites() do
true ->
case invite_token do
nil -> false
token -> WandererApp.Cache.lookup!("invite_#{token}", false)
end
_ ->
true
end
posts = Blog.all_posts()
render(conn, "index.html",
posts: posts,
invite_token: invite_token || "",
invite_token_valid: invite_token_valid
)
end
def list(conn, params) do
tags = Blog.all_tags()
{posts, selected_tag} =
params
|> case do
%{"tag" => tag} -> {Blog.get_by_tag(tag), tag}
_ -> {Blog.all_posts(), nil}
end
render(conn, "list.html",
posts: posts,
tags: tags,
selected_tag: selected_tag
)
end
def show(conn, %{"slug" => slug}) do
post = Blog.get_by_id!(slug)
if post do
render(conn, "show.html", post: post)
else
conn
|> put_status(:not_found)
end
end
def contacts(conn, _params) do
render(conn, "contacts.html")
end
def changelog(conn, _params) do
[file] = WandererApp.Changelog.all_files()
render(conn, "changelog.html", file: file)
end
def license(conn, _params) do
render(conn, "license.html")
end
end