From ece9db75730df8400f761dd5f5b99e3ec84b1963 Mon Sep 17 00:00:00 2001 From: Evan Feenstra Date: Tue, 28 May 2024 12:37:11 -0700 Subject: [PATCH] parse_invite binding --- sphinx-ffi/Cargo.toml | 2 +- sphinx-ffi/src/auto.rs | 21 +++++++++++++++---- sphinx-ffi/src/sphinxrs.swift | 19 ++++++++++++++--- sphinx-ffi/src/sphinxrs.udl | 4 +++- sphinx-ffi/src/sphinxrsFFI.h | 7 ++++++- sphinx-ffi/src/uniffi/sphinxrs/sphinxrs.kt | 24 ++++++++++++++++++---- 6 files changed, 63 insertions(+), 14 deletions(-) diff --git a/sphinx-ffi/Cargo.toml b/sphinx-ffi/Cargo.toml index 7a38596..8d9f594 100644 --- a/sphinx-ffi/Cargo.toml +++ b/sphinx-ffi/Cargo.toml @@ -25,7 +25,7 @@ sphinx-signer = { path = "../signer", default-features = false, features = [ "no-native", ] } sphinx-glyph = { path = "../glyph", default-features = false } -sphinx = { git = "https://github.com/stakwork/sphinx", rev = "41d77db5c28674508e6c37fb7de826a28ef70e4b", features = [ +sphinx = { git = "https://github.com/stakwork/sphinx", rev = "184f43d71765eb806d94245f9d804d2a9ff91562", features = [ "msg", "bindings", ] } diff --git a/sphinx-ffi/src/auto.rs b/sphinx-ffi/src/auto.rs index b7733b6..99fcb44 100644 --- a/sphinx-ffi/src/auto.rs +++ b/sphinx-ffi/src/auto.rs @@ -155,10 +155,17 @@ pub fn get_tribe_management_topic( ) } -pub fn initial_setup(seed: String, unique_time: String, full_state: Vec) -> Result { - Ok(bindings::initial_setup(&seed, &unique_time, &full_state) - .map_err(|e| SphinxError::HandleFailed { r: e.to_string() })? - .into()) +pub fn initial_setup( + seed: String, + unique_time: String, + full_state: Vec, + device: String, +) -> Result { + Ok( + bindings::initial_setup(&seed, &unique_time, &full_state, &device) + .map_err(|e| SphinxError::HandleFailed { r: e.to_string() })? + .into(), + ) } pub fn fetch_msgs( @@ -473,6 +480,12 @@ pub fn process_invite( ) } +pub fn parse_invite(invite_qr: String) -> Result { + Ok(bindings::parse_invite(&invite_qr) + .map_err(|e| SphinxError::SendFailed { r: e.to_string() })? + .into()) +} + pub fn code_from_invite(invite_qr: String) -> Result { Ok(bindings::code_from_invite(&invite_qr) .map_err(|e| SphinxError::SendFailed { r: e.to_string() })?) diff --git a/sphinx-ffi/src/sphinxrs.swift b/sphinx-ffi/src/sphinxrs.swift index f0a86a4..d960e36 100644 --- a/sphinx-ffi/src/sphinxrs.swift +++ b/sphinx-ffi/src/sphinxrs.swift @@ -1856,13 +1856,14 @@ public func `getTribeManagementTopic`(`seed`: String, `uniqueTime`: String, `sta ) } -public func `initialSetup`(`seed`: String, `uniqueTime`: String, `state`: Data) throws -> RunReturn { +public func `initialSetup`(`seed`: String, `uniqueTime`: String, `state`: Data, `device`: String) throws -> RunReturn { return try FfiConverterTypeRunReturn.lift( try rustCallWithError(FfiConverterTypeSphinxError.lift) { uniffi_sphinxrs_fn_func_initial_setup( FfiConverterString.lower(`seed`), FfiConverterString.lower(`uniqueTime`), - FfiConverterData.lower(`state`),$0) + FfiConverterData.lower(`state`), + FfiConverterString.lower(`device`),$0) } ) } @@ -2103,6 +2104,15 @@ public func `processInvite`(`seed`: String, `uniqueTime`: String, `state`: Data, ) } +public func `parseInvite`(`inviteQr`: String) throws -> RunReturn { + return try FfiConverterTypeRunReturn.lift( + try rustCallWithError(FfiConverterTypeSphinxError.lift) { + uniffi_sphinxrs_fn_func_parse_invite( + FfiConverterString.lower(`inviteQr`),$0) +} + ) +} + public func `codeFromInvite`(`inviteQr`: String) throws -> String { return try FfiConverterString.lift( try rustCallWithError(FfiConverterTypeSphinxError.lift) { @@ -2374,7 +2384,7 @@ private var initializationResult: InitializationResult { if (uniffi_sphinxrs_checksum_func_get_tribe_management_topic() != 29476) { return InitializationResult.apiChecksumMismatch } - if (uniffi_sphinxrs_checksum_func_initial_setup() != 63727) { + if (uniffi_sphinxrs_checksum_func_initial_setup() != 30402) { return InitializationResult.apiChecksumMismatch } if (uniffi_sphinxrs_checksum_func_fetch_msgs() != 12460) { @@ -2428,6 +2438,9 @@ private var initializationResult: InitializationResult { if (uniffi_sphinxrs_checksum_func_process_invite() != 52237) { return InitializationResult.apiChecksumMismatch } + if (uniffi_sphinxrs_checksum_func_parse_invite() != 20297) { + return InitializationResult.apiChecksumMismatch + } if (uniffi_sphinxrs_checksum_func_code_from_invite() != 40279) { return InitializationResult.apiChecksumMismatch } diff --git a/sphinx-ffi/src/sphinxrs.udl b/sphinx-ffi/src/sphinxrs.udl index 832a167..b2a83ea 100644 --- a/sphinx-ffi/src/sphinxrs.udl +++ b/sphinx-ffi/src/sphinxrs.udl @@ -160,7 +160,7 @@ namespace sphinxrs { [Throws=SphinxError] string get_tribe_management_topic(string seed, string unique_time, bytes state); [Throws=SphinxError] - RunReturn initial_setup(string seed, string unique_time, bytes state); + RunReturn initial_setup(string seed, string unique_time, bytes state, string device); [Throws=SphinxError] RunReturn fetch_msgs(string seed, string unique_time, bytes state, u64 last_msg_idx, u32? limit); [Throws=SphinxError] @@ -196,6 +196,8 @@ namespace sphinxrs { [Throws=SphinxError] RunReturn process_invite(string seed, string unique_time, bytes state, string invite_qr); [Throws=SphinxError] + RunReturn parse_invite(string invite_qr); + [Throws=SphinxError] string code_from_invite(string invite_qr); [Throws=SphinxError] string get_default_tribe_server(bytes state); diff --git a/sphinx-ffi/src/sphinxrsFFI.h b/sphinx-ffi/src/sphinxrsFFI.h index f6d1aa0..2d626ce 100644 --- a/sphinx-ffi/src/sphinxrsFFI.h +++ b/sphinx-ffi/src/sphinxrsFFI.h @@ -135,7 +135,7 @@ RustBuffer uniffi_sphinxrs_fn_func_contact_pubkey_by_encrypted_child(RustBuffer ); RustBuffer uniffi_sphinxrs_fn_func_get_tribe_management_topic(RustBuffer seed, RustBuffer unique_time, RustBuffer state, RustCallStatus *_Nonnull out_status ); -RustBuffer uniffi_sphinxrs_fn_func_initial_setup(RustBuffer seed, RustBuffer unique_time, RustBuffer state, RustCallStatus *_Nonnull out_status +RustBuffer uniffi_sphinxrs_fn_func_initial_setup(RustBuffer seed, RustBuffer unique_time, RustBuffer state, RustBuffer device, RustCallStatus *_Nonnull out_status ); RustBuffer uniffi_sphinxrs_fn_func_fetch_msgs(RustBuffer seed, RustBuffer unique_time, RustBuffer state, uint64_t last_msg_idx, RustBuffer limit, RustCallStatus *_Nonnull out_status ); @@ -171,6 +171,8 @@ RustBuffer uniffi_sphinxrs_fn_func_make_invite(RustBuffer seed, RustBuffer uniqu ); RustBuffer uniffi_sphinxrs_fn_func_process_invite(RustBuffer seed, RustBuffer unique_time, RustBuffer state, RustBuffer invite_qr, RustCallStatus *_Nonnull out_status ); +RustBuffer uniffi_sphinxrs_fn_func_parse_invite(RustBuffer invite_qr, RustCallStatus *_Nonnull out_status +); RustBuffer uniffi_sphinxrs_fn_func_code_from_invite(RustBuffer invite_qr, RustCallStatus *_Nonnull out_status ); RustBuffer uniffi_sphinxrs_fn_func_get_default_tribe_server(RustBuffer state, RustCallStatus *_Nonnull out_status @@ -364,6 +366,9 @@ uint16_t uniffi_sphinxrs_checksum_func_make_invite(void ); uint16_t uniffi_sphinxrs_checksum_func_process_invite(void +); +uint16_t uniffi_sphinxrs_checksum_func_parse_invite(void + ); uint16_t uniffi_sphinxrs_checksum_func_code_from_invite(void diff --git a/sphinx-ffi/src/uniffi/sphinxrs/sphinxrs.kt b/sphinx-ffi/src/uniffi/sphinxrs/sphinxrs.kt index 97eff35..6ec76ea 100644 --- a/sphinx-ffi/src/uniffi/sphinxrs/sphinxrs.kt +++ b/sphinx-ffi/src/uniffi/sphinxrs/sphinxrs.kt @@ -436,7 +436,7 @@ internal interface _UniFFILib : Library { ): RustBuffer.ByValue fun uniffi_sphinxrs_fn_func_get_tribe_management_topic(`seed`: RustBuffer.ByValue,`uniqueTime`: RustBuffer.ByValue,`state`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, ): RustBuffer.ByValue - fun uniffi_sphinxrs_fn_func_initial_setup(`seed`: RustBuffer.ByValue,`uniqueTime`: RustBuffer.ByValue,`state`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, + fun uniffi_sphinxrs_fn_func_initial_setup(`seed`: RustBuffer.ByValue,`uniqueTime`: RustBuffer.ByValue,`state`: RustBuffer.ByValue,`device`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, ): RustBuffer.ByValue fun uniffi_sphinxrs_fn_func_fetch_msgs(`seed`: RustBuffer.ByValue,`uniqueTime`: RustBuffer.ByValue,`state`: RustBuffer.ByValue,`lastMsgIdx`: Long,`limit`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, ): RustBuffer.ByValue @@ -472,6 +472,8 @@ internal interface _UniFFILib : Library { ): RustBuffer.ByValue fun uniffi_sphinxrs_fn_func_process_invite(`seed`: RustBuffer.ByValue,`uniqueTime`: RustBuffer.ByValue,`state`: RustBuffer.ByValue,`inviteQr`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, ): RustBuffer.ByValue + fun uniffi_sphinxrs_fn_func_parse_invite(`inviteQr`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, + ): RustBuffer.ByValue fun uniffi_sphinxrs_fn_func_code_from_invite(`inviteQr`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, ): RustBuffer.ByValue fun uniffi_sphinxrs_fn_func_get_default_tribe_server(`state`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, @@ -612,6 +614,8 @@ internal interface _UniFFILib : Library { ): Short fun uniffi_sphinxrs_checksum_func_process_invite( ): Short + fun uniffi_sphinxrs_checksum_func_parse_invite( + ): Short fun uniffi_sphinxrs_checksum_func_code_from_invite( ): Short fun uniffi_sphinxrs_checksum_func_get_default_tribe_server( @@ -761,7 +765,7 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) { if (lib.uniffi_sphinxrs_checksum_func_get_tribe_management_topic() != 29476.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } - if (lib.uniffi_sphinxrs_checksum_func_initial_setup() != 63727.toShort()) { + if (lib.uniffi_sphinxrs_checksum_func_initial_setup() != 30402.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } if (lib.uniffi_sphinxrs_checksum_func_fetch_msgs() != 12460.toShort()) { @@ -815,6 +819,9 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) { if (lib.uniffi_sphinxrs_checksum_func_process_invite() != 52237.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } + if (lib.uniffi_sphinxrs_checksum_func_parse_invite() != 20297.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } if (lib.uniffi_sphinxrs_checksum_func_code_from_invite() != 40279.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } @@ -2480,10 +2487,10 @@ fun `getTribeManagementTopic`(`seed`: String, `uniqueTime`: String, `state`: Byt @Throws(SphinxException::class) -fun `initialSetup`(`seed`: String, `uniqueTime`: String, `state`: ByteArray): RunReturn { +fun `initialSetup`(`seed`: String, `uniqueTime`: String, `state`: ByteArray, `device`: String): RunReturn { return FfiConverterTypeRunReturn.lift( rustCallWithError(SphinxException) { _status -> - _UniFFILib.INSTANCE.uniffi_sphinxrs_fn_func_initial_setup(FfiConverterString.lower(`seed`),FfiConverterString.lower(`uniqueTime`),FfiConverterByteArray.lower(`state`),_status) + _UniFFILib.INSTANCE.uniffi_sphinxrs_fn_func_initial_setup(FfiConverterString.lower(`seed`),FfiConverterString.lower(`uniqueTime`),FfiConverterByteArray.lower(`state`),FfiConverterString.lower(`device`),_status) }) } @@ -2642,6 +2649,15 @@ fun `processInvite`(`seed`: String, `uniqueTime`: String, `state`: ByteArray, `i @Throws(SphinxException::class) +fun `parseInvite`(`inviteQr`: String): RunReturn { + return FfiConverterTypeRunReturn.lift( + rustCallWithError(SphinxException) { _status -> + _UniFFILib.INSTANCE.uniffi_sphinxrs_fn_func_parse_invite(FfiConverterString.lower(`inviteQr`),_status) +}) +} + +@Throws(SphinxException::class) + fun `codeFromInvite`(`inviteQr`: String): String { return FfiConverterString.lift( rustCallWithError(SphinxException) { _status ->