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.
Re-adds cancelling text annotation on right click. To achieve this,
some mechanisms that were previously used to handle live synced annotations
were rescued. So this partially reverts 40b18b0.
Cleans up and modifies the added annotation handler to suit only for text
annotation. As soon as the DRAW_END message is sent, the local fake
annotations are removed and replaced by the complete/not fake annotation.
This reverts commit 74c4c1c4cc.
Reverting this commit because it causes fake annotations from the text
tool not to be removed. Since the text tool is the only one that
generates fake annotations(because it is the only one that is live
synced), the function to clear fake annotations is directly intended to
clear them.
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.