/
Main.scala
91 lines (72 loc) · 2.55 KB
/
Main.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package client
import client.cache.{Cache, CacheMap, NormalizedStateHolder}
import client.sodium.core.StreamSink
import comm.crudRequests.{GetAllEntityiesForUser, JSONConvertable}
import dataStorage.{RefToEntityOwningUser, User}
import dataStorage.stateHolder.UserMap
import io.circe.Json
import org.scalajs.dom.document
import org.scalajs.dom.ext.Ajax
import org.scalajs.dom.raw.Element
import sodium.components.{
SodiumButton,
SodiumList,
SodiumPreformattedText,
SodiumRootComp
}
import scala.concurrent.{ExecutionContextExecutor, Future}
import scala.scalajs.js
import scala.scalajs.js.annotation.JSExport
import scala.util.Try
import japgolly.scalajs.react.{CtorType, _}
import japgolly.scalajs.react.component.JsFn
import japgolly.scalajs.react.component.ScalaFn.Unmounted
import japgolly.scalajs.react.extra.router.RouterCtl
import japgolly.scalajs.react.internal.Effect.Id
import japgolly.scalajs.react.vdom.html_<^.{<, _}
import org.scalajs.dom.html.Div
import sodium.core._
import testingData.TestEntitiesForUsers
@JSExport("Main")
object Main extends js.JSApp {
implicit def executionContext: ExecutionContextExecutor =
scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
lazy val userCache: Cache[User] = NormalizedStateHolder.user
@JSExport
def main(): Unit = {
val e: Element = document.getElementById("rootComp")
val s = userCache.cell
.updates().map((c: CacheMap[User]) => c.getPrettyPrintedString)
SodiumPreformattedText(s).comp().renderIntoDOM(e)
TestAjaxRequest.query()
}
}
object TestAjaxRequest {
def query(): Unit = {
implicit def executionContext: ExecutionContextExecutor =
scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import io.circe.syntax._
val headers: Map[String, String] = Map(
"Content-Type" -> "application/json"
)
val ip = "commserver.asuscomm.com"
val i = implicitly[JSONConvertable[GetAllEntityiesForUser]]
val owner: RefToEntityOwningUser =
RefToEntityOwningUser.makeFromRef(
TestEntitiesForUsers.aliceEntity.ref
)
val q = GetAllEntityiesForUser(owner, None)
val j: Json = q.asJson
Ajax
.post(s"http://$ip:8080/GetAllEntityiesForUser",
j.spaces4,
headers = headers)
.map(_.responseText).map(i.getObject(_)).onComplete(x => {
val res1: UserMap = x.toOption.get.res.get
NormalizedStateHolder.streamToSetInitialCacheState.send(res1)
println(res1)
NormalizedStateHolder.user.cell
.listen(x => println(s"udate:$x"))
})
}
}