diff options
Diffstat (limited to 'client/src')
-rw-r--r-- | client/src/main/scala/workbench/WorkbenchClient.scala | 36 |
1 files changed, 13 insertions, 23 deletions
diff --git a/client/src/main/scala/workbench/WorkbenchClient.scala b/client/src/main/scala/workbench/WorkbenchClient.scala index dc99bbc..e98b16b 100644 --- a/client/src/main/scala/workbench/WorkbenchClient.scala +++ b/client/src/main/scala/workbench/WorkbenchClient.scala @@ -1,20 +1,22 @@ package com.lihaoyi.workbench -import upickle._ +import upickle.Js +import upickle.default +import upickle.default.{Reader, Writer} +import upickle.json import org.scalajs.dom import org.scalajs.dom.ext._ -import upickle.{Reader, Writer, Js} import scala.scalajs.js import scala.scalajs.js.annotation.JSExport -import scalajs.concurrent.JSExecutionContext.Implicits.runNow +import scalajs.concurrent.JSExecutionContext.Implicits.queue import org.scalajs.dom.raw._ /** * The connection from workbench server to the client */ -object Wire extends autowire.Server[Js.Value, upickle.Reader, upickle.Writer] with ReadWrite{ +object Wire extends autowire.Server[Js.Value, Reader, Writer] with ReadWrite{ def wire(parsed: Js.Arr): Unit = { val Js.Arr(path, args: Js.Obj) = parsed - val req = new Request(upickle.readJs[Seq[String]](path), args.value.toMap) + val req = new Request(default.readJs[Seq[String]](path), args.value.toMap) Wire.route[Api](WorkbenchClient).apply(req) } } @@ -28,7 +30,7 @@ object WorkbenchClient extends Api{ @JSExport var success = false @JSExport - def main(bootSnippet: String, host: String, port: Int): Unit = { + def main(host: String, port: Int): Unit = { def rec(): Unit = { Ajax.post(s"http://$host:$port/notifications").onComplete { case util.Success(data) => @@ -44,7 +46,7 @@ object WorkbenchClient extends Api{ if (success) println("Workbench disconnected " + e) success = false interval = math.min(interval * 2, 30000) - dom.setTimeout(() => rec(), interval) + dom.window.setTimeout(() => rec(), interval) } } @@ -59,31 +61,19 @@ object WorkbenchClient extends Api{ override def clear(): Unit = { dom.document.asInstanceOf[js.Dynamic].body = shadowBody.cloneNode(true) for(i <- 0 until 100000){ - dom.clearTimeout(i) - dom.clearInterval(i) + dom.window.clearTimeout(i) + dom.window.clearInterval(i) } } @JSExport override def reload(): Unit = { dom.console.log("Reloading page...") - dom.location.reload() + dom.window.location.reload() } @JSExport - override def run(path: String, bootSnippet: Option[String]): Unit = { + override def run(path: String): Unit = { val tag = dom.document.createElement("script").asInstanceOf[HTMLElement] - var loaded = false - tag.setAttribute("src", path) - bootSnippet.foreach{ bootSnippet => - tag.onreadystatechange = (e: dom.Event) => { - if (!loaded) { - dom.console.log("Workbench reboot") - js.eval(bootSnippet) - } - loaded = true - } - tag.asInstanceOf[js.Dynamic].onload = tag.onreadystatechange - } dom.document.head.appendChild(tag) } @JSExport |