From 4542640c6394b4cba72484dc0447efda508d3173 Mon Sep 17 00:00:00 2001 From: Lanius Trolling Date: Thu, 27 Jul 2023 10:04:28 -0400 Subject: [PATCH] Add lore intro page --- src/main/kotlin/info/mechyrdia/Factbooks.kt | 2 +- .../kotlin/info/mechyrdia/lore/view_nav.kt | 1 + .../kotlin/info/mechyrdia/lore/views_lore.kt | 35 +++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/info/mechyrdia/Factbooks.kt b/src/main/kotlin/info/mechyrdia/Factbooks.kt index cd73f1b..867d0df 100644 --- a/src/main/kotlin/info/mechyrdia/Factbooks.kt +++ b/src/main/kotlin/info/mechyrdia/Factbooks.kt @@ -129,7 +129,7 @@ fun Application.factbooks() { routing { get("/") { - redirect("/lore") + call.respondHtml(HttpStatusCode.OK, call.loreIntroPage()) } // Factbooks and assets diff --git a/src/main/kotlin/info/mechyrdia/lore/view_nav.kt b/src/main/kotlin/info/mechyrdia/lore/view_nav.kt index d6c8a32..9ab9fab 100644 --- a/src/main/kotlin/info/mechyrdia/lore/view_nav.kt +++ b/src/main/kotlin/info/mechyrdia/lore/view_nav.kt @@ -13,6 +13,7 @@ import kotlin.collections.component2 import kotlin.collections.set suspend fun ApplicationCall.standardNavBar(path: List? = null) = listOf( + NavLink("/", "Intro"), NavLink("/lore", "Lore Index") ) + path?.let { pathParts -> pathParts.dropLast(1).mapIndexed { i, part -> diff --git a/src/main/kotlin/info/mechyrdia/lore/views_lore.kt b/src/main/kotlin/info/mechyrdia/lore/views_lore.kt index 4e58a4e..c954c1b 100644 --- a/src/main/kotlin/info/mechyrdia/lore/views_lore.kt +++ b/src/main/kotlin/info/mechyrdia/lore/views_lore.kt @@ -10,6 +10,41 @@ import kotlinx.coroutines.flow.toList import kotlinx.html.* import java.io.File +private const val INTRO_TITLE = "Welcome to Mechyrdia" +private const val INTRO_COMMENTS_PATH = "/" + +suspend fun ApplicationCall.loreIntroPage(): HTML.() -> Unit { + val totalsData = processGuestbook() + + val (canCommentAs, comments) = coroutineScope { + val canCommentAs = async { currentNation() } + val comments = async { + CommentRenderData(Comment.getCommentsIn(INTRO_COMMENTS_PATH).toList(), nationCache) + } + + canCommentAs.await() to comments.await() + } + + val sidebar = PageNavSidebar( + listOf( + NavLink("#page-top", INTRO_TITLE, aClasses = "left"), + NavLink("#comments", "Comments", aClasses = "left") + ) + ) + + val htmlFile = File(Configuration.CurrentConfiguration.articleDir).parentFile.combineSafe("intro.html") + val fileHtml = htmlFile.readText() + + return page(INTRO_TITLE, standardNavBar(), sidebar) { + section { + a { id = "page-top" } + unsafe { raw(fileHtml) } + } + + finalSection(INTRO_COMMENTS_PATH, canCommentAs, comments, totalsData) + } +} + suspend fun ApplicationCall.loreArticlePage(): HTML.() -> Unit { val totalsData = processGuestbook() -- 2.25.1