Skip to content

Commit 817a8d0

Browse files
committed
Reset handout when new presenter is connecting
1 parent 1abe403 commit 817a8d0

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

backend/src/main/scala/de/knutwalker/wdcm/HandoutSystem.scala

+4-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ object HandoutSystem {
5959
case m@BespokeMessage.Deactivate(n)
6060
sequence :+= m
6161
viewers.foreach(_ ! m)
62-
case BespokeMessage.Disconnect
62+
case BespokeMessage.Connect
63+
sequence = Vector(BespokeMessage.Connect)
64+
viewers.foreach(_ ! BespokeMessage.Connect)
65+
case BespokeMessage.Disconnect
6366
sequence = Vector()
6467
viewers.foreach(_ ! BespokeMessage.Disconnect)
6568
}

common/src/main/scala/de/knutwalker/wdcm/BespokeMessage.scala

+2
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ object BespokeMessage {
99
def slide(slide: Int): BespokeMessage = Slide(slide)
1010
def next(slide: Int): BespokeMessage = Next(slide)
1111
def prev(slide: Int): BespokeMessage = Prev(slide)
12+
def connect: BespokeMessage = Connect
1213
def disconnect: BespokeMessage = Disconnect
1314

1415
case class Deactivate(slide: Int) extends BespokeMessage
1516
case class Activate(slide: Int) extends BespokeMessage
1617
case class Slide(slide: Int) extends BespokeMessage
1718
case class Next(slide: Int) extends BespokeMessage
1819
case class Prev(slide: Int) extends BespokeMessage
20+
case object Connect extends BespokeMessage
1921
case object Disconnect extends BespokeMessage
2022

2123
implicit val picklerBespokeMessage: Pickler[BespokeMessage] =

frontend/src/main/scala/de/knutwalker/wdcm/Handout.scala

+4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ case object Handout extends Plugin with Websockets {
3838
case BespokeMessage.Activate(n) if n != active
3939
max = js.Math.max(n, max)
4040
deck.slide(n)
41+
case BespokeMessage.Connect
42+
max = 0
43+
active = 0
44+
deck.slide(0)
4145
case otherwise
4246
}
4347
}

frontend/src/main/scala/de/knutwalker/wdcm/Presenter.scala

+7
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,17 @@ import boopickle.Default.Pickle
77

88
case object Presenter extends Plugin with Websockets {
99

10+
override protected def onOpen(ws: WebSocket, event: Event): Unit =
11+
sendEvent(BespokeMessage.connect)
12+
1013
override protected def onClose(ws: WebSocket, event: Event): Unit =
1114
sendEvent(BespokeMessage.disconnect)
1215

1316
override def apply(deck: Deck): Unit = {
17+
// Need to register before opening, otherwise we lose the race for handling
18+
// 'next' and 'prev' against the bullet plugin, which swallows next events
19+
// in order to open its bullets, but we could not inform the handout clients
20+
// to jump to their next bullet item as well.
1421
registerUnbind(deck.on("activate", (e: BespokeEvent) {
1522
sendEvent(BespokeMessage.activate(e.index))
1623
}))

0 commit comments

Comments
 (0)