Update dependencies and add new p2p networking code
The changes include upgrading trystero, adding compile options, implementing WebRTC-based networking, and reorganizing files into better packages.
This commit is contained in:
parent
06c392d6d0
commit
1091fa9ddb
10 changed files with 77 additions and 30 deletions
|
|
@ -8,6 +8,8 @@ lazy val fahrtenbuch = project
|
|||
)
|
||||
.settings(
|
||||
scalaVersion := "3.7.1",
|
||||
scalacOptions += "-Xfatal-warnings",
|
||||
scalacOptions += "-Wunused:imports",
|
||||
|
||||
// Tell Scala.js that this is an application with a main method
|
||||
scalaJSUseMainModuleInitializer := true,
|
||||
|
|
|
|||
2
package-lock.json
generated
2
package-lock.json
generated
|
|
@ -11,7 +11,7 @@
|
|||
"@mdi/font": "^7.4.47",
|
||||
"bulma": "^1.0.4",
|
||||
"dexie": "^4.0.10",
|
||||
"trystero": "^0.21.0-beta.1"
|
||||
"trystero": "^0.21.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@scala-js/vite-plugin-scalajs": "^1.0.0",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,6 @@
|
|||
"@mdi/font": "^7.4.47",
|
||||
"bulma": "^1.0.4",
|
||||
"dexie": "^4.0.10",
|
||||
"trystero": "^0.21.0-beta.1"
|
||||
"trystero": "^0.21.6"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,17 @@
|
|||
package fahrtenbuch
|
||||
|
||||
import org.getshaka.nativeconverter.NativeConverter
|
||||
import org.scalablytyped.runtime.StringDictionary
|
||||
import typings.dexie.mod.Dexie
|
||||
import scala.concurrent.Future
|
||||
import typings.dexie.mod.{Table, liveQuery}
|
||||
import scala.scalajs.js
|
||||
import org.getshaka.nativeconverter.NativeConverter
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
import typings.dexie.mod.Observable
|
||||
import com.raquo.airstream.core.Signal
|
||||
import com.raquo.airstream.core.EventStream
|
||||
import typings.dexie.mod.Table
|
||||
import typings.dexie.mod.liveQuery
|
||||
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
import scala.concurrent.Future
|
||||
import scala.scalajs.js
|
||||
|
||||
import model.Entry
|
||||
|
||||
object DexieDB {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,14 @@
|
|||
package fahrtenbuch
|
||||
|
||||
import com.raquo.laminar.api.L.{*, given}
|
||||
import com.raquo.laminar.api.features.unitArrows
|
||||
import com.raquo.laminar.api.L.*
|
||||
import fahrtenbuch.DexieDB.entriesObservable
|
||||
import org.scalajs.dom
|
||||
import rdts.base.Uid
|
||||
|
||||
import scala.concurrent.ExecutionContext.Implicits.global
|
||||
import scala.scalajs.js
|
||||
import scala.scalajs.js.Date
|
||||
import scala.scalajs.js.annotation.*
|
||||
import scala.util.Failure
|
||||
import scala.util.Success
|
||||
|
||||
import model.Entry
|
||||
import components.AppComponent
|
||||
|
||||
@main
|
||||
|
|
|
|||
53
src/main/scala/fahrtenbuch/Networking.scala
Normal file
53
src/main/scala/fahrtenbuch/Networking.scala
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
package fahrtenbuch
|
||||
|
||||
import com.raquo.laminar.api.L.*
|
||||
import org.scalajs.dom.RTCConfiguration
|
||||
import org.scalajs.dom.RTCIceServer
|
||||
import org.scalajs.dom.RTCPeerConnection
|
||||
import typings.trystero.mod.BaseRoomConfig
|
||||
import typings.trystero.mod.RelayConfig
|
||||
import typings.trystero.mod.Room
|
||||
import typings.trystero.mod.TurnConfig
|
||||
import typings.trystero.mod.joinRoom
|
||||
import typings.trystero.mod.selfId
|
||||
|
||||
import scala.scalajs.js
|
||||
|
||||
object Trystero:
|
||||
private val eturn = new RTCIceServer:
|
||||
urls = js.Array(
|
||||
"stun:relay1.expressturn.com:443",
|
||||
"turn:relay1.expressturn.com:3478",
|
||||
"turn:relay1.expressturn.com:443"
|
||||
)
|
||||
username = "efMS8M021S1G8NJ8J7"
|
||||
credential = "qrBXTlhKtCJDykOK"
|
||||
|
||||
private val tturn = new RTCIceServer:
|
||||
urls = "stun:stun.t-online.de:3478"
|
||||
|
||||
private val rtcConf = new RTCConfiguration:
|
||||
iceServers = js.Array(eturn, tturn)
|
||||
|
||||
private object MyConfig extends RelayConfig, BaseRoomConfig, TurnConfig {
|
||||
var appId = "fahrtenbuch_149520"
|
||||
rtcConfig = rtcConf
|
||||
}
|
||||
|
||||
// Public API
|
||||
val room: Room = joinRoom(MyConfig, "fahrtenbuch")
|
||||
val peerList: Var[List[(String, RTCPeerConnection)]] = Var(List.empty)
|
||||
val userId: Var[String] = Var(selfId)
|
||||
|
||||
// listen for incoming messages
|
||||
def updatePeers(): Unit =
|
||||
peerList.set(room.getPeers().toList)
|
||||
println(s"my peer ID is $selfId")
|
||||
room.onPeerJoin(peerId =>
|
||||
println(s"$peerId joined")
|
||||
updatePeers()
|
||||
)
|
||||
room.onPeerLeave(peerId =>
|
||||
println(s"$peerId left")
|
||||
updatePeers()
|
||||
)
|
||||
|
|
@ -1,9 +1,7 @@
|
|||
package fahrtenbuch.components
|
||||
|
||||
import com.raquo.laminar.api.L.{*, given}
|
||||
import com.raquo.laminar.api.features.unitArrows
|
||||
import fahrtenbuch.Entry
|
||||
import fahrtenbuch.Main.allEntries
|
||||
import com.raquo.laminar.api.L.*
|
||||
import fahrtenbuch.model.Entry
|
||||
import fahrtenbuch.Main.entryEditBus
|
||||
import rdts.base.Uid
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
package fahrtenbuch.components
|
||||
import fahrtenbuch.Entry
|
||||
import fahrtenbuch.model.Entry
|
||||
import com.raquo.laminar.nodes.ReactiveHtmlElement
|
||||
import org.scalajs.dom.HTMLTableRowElement
|
||||
import com.raquo.laminar.api.L.{*, given}
|
||||
import com.raquo.laminar.api.L.*
|
||||
import com.raquo.laminar.api.features.unitArrows
|
||||
import rdts.base.Uid
|
||||
|
||||
|
|
@ -1,9 +1,11 @@
|
|||
package fahrtenbuch.components
|
||||
|
||||
import com.raquo.laminar.api.L.{*, given}
|
||||
//import com.raquo.laminar.api.L.{*, given}
|
||||
import com.raquo.laminar.api.L.*
|
||||
|
||||
import com.raquo.laminar.api.features.unitArrows
|
||||
import fahrtenbuch.Entry
|
||||
import fahrtenbuch.Main.entryEditBus
|
||||
import fahrtenbuch.model.Entry
|
||||
import rdts.base.Uid
|
||||
|
||||
class NewEntryInput(showNewEntryField: Var[Boolean]):
|
||||
|
|
@ -1,13 +1,7 @@
|
|||
package fahrtenbuch
|
||||
package fahrtenbuch.model
|
||||
|
||||
import rdts.base.Uid
|
||||
import scala.scalajs.js.Date
|
||||
import com.raquo.laminar.api.L.{*, given}
|
||||
import com.raquo.laminar.api.features.unitArrows
|
||||
import org.scalajs.dom.HTMLTableRowElement
|
||||
import com.raquo.laminar.nodes.ReactiveHtmlElement
|
||||
import scala.annotation.threadUnsafe
|
||||
import fahrtenbuch.Main.entryEditBus
|
||||
import org.getshaka.nativeconverter.NativeConverter
|
||||
import org.getshaka.nativeconverter.ParseState
|
||||
import scala.scalajs.js
|
||||
Loading…
Reference in a new issue