The Review::summary was limited in behaviour, since it was only an
Option<String>.
The field is now changed to NonEmpty<Edit> so that it can enable an edit
history, as well as being able to supply embeds as part of the text.
Reactions are also introduced to Review and, necessarily, introducing an
Action::ReviewReact.
Note that some machinery was added under actions and encoding to enable
backwards-compatibility.
For actions, a new ReviewEdit is introduced to keep
track of the different versions of editing actions – supporting the old actions
while also introducing the new variant.
For encoding, the machinery exploits the fact that an Option<String> can be
converted into a NonEmpty<Edit> given that an ActorId and Timestamp are
available, and that None can be converted into an empty string. The struct
patch::Review now deserializes via this encoding::review::Review type and,
importantly, preserves backwards-compatibility.
The Review::summary was limited in behaviour, since it was only an
Option<String>.
The field is now changed to NonEmpty<Edit> so that it can enable an edit
history, as well as being able to supply embeds as part of the text.
Reactions are also introduced to Review and, necessarily, introducing an
Action::ReviewReact.
Note that some machinery was added under actions and encoding to enable
backwards-compatibility.
For actions, a new ReviewEdit is introduced to keep
track of the different versions of editing actions – supporting the old actions
while also introducing the new variant.
For encoding, the machinery exploits the fact that an Option<String> can be
converted into a NonEmpty<Edit> given that an ActorId and Timestamp are
available, and that None can be converted into an empty string. The struct
patch::Review now deserializes via this encoding::review::Review type and,
importantly, preserves backwards-compatibility.
Rebase and clear up test.