Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions dojo.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,17 +82,6 @@ typedef struct ResultCArrayu8 {
};
} ResultCArrayu8;

typedef struct Signature {
/**
* The `r` value of a signature
*/
struct FieldElement r;
/**
* The `s` value of a signature
*/
struct FieldElement s;
} Signature;

typedef enum Primitive_Tag {
I8,
I16,
Expand Down Expand Up @@ -396,7 +385,6 @@ typedef struct CArrayCHashItemFieldElementModelMetadata {

typedef struct WorldMetadata {
struct FieldElement world_address;
struct FieldElement world_class_hash;
struct CArrayCHashItemFieldElementModelMetadata models;
} WorldMetadata;

Expand Down Expand Up @@ -502,6 +490,17 @@ typedef struct ResultFieldElement {
};
} ResultFieldElement;

typedef struct Signature {
/**
* The `r` value of a signature
*/
struct FieldElement r;
/**
* The `s` value of a signature
*/
struct FieldElement s;
} Signature;

typedef enum ResultSignature_Tag {
OkSignature,
ErrSignature,
Expand Down Expand Up @@ -596,7 +595,8 @@ void client_set_logger(struct ToriiClient *client, void (*logger)(const char*));

struct ResultCArrayu8 client_publish_message(struct ToriiClient *client,
const char *message,
struct Signature signature);
const struct FieldElement *signature_felts,
uintptr_t signature_felts_len);

struct ResultCArrayEntity client_entities(struct ToriiClient *client, const struct Query *query);

Expand Down
18 changes: 9 additions & 9 deletions dojo.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,6 @@ struct CArray {
uintptr_t data_len;
};

struct Signature {
/// The `r` value of a signature
FieldElement r;
/// The `s` value of a signature
FieldElement s;
};

struct Primitive {
enum class Tag {
I8,
Expand Down Expand Up @@ -704,7 +697,6 @@ struct CHashItem {

struct WorldMetadata {
FieldElement world_address;
FieldElement world_class_hash;
CArray<CHashItem<FieldElement, ModelMetadata>> models;
};

Expand Down Expand Up @@ -751,6 +743,13 @@ struct EntityKeysClause {
}
};

struct Signature {
/// The `r` value of a signature
FieldElement r;
/// The `s` value of a signature
FieldElement s;
};

struct Call {
FieldElement to;
const char *selector;
Expand Down Expand Up @@ -829,7 +828,8 @@ void client_set_logger(ToriiClient *client, void (*logger)(const char*));

Result<CArray<uint8_t>> client_publish_message(ToriiClient *client,
const char *message,
Signature signature);
const FieldElement *signature_felts,
uintptr_t signature_felts_len);

Result<CArray<Entity>> client_entities(ToriiClient *client, const Query *query);

Expand Down
16 changes: 8 additions & 8 deletions dojo.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,6 @@ cdef extern from *:
CArrayu8 ok;
Error err;

cdef struct Signature:
# The `r` value of a signature
FieldElement r;
# The `s` value of a signature
FieldElement s;

cdef enum Primitive_Tag:
I8,
I16,
Expand Down Expand Up @@ -262,7 +256,6 @@ cdef extern from *:

cdef struct WorldMetadata:
FieldElement world_address;
FieldElement world_class_hash;
CArrayCHashItemFieldElementModelMetadata models;

cdef enum ResultSubscription_Tag:
Expand Down Expand Up @@ -319,6 +312,12 @@ cdef extern from *:
FieldElement ok;
Error err;

cdef struct Signature:
# The `r` value of a signature
FieldElement r;
# The `s` value of a signature
FieldElement s;

cdef enum ResultSignature_Tag:
OkSignature,
ErrSignature,
Expand Down Expand Up @@ -372,7 +371,8 @@ cdef extern from *:

ResultCArrayu8 client_publish_message(ToriiClient *client,
const char *message,
Signature signature);
const FieldElement *signature_felts,
uintptr_t signature_felts_len);

ResultCArrayEntity client_entities(ToriiClient *client, const Query *query);

Expand Down
14 changes: 6 additions & 8 deletions src/c/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,21 +76,19 @@ pub unsafe extern "C" fn client_publish_message(
client: *mut ToriiClient,
// A json string representing the typed data message
message: *const c_char,
signature: types::Signature,
signature_felts: *const types::FieldElement,
signature_felts_len: usize,
) -> Result<CArray<u8>> {
let message = unsafe { CStr::from_ptr(message).to_string_lossy().into_owned() };
let message = match serde_json::from_str::<TypedData>(message.as_str()) {
Ok(message) => message,
Err(e) => return Result::Err(e.into()),
};

let client_future = unsafe {
(*client).inner.publish_message(Message {
message,
signature_r: (&signature.r).into(),
signature_s: (&signature.s).into(),
})
};
let signature = unsafe { std::slice::from_raw_parts(signature_felts, signature_felts_len) };
let signature = signature.iter().map(|f| (&f.clone()).into()).collect::<Vec<Felt>>();

let client_future = unsafe { (*client).inner.publish_message(Message { message, signature }) };

match (*client).runtime.block_on(client_future) {
Ok(data) => Result::Ok(data.into()),
Expand Down
8 changes: 1 addition & 7 deletions src/c/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -968,7 +968,6 @@ impl From<&torii_grpc::types::Value> for Value {
#[repr(C)]
pub struct WorldMetadata {
pub world_address: FieldElement,
pub world_class_hash: FieldElement,
pub models: CArray<CHashItem<FieldElement, ModelMetadata>>,
}

Expand All @@ -982,7 +981,6 @@ impl From<&dojo_types::WorldMetadata> for WorldMetadata {

WorldMetadata {
world_address: (&value.world_address.clone()).into(),
world_class_hash: (&value.world_class_hash.clone()).into(),
models: models.into(),
}
}
Expand All @@ -1001,11 +999,7 @@ impl From<&WorldMetadata> for dojo_types::WorldMetadata {
})
.collect();

dojo_types::WorldMetadata {
world_address: (&value.world_address.clone()).into(),
world_class_hash: (&value.world_class_hash.clone()).into(),
models,
}
dojo_types::WorldMetadata { world_address: (&value.world_address.clone()).into(), models }
}
}

Expand Down
16 changes: 8 additions & 8 deletions src/wasm/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -555,23 +555,23 @@ impl ToriiClient {
pub async fn publish_message(
&mut self,
message: &str,
signature: Signature,
signature: Vec<String>,
) -> Result<js_sys::Uint8Array, JsValue> {
#[cfg(feature = "console-error-panic")]
console_error_panic_hook::set_once();

let message = serde_json::from_str(message)
.map_err(|err| JsValue::from(format!("failed to parse message: {err}")))?;

let signature = signature
.iter()
.map(|s| Felt::from_str(s.as_str()))
.collect::<Result<Vec<_>, _>>()
.map_err(|err| JsValue::from(format!("failed to parse signature: {err}")))?;

let message_id = self
.inner
.publish_message(Message {
message,
signature_r: Felt::from_str(signature.r.as_str())
.map_err(|err| JsValue::from(err.to_string()))?,
signature_s: Felt::from_str(signature.s.as_str())
.map_err(|err| JsValue::from(err.to_string()))?,
})
.publish_message(Message { message, signature })
.await
.map_err(|err| JsValue::from(err.to_string()))?;

Expand Down