@use crate::{
    config::{Config, UrlKind},
    data::Node,
    templates::{info, instance, statics::index_css},
};

@(nodes: &[Node], config: &Config)

<!doctype html>
<html>
    <head lang="en">
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1" />
        <title>@config.hostname() | ActivityPub Relay</title>
        <link rel="stylesheet" href="/static/@index_css.name" type="text/css" />
    </head>
    <body>
        <header>
            <div class="header-text">
                <h1>@Config::software_name()<span class="smaller">@Config::software_version()</span></h1>
                <p>on @config.hostname()</p>
            </div>
        </header>
        <main>
            <section>
                <h3>Connected Servers</h3>
                @if nodes.is_empty() {
                    <p>There are no connected servers at this time.</p>
                } else {
                    <ul>
                        @for node in nodes {
                            @if let Some(inst) = node.instance.as_ref() {
                                <li>
                                    @:instance(inst, node.info.as_ref().map(|info| { info.software.as_ref() }), node.contact.as_ref(), &node.base)
                                </li>
                            } else {
                                @if let Some(inf) = node.info.as_ref() {
                                    <li>
                                        @:info(inf, &node.base)
                                    </li>
                                }
                            }
                        }
                    </ul>
                }
            </section>
            <section>
                <h3>Joining</h3>
                <article class="joining">
                    <p>
                        If you are the admin of a server that supports activitypub relays, you can add
                        this relay to your server.
                    </p>
                    <h4>Mastodon</h4>
                    <p>
                        Mastodon admins can add this relay by adding
                        <pre>@config.generate_url(UrlKind::Inbox)</pre> in their relay settings.
                    </p>
                    <h4>Pleroma</h4>
                    <p>
                        Pleroma admins can add this relay by adding
                        <pre>@config.generate_url(UrlKind::Actor)</pre>
                        to their relay settings (I don't actually know how pleroma handles adding
                        relays, is it still a mix command?).
                    </p>
                    <h4>Others</h4>
                    <p>
                        Consult the documentation for your server. It's likely that it follows either
                        Mastodon or Pleroma's relay formatting.
                    </p>
                </article>
            </section>
        </main>
        <footer>
            <p>
                The source code for this project can be found at
                <a href="@config.source_code()">@config.source_code()</a>
            </p>
        </footer>
    </body>
</html>