From 973486067ae9aa911e60bec1043e631e7710df53 Mon Sep 17 00:00:00 2001 From: leeeon233 Date: Mon, 21 Nov 2022 17:39:49 +0800 Subject: [PATCH] fix: wasm add client id check --- .../loro-core/src/container/list/list_container.rs | 5 +---- crates/loro-core/src/container/map/map_container.rs | 5 +---- .../loro-core/src/container/text/text_container.rs | 5 +---- crates/loro-core/src/loro.rs | 4 ++++ crates/loro-wasm/src/lib.rs | 12 ++++++------ 5 files changed, 13 insertions(+), 18 deletions(-) diff --git a/crates/loro-core/src/container/list/list_container.rs b/crates/loro-core/src/container/list/list_container.rs index 87eebdc0..55c82ae1 100644 --- a/crates/loro-core/src/container/list/list_container.rs +++ b/crates/loro-core/src/container/list/list_container.rs @@ -272,10 +272,7 @@ impl Clone for List { } impl List { - pub(crate) fn from_instance( - instance: Arc>, - client_id: ClientID, - ) -> Self { + pub fn from_instance(instance: Arc>, client_id: ClientID) -> Self { Self { instance, client_id, diff --git a/crates/loro-core/src/container/map/map_container.rs b/crates/loro-core/src/container/map/map_container.rs index 8ef3358a..1420ed0f 100644 --- a/crates/loro-core/src/container/map/map_container.rs +++ b/crates/loro-core/src/container/map/map_container.rs @@ -223,10 +223,7 @@ impl Clone for Map { } impl Map { - pub(crate) fn from_instance( - instance: Arc>, - client_id: ClientID, - ) -> Self { + pub fn from_instance(instance: Arc>, client_id: ClientID) -> Self { Self { instance, client_id, diff --git a/crates/loro-core/src/container/text/text_container.rs b/crates/loro-core/src/container/text/text_container.rs index 658236ed..bab010d9 100644 --- a/crates/loro-core/src/container/text/text_container.rs +++ b/crates/loro-core/src/container/text/text_container.rs @@ -291,10 +291,7 @@ impl Clone for Text { } impl Text { - pub(crate) fn from_instance( - instance: Arc>, - client_id: ClientID, - ) -> Self { + pub fn from_instance(instance: Arc>, client_id: ClientID) -> Self { Self { instance, client_id, diff --git a/crates/loro-core/src/loro.rs b/crates/loro-core/src/loro.rs index 9ed1cd93..b0f8b9fe 100644 --- a/crates/loro-core/src/loro.rs +++ b/crates/loro-core/src/loro.rs @@ -29,6 +29,10 @@ impl LoroCore { } } + pub fn client_id(&self) -> ClientID { + self.log_store.read().unwrap().this_client_id() + } + pub fn vv(&self) -> VersionVector { self.log_store.read().unwrap().get_vv().clone() } diff --git a/crates/loro-wasm/src/lib.rs b/crates/loro-wasm/src/lib.rs index d6c8b31c..93fdfbda 100644 --- a/crates/loro-wasm/src/lib.rs +++ b/crates/loro-wasm/src/lib.rs @@ -102,21 +102,21 @@ impl LoroMap { pub fn get_text(&mut self, ctx: &mut Loro, key: &str) -> LoroText { let id = self.0.insert_obj(&ctx.0, key, ContainerType::Text); let text = ctx.deref().get_container(&id).unwrap(); - LoroText(text.into()) + LoroText(Text::from_instance(text, ctx.deref().client_id())) } #[wasm_bindgen(js_name = "getMap")] pub fn get_map(&mut self, ctx: &mut Loro, key: &str) -> LoroMap { let id = self.0.insert_obj(ctx.deref_mut(), key, ContainerType::Map); let map = ctx.deref().get_container(&id).unwrap(); - LoroMap(map.into()) + LoroMap(Map::from_instance(map, ctx.deref().client_id())) } #[wasm_bindgen(js_name = "getList")] pub fn get_list(&mut self, ctx: &mut Loro, key: &str) -> LoroList { let id = self.0.insert_obj(ctx.deref_mut(), key, ContainerType::List); let list = ctx.deref().get_container(&id).unwrap(); - LoroList(list.into()) + LoroList(List::from_instance(list, ctx.deref().client_id())) } } @@ -150,7 +150,7 @@ impl LoroList { .0 .insert_obj(ctx.deref_mut(), index, ContainerType::Text); let text = ctx.deref().get_container(&id).unwrap(); - LoroText(text.into()) + LoroText(Text::from_instance(text, ctx.deref().client_id())) } #[wasm_bindgen(js_name = "getMap")] @@ -159,7 +159,7 @@ impl LoroList { .0 .insert_obj(ctx.deref_mut(), index, ContainerType::Map); let map = ctx.deref().get_container(&id).unwrap(); - LoroMap(map.into()) + LoroMap(Map::from_instance(map, ctx.deref().client_id())) } #[wasm_bindgen(js_name = "getList")] @@ -168,7 +168,7 @@ impl LoroList { .0 .insert_obj(ctx.deref_mut(), index, ContainerType::List); let list = ctx.deref().get_container(&id).unwrap(); - LoroList(list.into()) + LoroList(List::from_instance(list, ctx.deref().client_id())) } }