UnencodedChange.message is a required field according to typescript - default to emptystring

This commit is contained in:
Orion Henry 2020-06-05 17:07:33 -04:00
parent d53eae1e94
commit fbc70ba0e3

View file

@ -7,7 +7,7 @@ use crate::error::AutomergeError;
use crate::op::Operation;
use automerge_protocol as amp;
use core::fmt::Debug;
use serde::{Deserialize, Serialize};
use serde::{Deserialize, Serialize, Serializer};
use sha2::{Digest, Sha256};
use std::collections::HashMap;
use std::convert::TryFrom;
@ -31,11 +31,18 @@ pub struct UnencodedChange {
#[serde(rename = "startOp")]
pub start_op: u64,
pub time: i64,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(serialize_with = "flatten_option_string")]
pub message: Option<String>,
pub deps: Vec<amp::ChangeHash>,
}
fn flatten_option_string<S>(message: &Option<String>, s: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
String::serialize(&message.clone().unwrap_or_default(), s)
}
impl UnencodedChange {
pub fn max_op(&self) -> u64 {
self.start_op + (self.operations.len() as u64) - 1