feat(api): Implement received hand event handling and UI updates

This commit is contained in:
2025-11-23 17:39:36 +01:00
parent 8ca909db52
commit a452e7753b
9 changed files with 124 additions and 7 deletions

View File

@@ -1,8 +1,10 @@
package util
import de.knockoutwhist.utils.events.SimpleEvent
import play.api.libs.json.{JsValue, Json}
import tools.jackson.databind.json.JsonMapper
import tools.jackson.module.scala.ScalaModule
import util.mapper.{ReceivedHandEventMapper, SimpleEventMapper}
object WebsocketEventMapper {
@@ -13,8 +15,24 @@ object WebsocketEventMapper {
private val mapper = JsonMapper.builder().addModule(scalaModule).build()
def toJsonString(obj: SimpleEvent): String = {
mapper.writeValueAsString(obj)
private var customMappers: Map[String,SimpleEventMapper[SimpleEvent]] = Map()
private def registerCustomMapper[T <: SimpleEvent](mapper: SimpleEventMapper[T]): Unit = {
customMappers = customMappers + (mapper.id -> mapper.asInstanceOf[SimpleEventMapper[SimpleEvent]])
}
// Register all custom mappers here
registerCustomMapper(ReceivedHandEventMapper)
def toJson(obj: SimpleEvent): JsValue = {
val data = if (customMappers.contains(obj.id)) {
return customMappers(obj.id).toJson(obj)
}else Json.parse(mapper.writeValueAsString(obj))
Json.obj(
"id" -> ("request-" + java.util.UUID.randomUUID().toString),
"event" -> obj.id,
"data" -> data
)
}
}