@use plume_models::blogs::Blog;
@use plume_models::instance::Instance;
@use plume_models::posts::Post;
@use plume_models::users::User;
@use std::path::Path;
@use crate::templates::{base, partials::post_card};
@use crate::template_utils::*;
@use crate::routes::*;

@(ctx: BaseContext, blog: Blog, authors: &[User], page: i32, n_pages: i32, posts: Vec<Post>)

@:base(ctx, blog.title.clone(), {
	<meta content="profile" property="og:type" />
	<meta content="120" property="og:image:width" />
	<meta content="120" property="og:image:height" />
	<meta content="summary" property="twitter:card" />
	<meta content="'@Instance::get_local().unwrap().name" property="og:site_name" />
	<meta content="@blog.ap_url" property="og:url" />
	<meta content="@blog.fqn" property="profile:username" />
	<meta content="@blog.title" property="og:title" />
	<meta content="@blog.summary_html" name="description">
	<meta content="@blog.summary_html" property="og:description" />
	<meta content="@blog.icon_url(ctx.0)" property="og:image" />

	<link href='@Instance::get_local().unwrap().compute_box("~", &blog.fqn, "atom.xml")' rel='alternate' type='application/atom+xml'>
	<link href='@blog.ap_url' rel='alternate' type='application/activity+json'>
	<link href='@blog.ap_url' rel='canonical'>
    @if !ctx.2.clone().map(|u| u.hide_custom_css).unwrap_or(false) {
        @if let Some(ref theme) = blog.theme {
            <link rel="stylesheet" href="@uri!(plume_static_files: file = Path::new("css").join(theme).join("theme.css"), build_id = CACHE_NAME)">
        }
    }
}, {
    <a href="@uri!(blogs::details: name = &blog.fqn, page = _)" dir="auto">@blog.title</a>
}, {
<div class="hidden">
    @for author in authors {
        <div class="h-card">
            <span class="p-name">@author.name()</span>
            <a class="u-url" href="@author.ap_url"></a>
	</div>
    }
</div>
<div class="h-feed">
    @if let Some(banner_url) = blog.banner_url(ctx.0) {
        <div class="cover" style="background-image: url('@Html(banner_url.clone())')"></div>
        <img class="hidden u-photo" src="@banner_url"/>
    }
    <div class="h-card">
        <div class="user">
            <div class="flex wrap" dir="auto">
                <div class="avatar medium" style="background-image: url('@blog.icon_url(ctx.0)');" aria-label="@i18n!(ctx.1, "{}'s icon"; &blog.title)"></div>
                <img class="hidden u-photo" src="@blog.icon_url(ctx.0)"/>

                <h1 class="grow flex vertical">
                    <span class="p-name">@blog.title</span>
                    <small dir="auto">~@blog.fqn</small>
                </h1>

                @if ctx.2.clone().and_then(|u| u.is_author_in(ctx.0, &blog).ok()).unwrap_or(false) {
                    <a href="@uri!(posts::new: blog = &blog.fqn)" class="button" dir="auto">@i18n!(ctx.1, "New article")</a>
                    <a href="@uri!(blogs::edit: name = &blog.fqn)" class="button" dir="auto">@i18n!(ctx.1, "Edit")</a>
                }
            </div>

            <main class="user-summary" dir="auto">
                <p>
                    @i18n!(ctx.1, "There's one author on this blog: ", "There are {0} authors on this blog: "; authors.len())
                    @for (i, author) in authors.iter().enumerate() {@if i >= 1 {, }
                    <a class="author p-author" href="@uri!(user::details: name = &author.fqn)" dir="auto">@author.name()</a>}
                </p>
                @Html(blog.summary_html.clone())
            </main>
    </div>

    <section>
        <h2 dir="auto">
            @i18n!(ctx.1, "Latest articles")
            <small><a href="@uri!(blogs::atom_feed: name = &blog.fqn)" title="Atom feed">@icon!("rss")</a></small>
        </h2>
        @if posts.is_empty() {
            <p dir="auto">@i18n!(ctx.1, "No posts to see here yet.")</p>
        }
        <div class="cards">
            @for article in posts {
                @:post_card(ctx, article)
            }
        </div>
        @paginate(ctx.1, page, n_pages)
    </section>
</div>
})
