From 2b6d2037c76bfc2fd91e1800b22e45e60f7b2ffb Mon Sep 17 00:00:00 2001 From: frelodev Date: Fri, 27 Sep 2024 23:34:07 +0200 Subject: [PATCH] chore(js): added glue user object --- src/ffi/js/client.rs | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/ffi/js/client.rs b/src/ffi/js/client.rs index c1ea64f..60c0de0 100644 --- a/src/ffi/js/client.rs +++ b/src/ffi/js/client.rs @@ -1,6 +1,31 @@ use napi_derive::napi; use crate::{Client, Workspace}; +#[napi(object, js_name = "User")] +pub struct JsUser { + pub uuid: String, + pub name: String, +} + +impl TryFrom for crate::api::User { + type Error = ::Err; + fn try_from(value: JsUser) -> Result { + Ok(Self { + id: value.uuid.parse()?, + name: value.name, + }) + } +} + +impl From for JsUser { + fn from(value: crate::api::User) -> Self { + Self { + uuid: value.id.to_string(), + name: value.name, + } + } +} + #[napi] /// connect to codemp servers and return a client session pub async fn connect(config: crate::api::Config) -> napi::Result{ @@ -51,10 +76,10 @@ impl Client { self.get_workspace(&workspace) } - #[napi(js_name = "user_id")] + #[napi(js_name = "user")] /// return current sessions's user id - pub fn js_user_id(&self) -> String { - self.user().id.to_string() + pub fn js_user(&self) -> JsUser { + self.user().clone().into() } #[napi(js_name = "active_workspaces")]