You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When specifying Undo/Redo functionality, the following criteria could be considered.
How to select an action to cancel? ⇒ linear vs selective
linear: Users can't choose which actions to undo, and by default, they can undo and redo in reverse order, starting with the most recent action. If user want to cancel a specific action that is not the most recent, user need to cancel all of them, starting with the most recent and ending with that action.
selective: Users can randomly select an action to cancel among all actions and undo and redo only that action.
Does a single user have permission to undo/redo all actions in collaborative editing environment? ⇒ local vs global
local: Users can only undo and redo their own actions.
global: Users can undo and redo the actions of all participants in a collaborative edit.
Local
Global
Linear
Undo one’s own action in reverse chronological order from newest to oldest. (ex. Automerge, Google Docs, Figma)
Undo all users' actions in reverse chronological order from newest to oldest . (ex. CodePair)
Selective
Select and undo any of one’s own actions. (ex. Azurite)
Select and undo any of all users’ actions.
For Yorkie, we don't need selective functionality at this point, but rather the ability for users to undo/redo only their own work.
Discussion
To provide multi-user (”local-linear”) undo/redo, we can start with the following tasks.
Implement data structure for multi-user (”local-linear”) undo/redo.
This task could be done in two ways.
Implement Individual data structure for PoC and integrate it with Yorkie’s RGATreeSplit.
Implement additional undo/redo feature to current RGATreeSplit.
Design the overall architecture.
We'll need to combine ideas on how to manage and store tasks separately for each user, how to integrate with your current database, and more into a single architecture.
Here are some reference implementations you might want to check out.
Reference:
Description:
Written by @hyemmie
About multi-user undo/redo
When specifying Undo/Redo functionality, the following criteria could be considered.
For Yorkie, we don't need selective functionality at this point, but rather the ability for users to undo/redo only their own work.
Discussion
To provide multi-user (”local-linear”) undo/redo, we can start with the following tasks.
This task could be done in two ways.
We'll need to combine ideas on how to manage and store tasks separately for each user, how to integrate with your current database, and more into a single architecture.
Here are some reference implementations you might want to check out.
Reference:
Why:
To eliminate the user experience of canceling another user's operation, Yorkie needs to support user-specific undo/redo.
The text was updated successfully, but these errors were encountered: