From e43105b919f1d4e8ccb67f1e1cd09b213925bfe3 Mon Sep 17 00:00:00 2001 From: alemi Date: Wed, 14 Aug 2024 23:46:16 +0200 Subject: [PATCH] fix: textchange can be both delete and insert --- src/buffer/worker.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/buffer/worker.rs b/src/buffer/worker.rs index ff3405d..c4c318e 100644 --- a/src/buffer/worker.rs +++ b/src/buffer/worker.rs @@ -100,11 +100,13 @@ impl ControllerWorker for BufferWorker { let agent_id = oplog.get_or_create_agent_id(&self.user_id.to_string()); let last_ver = oplog.local_version(); + if change.is_delete() { + branch.delete_without_content(&mut oplog, 1, change.span()); + } + if change.is_insert() { - branch.insert(&mut oplog, agent_id, change.start as usize, &change.content) - } else if change.is_delete() { - branch.delete_without_content(&mut oplog, 1, change.span()) - } else { continue; }; + branch.insert(&mut oplog, agent_id, change.start as usize, &change.content); + } tx.send(Operation { data: oplog.encode_from(Default::default(), &last_ver) }).await .unwrap_or_warn("failed to send change!");