Fix lore article sorting
authorLanius Trolling <lanius@laniustrolling.dev>
Sat, 13 Apr 2024 15:38:14 +0000 (11:38 -0400)
committerLanius Trolling <lanius@laniustrolling.dev>
Sat, 13 Apr 2024 15:38:14 +0000 (11:38 -0400)
src/jvmMain/kotlin/info/mechyrdia/lore/ArticleListing.kt

index e2ea11b348ee059991a9f2aa5c460c0b080039d9..e04d9e099db53279794b858e3d82010937078279 100644 (file)
@@ -3,6 +3,7 @@ package info.mechyrdia.lore
 import info.mechyrdia.Configuration
 import info.mechyrdia.data.FileStorage
 import info.mechyrdia.data.StoragePath
+import info.mechyrdia.data.StoredFileType
 import info.mechyrdia.route.Root
 import info.mechyrdia.route.href
 import io.ktor.server.application.*
@@ -26,10 +27,12 @@ suspend fun StoragePath.toArticleNode(): ArticleNode = ArticleNode(
                FileStorage.instance.listDir(path)?.map { (name, _) ->
                        val subPath = path / name
                        async { subPath.toArticleNode() }
-               }?.awaitAll().orEmpty()
-       }.sortedBy { it.name }.sortedBy { it.subNodes == null }
+               }?.awaitAll()
+       }?.sortedAsArticles()
 )
 
+private fun List<ArticleNode>.sortedAsArticles() = sortedBy { it.name }.sortedBy { it.subNodes == null }
+
 private val String.isViewable: Boolean
        get() = Configuration.Current.isDevMode || !(endsWith(".wip") || endsWith(".old"))