Several improvements to tldraw whiteboard:
- Only send the shape diff on shape updates (reduce a lot the message traffic)
- Shape permissions (don't allow others to select/edit unless you are presenter/moderator)
- This required some changes in akka model
- Tldraw state patch changes to improve stability with fast updates (fix several crashes)
Refactor how shape updates are parsed from tldraw, instead of doing it manually in each action,
uses the tldraw provided list of what changed available in the "onChangePage" callback, simplifying a lot of our code.
Fixes a case when the presentation is just uploaded and a wrong initial zoom was set.
Also fix viewer zoom not correclty adjusting to the area size when zoomed out.
- Poll result as text shape in the lower right-hand
- Include all tldraw shape bounds as size in akka (to help Daniel rendering in pdf export)
- Default/initital zoom will be centered in the slide and maximize the size according to the presentation area
- Also limited the max zoom out to be the one that fits the slide, to be similar as we had before
Whiteboard service wasn't considering the current presentation id when
fetching for the current whiteboard id. Calls were always returning
the id of the first slide available. This was effecting the state of the
whiteboard access feedback at the users' list.
Modified the previous implementation of the whiteboard individual access to remove
multiple Collections dependency on this feature. Multi-user whiteboard is now an
array instead of a boolean value and most of the access control can be synchronized
and handled by akka-apps.
The problem was caused when meteor restarted without reloading the page,
the ddp subscription called a onStop event that set all handlers to undefined
after we set the handlers on the init function.
Make discardedList be updated on not only the side of the sender but also the side of receiver too
Add logic for preventing the size of discardedList getting bigger unlimitedly