Update libraries and refactor code
authorLanius Trolling <lanius@laniustrolling.dev>
Thu, 8 Feb 2024 20:02:00 +0000 (15:02 -0500)
committerLanius Trolling <lanius@laniustrolling.dev>
Thu, 8 Feb 2024 20:02:00 +0000 (15:02 -0500)
build.gradle.kts
externals/src/jsMain/kotlin/externals/threejs/ObjectLoader.module_three.kt
externals/src/jsMain/kotlin/externals/threejs/constants.module_three.kt
src/jvmMain/kotlin/info/mechyrdia/Factbooks.kt
src/jvmMain/kotlin/info/mechyrdia/data/views_comment.kt
src/jvmMain/kotlin/info/mechyrdia/lore/preparser_config.kt
src/mapMain/kotlin/info/mechyrdia/mapviewer/modal.kt

index a0e572d93168bbbc1d99cea24e737835c42aa409..de729a9258690501e60225facb8b7b8820cca251 100644 (file)
@@ -29,8 +29,8 @@ buildscript {
 
 plugins {
        java
-       kotlin("multiplatform") version "1.9.21"
-       kotlin("plugin.serialization") version "1.9.21"
+       kotlin("multiplatform") version "1.9.22"
+       kotlin("plugin.serialization") version "1.9.22"
        id("com.github.johnrengelman.shadow") version "7.1.2"
        application
 }
@@ -102,7 +102,7 @@ kotlin {
                        dependencies {
                                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
                                implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")
-                               implementation("org.jetbrains.kotlinx:kotlinx-html-js:0.10.1")
+                               implementation("org.jetbrains.kotlinx:kotlinx-html-js:0.11.0")
                                
                                implementation(project(":externals"))
                        }
@@ -116,19 +116,19 @@ kotlin {
                                implementation("org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.2")
                                implementation("org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.2")
                                
-                               implementation("io.ktor:ktor-server-core-jvm:2.3.7")
-                               implementation("io.ktor:ktor-server-cio-jvm:2.3.7")
+                               implementation("io.ktor:ktor-server-core-jvm:2.3.8")
+                               implementation("io.ktor:ktor-server-cio-jvm:2.3.8")
                                
-                               implementation("io.ktor:ktor-server-caching-headers:2.3.7")
-                               implementation("io.ktor:ktor-server-call-id:2.3.7")
-                               implementation("io.ktor:ktor-server-call-logging:2.3.7")
-                               implementation("io.ktor:ktor-server-conditional-headers:2.3.7")
-                               implementation("io.ktor:ktor-server-forwarded-header:2.3.7")
-                               implementation("io.ktor:ktor-server-html-builder:2.3.7")
-                               implementation("io.ktor:ktor-server-sessions-jvm:2.3.7")
-                               implementation("io.ktor:ktor-server-status-pages:2.3.7")
+                               implementation("io.ktor:ktor-server-caching-headers:2.3.8")
+                               implementation("io.ktor:ktor-server-call-id:2.3.8")
+                               implementation("io.ktor:ktor-server-call-logging:2.3.8")
+                               implementation("io.ktor:ktor-server-conditional-headers:2.3.8")
+                               implementation("io.ktor:ktor-server-forwarded-header:2.3.8")
+                               implementation("io.ktor:ktor-server-html-builder:2.3.8")
+                               implementation("io.ktor:ktor-server-sessions-jvm:2.3.8")
+                               implementation("io.ktor:ktor-server-status-pages:2.3.8")
                                
-                               implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.10.1")
+                               implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")
                                
                                implementation("io.pebbletemplates:pebble:3.2.2")
                                implementation("org.apache.groovy:groovy-jsr223:4.0.10")
index 41ab6c2b61c4da97e06c0f69b559405a97d920f9..367bd70d73c25f28f1ce8a5715079514adcf4f41 100644 (file)
@@ -3,7 +3,6 @@
 
 package externals.threejs
 
-import org.w3c.dom.HTMLImageElement
 import org.w3c.xhr.ProgressEvent
 import kotlin.js.Promise
 
index 743e45df04434f8d694eb18f88c2ea72401483dd..571100ab88aad42380f885bb80ebb035afb4a827 100644 (file)
@@ -21,9 +21,7 @@ sealed external class TOUCH {
        object DOLLY_ROTATE : TOUCH
 }
 
-sealed external class CullFace {
-
-}
+sealed external class CullFace
 
 external var CullFaceNone: CullFace
 
@@ -33,9 +31,7 @@ external var CullFaceFront: CullFace
 
 external var CullFaceFrontBack: CullFace
 
-sealed external class ShadowMapType {
-
-}
+sealed external class ShadowMapType
 
 external var BasicShadowMap: ShadowMapType
 
@@ -45,9 +41,7 @@ external var PCFSoftShadowMap: ShadowMapType
 
 external var VSMShadowMap: ShadowMapType
 
-sealed external class Side {
-
-}
+sealed external class Side
 
 external var FrontSide: Side
 
@@ -55,17 +49,13 @@ external var BackSide: Side
 
 external var DoubleSide: Side
 
-sealed external class Shading {
-
-}
+sealed external class Shading
 
 external var FlatShading: Shading
 
 external var SmoothShading: Shading
 
-sealed external class Blending {
-
-}
+sealed external class Blending
 
 external var NoBlending: Blending
 
@@ -79,9 +69,7 @@ external var MultiplyBlending: Blending
 
 external var CustomBlending: Blending
 
-sealed external class BlendingEquation {
-
-}
+sealed external class BlendingEquation
 
 external var AddEquation: BlendingEquation
 
@@ -93,9 +81,7 @@ external var MinEquation: BlendingEquation
 
 external var MaxEquation: BlendingEquation
 
-sealed external class BlendingDstFactor {
-
-}
+sealed external class BlendingDstFactor
 
 external var ZeroFactor: BlendingDstFactor
 
@@ -117,15 +103,11 @@ external var DstColorFactor: BlendingDstFactor
 
 external var OneMinusDstColorFactor: BlendingDstFactor
 
-sealed external class BlendingSrcFactor {
-
-}
+sealed external class BlendingSrcFactor
 
 external var SrcAlphaSaturateFactor: BlendingSrcFactor
 
-sealed external class DepthModes {
-
-}
+sealed external class DepthModes
 
 external var NeverDepth: DepthModes
 
@@ -143,9 +125,7 @@ external var GreaterDepth: DepthModes
 
 external var NotEqualDepth: DepthModes
 
-sealed external class Combine {
-
-}
+sealed external class Combine
 
 external var MultiplyOperation: Combine
 
@@ -153,9 +133,7 @@ external var MixOperation: Combine
 
 external var AddOperation: Combine
 
-sealed external class ToneMapping {
-
-}
+sealed external class ToneMapping
 
 external var NoToneMapping: ToneMapping
 
@@ -167,9 +145,7 @@ external var CineonToneMapping: ToneMapping
 
 external var ACESFilmicToneMapping: ToneMapping
 
-sealed external class Mapping {
-
-}
+sealed external class Mapping
 
 external var UVMapping: Mapping
 
@@ -185,9 +161,7 @@ external var CubeUVReflectionMapping: Mapping
 
 external var CubeUVRefractionMapping: Mapping
 
-sealed external class Wrapping {
-
-}
+sealed external class Wrapping
 
 external var RepeatWrapping: Wrapping
 
@@ -195,9 +169,7 @@ external var ClampToEdgeWrapping: Wrapping
 
 external var MirroredRepeatWrapping: Wrapping
 
-sealed external class TextureFilter {
-
-}
+sealed external class TextureFilter
 
 external var NearestFilter: TextureFilter
 
@@ -219,9 +191,7 @@ external var LinearMipmapLinearFilter: TextureFilter
 
 external var LinearMipMapLinearFilter: TextureFilter
 
-sealed external class TextureDataType {
-
-}
+sealed external class TextureDataType
 
 external var UnsignedByteType: TextureDataType
 
@@ -247,9 +217,7 @@ external var UnsignedShort565Type: TextureDataType
 
 external var UnsignedInt248Type: TextureDataType
 
-sealed external class PixelFormat {
-
-}
+sealed external class PixelFormat
 
 external var AlphaFormat: PixelFormat
 
@@ -279,9 +247,7 @@ external var RGBIntegerFormat: PixelFormat
 
 external var RGBAIntegerFormat: PixelFormat
 
-sealed external class CompressedPixelFormat {
-
-}
+sealed external class CompressedPixelFormat
 
 external var RGB_S3TC_DXT1_Format: CompressedPixelFormat
 
@@ -363,9 +329,7 @@ external var SRGB8_ALPHA8_ASTC_12x12_Format: CompressedPixelFormat
 
 external var RGBA_BPTC_Format: CompressedPixelFormat
 
-sealed external class AnimationActionLoopStyles {
-
-}
+sealed external class AnimationActionLoopStyles
 
 external var LoopOnce: AnimationActionLoopStyles
 
@@ -373,9 +337,7 @@ external var LoopRepeat: AnimationActionLoopStyles
 
 external var LoopPingPong: AnimationActionLoopStyles
 
-sealed external class InterpolationModes {
-
-}
+sealed external class InterpolationModes
 
 external var InterpolateDiscrete: InterpolationModes
 
@@ -383,9 +345,7 @@ external var InterpolateLinear: InterpolationModes
 
 external var InterpolateSmooth: InterpolationModes
 
-sealed external class InterpolationEndingModes {
-
-}
+sealed external class InterpolationEndingModes
 
 external var ZeroCurvatureEnding: InterpolationEndingModes
 
@@ -393,17 +353,13 @@ external var ZeroSlopeEnding: InterpolationEndingModes
 
 external var WrapAroundEnding: InterpolationEndingModes
 
-sealed external class AnimationBlendMode {
-
-}
+sealed external class AnimationBlendMode
 
 external var NormalAnimationBlendMode: AnimationBlendMode
 
 external var AdditiveAnimationBlendMode: AnimationBlendMode
 
-sealed external class TrianglesDrawModes {
-
-}
+sealed external class TrianglesDrawModes
 
 external var TrianglesDrawMode: TrianglesDrawModes
 
@@ -411,9 +367,7 @@ external var TriangleStripDrawMode: TrianglesDrawModes
 
 external var TriangleFanDrawMode: TrianglesDrawModes
 
-sealed external class TextureEncoding {
-
-}
+sealed external class TextureEncoding
 
 external var LinearEncoding: TextureEncoding
 
@@ -431,25 +385,19 @@ external var RGBM16Encoding: TextureEncoding
 
 external var RGBDEncoding: TextureEncoding
 
-sealed external class DepthPackingStrategies {
-
-}
+sealed external class DepthPackingStrategies
 
 external var BasicDepthPacking: DepthPackingStrategies
 
 external var RGBADepthPacking: DepthPackingStrategies
 
-sealed external class NormalMapTypes {
-
-}
+sealed external class NormalMapTypes
 
 external var TangentSpaceNormalMap: NormalMapTypes
 
 external var ObjectSpaceNormalMap: NormalMapTypes
 
-sealed external class StencilOp {
-
-}
+sealed external class StencilOp
 
 external var ZeroStencilOp: StencilOp
 
@@ -467,9 +415,7 @@ external var DecrementWrapStencilOp: StencilOp
 
 external var InvertStencilOp: StencilOp
 
-sealed external class StencilFunc {
-
-}
+sealed external class StencilFunc
 
 external var NeverStencilFunc: StencilFunc
 
@@ -487,9 +433,7 @@ external var GreaterEqualStencilFunc: StencilFunc
 
 external var AlwaysStencilFunc: StencilFunc
 
-sealed external class Usage {
-
-}
+sealed external class Usage
 
 external var StaticDrawUsage: Usage
 
@@ -509,9 +453,7 @@ external var DynamicCopyUsage: Usage
 
 external var StreamCopyUsage: Usage
 
-sealed external class GLSLVersion {
-
-}
+sealed external class GLSLVersion
 
 external var GLSL1: GLSLVersion
 
index 6e0406011e4531c80a1f2265fab88ddc7cce5325..92aeff344f295ba264d3b10600976b5b38b492c8 100644 (file)
@@ -27,7 +27,6 @@ import io.ktor.server.sessions.serialization.*
 import io.ktor.util.*
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.runInterruptible
-import kotlinx.coroutines.withContext
 import org.slf4j.event.Level
 import java.io.File
 import java.io.IOException
index 7bf7da94d2c7c33f1a9513aef7d5679e459e1ca9..9cf308ce6bcaca3731f11d6efafca8e378e4bacf 100644 (file)
@@ -147,7 +147,7 @@ suspend fun ApplicationCall.editCommentRoute(): Nothing {
        redirect("/comment/view/$commentId")
 }
 
-suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit {
+private suspend fun ApplicationCall.getCommentForDeletion(): Pair<NationData, Comment> {
        val currNation = currentNation() ?: redirectWithError("/auth/login", "You must be logged in to delete comments")
        
        val commentId = Id<Comment>(parameters["id"]!!)
@@ -156,6 +156,12 @@ suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit {
        if (currNation.id != comment.submittedBy && currNation.id != OwnerNationId)
                throw ForbiddenException("Illegal attempt by ${currNation.id} to delete comment by ${comment.submittedBy}")
        
+       return currNation to comment
+}
+
+suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit {
+       val (currNation, comment) = getCommentForDeletion()
+       
        val commentDisplay = CommentRenderData(listOf(comment), nationCache).single()
        
        return page("Confirm Deletion of Commment", standardNavBar()) {
@@ -167,10 +173,10 @@ suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit {
                        
                        commentBox(commentDisplay, currNation.id)
                        
-                       form(method = FormMethod.get, action = "/comment/view/$commentId") {
+                       form(method = FormMethod.get, action = "/comment/view/${comment.id}") {
                                submitInput { value = "No, take me back" }
                        }
-                       form(method = FormMethod.post, action = "/comment/delete/$commentId") {
+                       form(method = FormMethod.post, action = "/comment/delete/$comment.id") {
                                installCsrfToken(createCsrfToken())
                                submitInput(classes = "evil") { value = "Yes, delete it" }
                        }
@@ -179,16 +185,10 @@ suspend fun ApplicationCall.deleteCommentPage(): HTML.() -> Unit {
 }
 
 suspend fun ApplicationCall.deleteCommentRoute(): Nothing {
-       val currNation = currentNation() ?: redirectWithError("/auth/login", "You must be logged in to delete comments")
-       
-       val commentId = Id<Comment>(parameters["id"]!!)
-       val comment = Comment.Table.get(commentId)!!
-       
-       if (currNation.id != comment.submittedBy && currNation.id != OwnerNationId)
-               throw ForbiddenException("Illegal attempt by ${currNation.id} to delete comment by ${comment.submittedBy}")
+       val (_, comment) = getCommentForDeletion()
        
-       Comment.Table.del(commentId)
-       CommentReplyLink.deleteComment(commentId)
+       Comment.Table.del(comment.id)
+       CommentReplyLink.deleteComment(comment.id)
        
        redirect("/lore/${comment.submittedIn}#comments")
 }
index 1ca849013e69b17f20b10cc09a960235bdb8a849..319ca5495be2a933a00b6e3552f6ad8bc748d153 100644 (file)
@@ -225,7 +225,7 @@ object PebbleJsonLoader {
                                resolveImports(JsonFileCodec.parseToJsonElement(text), file)
                        }
        
-       fun loadJsonContext(name: String): Map<String, Any?> = loadJson(name).let { json ->
+       private fun loadJsonContext(name: String): Map<String, Any?> = loadJson(name).let { json ->
                val data = convertJson(json)
                if (data !is Map<*, *>)
                        throw IOException("JSON Object expected in file $name, got $json")
@@ -245,7 +245,7 @@ object PebbleToJsonFilter : Filter {
                return mutableListOf()
        }
        
-       override fun apply(input: Any?, args: MutableMap<String, Any?>, self: PebbleTemplate?, context: EvaluationContext?, lineNumber: Int): Any? {
+       override fun apply(input: Any?, args: MutableMap<String, Any?>, self: PebbleTemplate?, context: EvaluationContext?, lineNumber: Int): Any {
                return PebbleJsonLoader.deconvertJson(input).toString()
        }
 }
@@ -303,7 +303,7 @@ object PebbleScriptLoader {
                return compiledScript
        }
        
-       fun runScript(scriptName: String, script: CompiledScript, input: Any?, args: MutableMap<String, Any?>, self: PebbleTemplate, context: EvaluationContext, lineNumber: Int): Any? {
+       private fun runScript(scriptName: String, script: CompiledScript, input: Any?, args: MutableMap<String, Any?>, self: PebbleTemplate, context: EvaluationContext, lineNumber: Int): Any? {
                val bindings = SimpleBindings()
                bindings["text"] = input
                bindings["stdlib"] = PebbleScriptStdlib(bindings, self, lineNumber)
@@ -317,7 +317,7 @@ object PebbleScriptLoader {
                }
        }
        
-       fun runScript(scriptName: String, input: Any?, args: MutableMap<String, Any?>, self: PebbleTemplate, context: EvaluationContext, lineNumber: Int): Any? {
+       private fun runScript(scriptName: String, input: Any?, args: MutableMap<String, Any?>, self: PebbleTemplate, context: EvaluationContext, lineNumber: Int): Any? {
                val script = loadFunction(scriptName)
                        ?: throw PebbleException(null, "Script $scriptName could not be found", lineNumber, self.name)
                
index b72984773a45dc63553f6992b615438b2c7de4b5..9623e4ee3a65b5fb56ed2ca6d188afed4f23ac39 100644 (file)
@@ -3,9 +3,10 @@ package info.mechyrdia.mapviewer
 import kotlinx.browser.document
 import kotlinx.coroutines.*
 import kotlinx.dom.clear
-import kotlinx.html.*
+import kotlinx.html.TagConsumer
 import kotlinx.html.dom.append
-import kotlinx.html.js.onClickFunction
+import kotlinx.html.p
+import kotlinx.html.style
 import kotlin.coroutines.resume
 
 private suspend fun <T> showModalBox(boxBuilder: TagConsumer<*>.((T) -> Unit) -> Unit): T {