chore: bump collab (#5042)

* chore: bump collab

* chore: bump client api

* chore: fix test
This commit is contained in:
Nathan.fooo
2024-04-03 11:26:48 +08:00
committed by GitHub
parent e022ee88da
commit a25c728866
15 changed files with 174 additions and 120 deletions

View File

@ -213,7 +213,9 @@ fn get_collab_doc_state(
.read_txn()
.load_doc_with_txn(uid, &collab_object.object_id, txn)
})?;
let doc_state = collab.encode_collab_v1().doc_state;
let doc_state = collab
.encode_collab_v1(|_| Ok::<(), PersistenceError>(()))?
.doc_state;
if doc_state.is_empty() {
return Err(PersistenceError::UnexpectedEmptyUpdates);
}
@ -234,7 +236,9 @@ fn get_database_doc_state(
})?;
let row_ids = get_database_row_ids(&collab).unwrap_or_default();
let doc_state = collab.encode_collab_v1().doc_state;
let doc_state = collab
.encode_collab_v1(|_| Ok::<(), PersistenceError>(()))?
.doc_state;
if doc_state.is_empty() {
return Err(PersistenceError::UnexpectedEmptyUpdates);
}
@ -257,7 +261,9 @@ async fn sync_folder(
.read_txn()
.load_doc_with_txn(uid, workspace_id, txn)
})?;
let doc_state = collab.encode_collab_v1().doc_state;
let doc_state = collab
.encode_collab_v1(|_| Ok::<(), PersistenceError>(()))?
.doc_state;
(
MutexFolder::new(Folder::open(
uid,
@ -318,7 +324,10 @@ async fn sync_database_views(
.map(|_| {
(
get_all_database_meta(&collab),
collab.encode_collab_v1().doc_state,
collab
.encode_collab_v1(|_| Ok::<(), PersistenceError>(()))
.unwrap()
.doc_state,
)
})
};

View File

@ -82,7 +82,9 @@ where
if load_collab(user_id, write_txn, &view.id).is_err() {
let collab = Arc::new(MutexCollab::new(origin.clone(), &view.id, vec![], false));
let document = Document::create_with_data(collab, default_document_data())?;
let encode = document.get_collab().encode_collab_v1();
let encode = document
.get_collab()
.encode_collab_v1(|_| Ok::<(), PersistenceError>(()))?;
write_txn.flush_doc_with(user_id, &view.id, &encode.doc_state, &encode.state_vector)?;
event!(
tracing::Level::INFO,

View File

@ -45,7 +45,9 @@ impl UserDataMigration for FavoriteV1AndWorkspaceArrayMigration {
folder.add_favorite_view_ids(favorite_view_ids);
}
let encode = folder.encode_collab_v1();
let encode = folder
.encode_collab_v1()
.map_err(|err| PersistenceError::Internal(err.into()))?;
write_txn.flush_doc_with(
session.user_id,
&session.user_workspace.id,

View File

@ -41,7 +41,9 @@ impl UserDataMigration for WorkspaceTrashMapToSectionMigration {
folder.add_trash_view_ids(trash_ids);
}
let encode = folder.encode_collab_v1();
let encode = folder
.encode_collab_v1()
.map_err(|err| PersistenceError::Internal(err.into()))?;
write_txn.flush_doc_with(
session.user_id,
&session.user_workspace.id,

View File

@ -213,6 +213,7 @@ pub(crate) fn import_appflowy_data_folder(
// create the content for the container view
let import_container_doc_state = default_document_collab_data(&import_container_view_id)
.map_err(|err| PersistenceError::InvalidData(err.to_string()))?
.doc_state
.to_vec();
import_collab_object_with_doc_state(
@ -419,27 +420,29 @@ where
W: CollabKVAction<'a>,
PersistenceError: From<W::Error>,
{
if let Ok(update) = Update::decode_v1(&collab.encode_collab_v1().doc_state) {
let doc = Doc::new();
{
let mut txn = doc.transact_mut();
txn.apply_update(update);
drop(txn);
}
if let Ok(encode_collab) = collab.encode_collab_v1(|_| Ok::<(), PersistenceError>(())) {
if let Ok(update) = Update::decode_v1(&encode_collab.doc_state) {
let doc = Doc::new();
{
let mut txn = doc.transact_mut();
txn.apply_update(update);
drop(txn);
}
let encoded_collab = doc.get_encoded_collab_v1();
info!(
"import collab:{} with len: {}",
new_object_id,
encoded_collab.doc_state.len()
);
if let Err(err) = w_txn.flush_doc(
new_uid,
&new_object_id,
encoded_collab.state_vector.to_vec(),
encoded_collab.doc_state.to_vec(),
) {
error!("import collab:{} failed: {:?}", new_object_id, err);
let encoded_collab = doc.get_encoded_collab_v1();
info!(
"import collab:{} with len: {}",
new_object_id,
encoded_collab.doc_state.len()
);
if let Err(err) = w_txn.flush_doc(
new_uid,
&new_object_id,
encoded_collab.state_vector.to_vec(),
encoded_collab.doc_state.to_vec(),
) {
error!("import collab:{} failed: {:?}", new_object_id, err);
}
}
} else {
event!(tracing::Level::ERROR, "decode v1 failed");
@ -754,7 +757,8 @@ where
.into_iter()
.filter_map(|(oid, collab)| {
collab
.encode_collab_v1()
.encode_collab_v1(|_| Ok::<(), PersistenceError>(()))
.ok()?
.encode_to_bytes()
.ok()
.map(|encoded_collab| (oid, encoded_collab))