Skip to content

Commit

Permalink
parsedinvite, code on initial_setup
Browse files Browse the repository at this point in the history
  • Loading branch information
Evanfeenstra committed May 29, 2024
1 parent ece9db7 commit 89cf696
Show file tree
Hide file tree
Showing 6 changed files with 171 additions and 20 deletions.
2 changes: 1 addition & 1 deletion sphinx-ffi/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 = "184f43d71765eb806d94245f9d804d2a9ff91562", features = [
sphinx = { git = "https://github.com/stakwork/sphinx", rev = "1d957ba895fee51f672a0505daa1d8717591a857", features = [
"msg",
"bindings",
] }
Expand Down
28 changes: 25 additions & 3 deletions sphinx-ffi/src/auto.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ pub struct Msg {
pub payment_hash: Option<String>,
}

pub struct ParsedInvite {
pub code: String,
pub inviter_contact_info: Option<String>,
pub inviter_alias: Option<String>,
pub initial_tribe: Option<String>,
pub lsp_host: Option<String>,
}

pub struct RunReturn {
pub msgs: Vec<Msg>,
pub msgs_total: Option<u64>,
Expand Down Expand Up @@ -160,9 +168,10 @@ pub fn initial_setup(
unique_time: String,
full_state: Vec<u8>,
device: String,
code: Option<String>,
) -> Result<RunReturn> {
Ok(
bindings::initial_setup(&seed, &unique_time, &full_state, &device)
bindings::initial_setup(&seed, &unique_time, &full_state, &device, code)
.map_err(|e| SphinxError::HandleFailed { r: e.to_string() })?
.into(),
)
Expand Down Expand Up @@ -380,7 +389,8 @@ pub fn payment_hash_from_invoice(bolt11: String) -> Result<String> {

pub fn parse_invoice(bolt11: String) -> Result<String> {
Ok(bindings::parse_invoice(&bolt11)
.map_err(|e| SphinxError::SendFailed { r: e.to_string() })?)
.map_err(|e| SphinxError::SendFailed { r: e.to_string() })?
.into())
}

pub fn create_tribe(
Expand Down Expand Up @@ -480,7 +490,7 @@ pub fn process_invite(
)
}

pub fn parse_invite(invite_qr: String) -> Result<RunReturn> {
pub fn parse_invite(invite_qr: String) -> Result<ParsedInvite> {
Ok(bindings::parse_invite(&invite_qr)
.map_err(|e| SphinxError::SendFailed { r: e.to_string() })?
.into())
Expand Down Expand Up @@ -658,6 +668,18 @@ impl From<bindings::Msg> for Msg {
}
}

impl From<bindings::ParsedInvite> for ParsedInvite {
fn from(rr: bindings::ParsedInvite) -> Self {
ParsedInvite {
code: rr.code,
inviter_contact_info: rr.inviter_contact_info,
inviter_alias: rr.inviter_alias,
initial_tribe: rr.initial_tribe,
lsp_host: rr.lsp_host,
}
}
}

impl From<bindings::RunReturn> for RunReturn {
fn from(rr: bindings::RunReturn) -> Self {
RunReturn {
Expand Down
92 changes: 86 additions & 6 deletions sphinx-ffi/src/sphinxrs.swift
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,85 @@ public func FfiConverterTypeMsg_lower(_ value: Msg) -> RustBuffer {
}


public struct ParsedInvite {
public var `code`: String
public var `inviterContactInfo`: String?
public var `inviterAlias`: String?
public var `initialTribe`: String?
public var `lspHost`: String?

// Default memberwise initializers are never public by default, so we
// declare one manually.
public init(`code`: String, `inviterContactInfo`: String?, `inviterAlias`: String?, `initialTribe`: String?, `lspHost`: String?) {
self.`code` = `code`
self.`inviterContactInfo` = `inviterContactInfo`
self.`inviterAlias` = `inviterAlias`
self.`initialTribe` = `initialTribe`
self.`lspHost` = `lspHost`
}
}


extension ParsedInvite: Equatable, Hashable {
public static func ==(lhs: ParsedInvite, rhs: ParsedInvite) -> Bool {
if lhs.`code` != rhs.`code` {
return false
}
if lhs.`inviterContactInfo` != rhs.`inviterContactInfo` {
return false
}
if lhs.`inviterAlias` != rhs.`inviterAlias` {
return false
}
if lhs.`initialTribe` != rhs.`initialTribe` {
return false
}
if lhs.`lspHost` != rhs.`lspHost` {
return false
}
return true
}

public func hash(into hasher: inout Hasher) {
hasher.combine(`code`)
hasher.combine(`inviterContactInfo`)
hasher.combine(`inviterAlias`)
hasher.combine(`initialTribe`)
hasher.combine(`lspHost`)
}
}


public struct FfiConverterTypeParsedInvite: FfiConverterRustBuffer {
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> ParsedInvite {
return try ParsedInvite(
`code`: FfiConverterString.read(from: &buf),
`inviterContactInfo`: FfiConverterOptionString.read(from: &buf),
`inviterAlias`: FfiConverterOptionString.read(from: &buf),
`initialTribe`: FfiConverterOptionString.read(from: &buf),
`lspHost`: FfiConverterOptionString.read(from: &buf)
)
}

public static func write(_ value: ParsedInvite, into buf: inout [UInt8]) {
FfiConverterString.write(value.`code`, into: &buf)
FfiConverterOptionString.write(value.`inviterContactInfo`, into: &buf)
FfiConverterOptionString.write(value.`inviterAlias`, into: &buf)
FfiConverterOptionString.write(value.`initialTribe`, into: &buf)
FfiConverterOptionString.write(value.`lspHost`, into: &buf)
}
}


public func FfiConverterTypeParsedInvite_lift(_ buf: RustBuffer) throws -> ParsedInvite {
return try FfiConverterTypeParsedInvite.lift(buf)
}

public func FfiConverterTypeParsedInvite_lower(_ value: ParsedInvite) -> RustBuffer {
return FfiConverterTypeParsedInvite.lower(value)
}


public struct RunReturn {
public var `msgs`: [Msg]
public var `msgsTotal`: UInt64?
Expand Down Expand Up @@ -1856,14 +1935,15 @@ public func `getTribeManagementTopic`(`seed`: String, `uniqueTime`: String, `sta
)
}

public func `initialSetup`(`seed`: String, `uniqueTime`: String, `state`: Data, `device`: String) throws -> RunReturn {
public func `initialSetup`(`seed`: String, `uniqueTime`: String, `state`: Data, `device`: String, `inviteCode`: 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`),
FfiConverterString.lower(`device`),$0)
FfiConverterString.lower(`device`),
FfiConverterOptionString.lower(`inviteCode`),$0)
}
)
}
Expand Down Expand Up @@ -2104,8 +2184,8 @@ public func `processInvite`(`seed`: String, `uniqueTime`: String, `state`: Data,
)
}

public func `parseInvite`(`inviteQr`: String) throws -> RunReturn {
return try FfiConverterTypeRunReturn.lift(
public func `parseInvite`(`inviteQr`: String) throws -> ParsedInvite {
return try FfiConverterTypeParsedInvite.lift(
try rustCallWithError(FfiConverterTypeSphinxError.lift) {
uniffi_sphinxrs_fn_func_parse_invite(
FfiConverterString.lower(`inviteQr`),$0)
Expand Down Expand Up @@ -2384,7 +2464,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() != 30402) {
if (uniffi_sphinxrs_checksum_func_initial_setup() != 44485) {
return InitializationResult.apiChecksumMismatch
}
if (uniffi_sphinxrs_checksum_func_fetch_msgs() != 12460) {
Expand Down Expand Up @@ -2438,7 +2518,7 @@ private var initializationResult: InitializationResult {
if (uniffi_sphinxrs_checksum_func_process_invite() != 52237) {
return InitializationResult.apiChecksumMismatch
}
if (uniffi_sphinxrs_checksum_func_parse_invite() != 20297) {
if (uniffi_sphinxrs_checksum_func_parse_invite() != 63135) {
return InitializationResult.apiChecksumMismatch
}
if (uniffi_sphinxrs_checksum_func_code_from_invite() != 40279) {
Expand Down
12 changes: 10 additions & 2 deletions sphinx-ffi/src/sphinxrs.udl
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,14 @@ dictionary Msg {
string? payment_hash;
};

dictionary ParsedInvite {
string code;
string? inviter_contact_info;
string? inviter_alias;
string? initial_tribe;
string? lsp_host;
};

dictionary RunReturn {
sequence<Msg> msgs;
u64? msgs_total;
Expand Down Expand Up @@ -160,7 +168,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, string device);
RunReturn initial_setup(string seed, string unique_time, bytes state, string device, string? invite_code);
[Throws=SphinxError]
RunReturn fetch_msgs(string seed, string unique_time, bytes state, u64 last_msg_idx, u32? limit);
[Throws=SphinxError]
Expand Down Expand Up @@ -196,7 +204,7 @@ 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);
ParsedInvite parse_invite(string invite_qr);
[Throws=SphinxError]
string code_from_invite(string invite_qr);
[Throws=SphinxError]
Expand Down
2 changes: 1 addition & 1 deletion sphinx-ffi/src/sphinxrsFFI.h
Original file line number Diff line number Diff line change
Expand Up @@ -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, RustBuffer device, RustCallStatus *_Nonnull out_status
RustBuffer uniffi_sphinxrs_fn_func_initial_setup(RustBuffer seed, RustBuffer unique_time, RustBuffer state, RustBuffer device, RustBuffer invite_code, 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
);
Expand Down
55 changes: 48 additions & 7 deletions sphinx-ffi/src/uniffi/sphinxrs/sphinxrs.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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,`device`: 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,`inviteCode`: 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
Expand Down Expand Up @@ -765,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() != 30402.toShort()) {
if (lib.uniffi_sphinxrs_checksum_func_initial_setup() != 44485.toShort()) {
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
}
if (lib.uniffi_sphinxrs_checksum_func_fetch_msgs() != 12460.toShort()) {
Expand Down Expand Up @@ -819,7 +819,7 @@ 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()) {
if (lib.uniffi_sphinxrs_checksum_func_parse_invite() != 63135.toShort()) {
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
}
if (lib.uniffi_sphinxrs_checksum_func_code_from_invite() != 40279.toShort()) {
Expand Down Expand Up @@ -1122,6 +1122,47 @@ public object FfiConverterTypeMsg: FfiConverterRustBuffer<Msg> {



data class ParsedInvite (
var `code`: String,
var `inviterContactInfo`: String?,
var `inviterAlias`: String?,
var `initialTribe`: String?,
var `lspHost`: String?
) {

}

public object FfiConverterTypeParsedInvite: FfiConverterRustBuffer<ParsedInvite> {
override fun read(buf: ByteBuffer): ParsedInvite {
return ParsedInvite(
FfiConverterString.read(buf),
FfiConverterOptionalString.read(buf),
FfiConverterOptionalString.read(buf),
FfiConverterOptionalString.read(buf),
FfiConverterOptionalString.read(buf),
)
}

override fun allocationSize(value: ParsedInvite) = (
FfiConverterString.allocationSize(value.`code`) +
FfiConverterOptionalString.allocationSize(value.`inviterContactInfo`) +
FfiConverterOptionalString.allocationSize(value.`inviterAlias`) +
FfiConverterOptionalString.allocationSize(value.`initialTribe`) +
FfiConverterOptionalString.allocationSize(value.`lspHost`)
)

override fun write(value: ParsedInvite, buf: ByteBuffer) {
FfiConverterString.write(value.`code`, buf)
FfiConverterOptionalString.write(value.`inviterContactInfo`, buf)
FfiConverterOptionalString.write(value.`inviterAlias`, buf)
FfiConverterOptionalString.write(value.`initialTribe`, buf)
FfiConverterOptionalString.write(value.`lspHost`, buf)
}
}




data class RunReturn (
var `msgs`: List<Msg>,
var `msgsTotal`: ULong?,
Expand Down Expand Up @@ -2487,10 +2528,10 @@ fun `getTribeManagementTopic`(`seed`: String, `uniqueTime`: String, `state`: Byt

@Throws(SphinxException::class)

fun `initialSetup`(`seed`: String, `uniqueTime`: String, `state`: ByteArray, `device`: String): RunReturn {
fun `initialSetup`(`seed`: String, `uniqueTime`: String, `state`: ByteArray, `device`: String, `inviteCode`: 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`),FfiConverterString.lower(`device`),_status)
_UniFFILib.INSTANCE.uniffi_sphinxrs_fn_func_initial_setup(FfiConverterString.lower(`seed`),FfiConverterString.lower(`uniqueTime`),FfiConverterByteArray.lower(`state`),FfiConverterString.lower(`device`),FfiConverterOptionalString.lower(`inviteCode`),_status)
})
}

Expand Down Expand Up @@ -2649,8 +2690,8 @@ fun `processInvite`(`seed`: String, `uniqueTime`: String, `state`: ByteArray, `i

@Throws(SphinxException::class)

fun `parseInvite`(`inviteQr`: String): RunReturn {
return FfiConverterTypeRunReturn.lift(
fun `parseInvite`(`inviteQr`: String): ParsedInvite {
return FfiConverterTypeParsedInvite.lift(
rustCallWithError(SphinxException) { _status ->
_UniFFILib.INSTANCE.uniffi_sphinxrs_fn_func_parse_invite(FfiConverterString.lower(`inviteQr`),_status)
})
Expand Down

0 comments on commit 89cf696

Please sign in to comment.