From 6dc85af1cb41c1c754c0ae3c5f5c2b15cc286e6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mikl=C3=B3s=20T=C3=B3th?= <tothmiklostibor@gmail.com>
Date: Sat, 5 Mar 2022 10:27:54 +0100
Subject: [PATCH] Implement auto-refresh

---
 mosogepsch/src/jsMain/kotlin/api/Api.kt            | 10 ++++------
 mosogepsch/src/jsMain/kotlin/components/Content.kt | 13 +++++++++++--
 mosogepsch/src/jsMain/kotlin/components/Floor.kt   |  2 +-
 3 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/mosogepsch/src/jsMain/kotlin/api/Api.kt b/mosogepsch/src/jsMain/kotlin/api/Api.kt
index d88764b..12c605b 100644
--- a/mosogepsch/src/jsMain/kotlin/api/Api.kt
+++ b/mosogepsch/src/jsMain/kotlin/api/Api.kt
@@ -5,9 +5,7 @@ import io.ktor.client.engine.js.*
 import io.ktor.client.features.json.*
 import io.ktor.client.features.json.serializer.*
 import io.ktor.client.request.*
-import io.ktor.client.response.*
 import kotlinx.browser.window
-import kotlinx.coroutines.delay
 import kotlinx.datetime.Clock
 import kotlinx.datetime.Instant
 import kotlinx.serialization.ExperimentalSerializationApi
@@ -15,14 +13,14 @@ import kotlinx.serialization.json.Json
 
 
 object Api {
-    val client = HttpClient(Js) {
-        install(JsonFeature) { serializer = KotlinxSerializer() }
-    }
-
     private val json = Json {
         ignoreUnknownKeys = true
     }
 
+    val client = HttpClient(Js) {
+        install(JsonFeature) { serializer = KotlinxSerializer(json) }
+    }
+
     var lastRequestTime: Instant = Instant.DISTANT_PAST
         private set
 
diff --git a/mosogepsch/src/jsMain/kotlin/components/Content.kt b/mosogepsch/src/jsMain/kotlin/components/Content.kt
index a755213..e247ea7 100644
--- a/mosogepsch/src/jsMain/kotlin/components/Content.kt
+++ b/mosogepsch/src/jsMain/kotlin/components/Content.kt
@@ -5,6 +5,7 @@ import api.Api
 import api.Machine
 import api.Response
 import app.softwork.bootstrapcompose.Container
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.launch
 import org.jetbrains.compose.web.css.*
 import org.jetbrains.compose.web.dom.Div
@@ -17,7 +18,15 @@ fun content() {
 
     val scope = rememberCoroutineScope()
     LaunchedEffect(Unit) {
-        scope.launch { data = Api.getOnce() }
+        scope.launch {
+            data = Api.getOnce()
+            while (true) {
+                delay(5000)
+                data = Api.getOnce()
+                val nextMachine = data!!.floors.map{ it.machines }.flatten().find { it.id == machine?.id }
+                machine = nextMachine
+            }
+        }
     }
 
     Container(attrs = {
@@ -44,7 +53,7 @@ fun content() {
         style {
             width(0.px)
             if (machine != null) {
-                height(17.em)
+                height(22.em)
             } else {
                 height(0.em)
             }
diff --git a/mosogepsch/src/jsMain/kotlin/components/Floor.kt b/mosogepsch/src/jsMain/kotlin/components/Floor.kt
index 068dac2..9aac3e9 100644
--- a/mosogepsch/src/jsMain/kotlin/components/Floor.kt
+++ b/mosogepsch/src/jsMain/kotlin/components/Floor.kt
@@ -9,7 +9,7 @@ import styles.FloorStyle
 
 @Composable
 fun floor(floor: Floor, selectedMachine: Machine?, setMachine: (Machine?)->Unit) {
-    val zIndex = 200 - floor.id*2
+    val zIndex = 2000 - floor.id*2
 
     Div(attrs = {
         classes(FloorStyle.container)
-- 
GitLab