Skip to content

Commit

Permalink
Merge pull request #10 from xmtp/np/bump-latest-libxmtp
Browse files Browse the repository at this point in the history
Publish new libxmtp bindings
  • Loading branch information
nplasterer authored Feb 16, 2024
2 parents d2d0312 + 61c4888 commit db13df1
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 8 deletions.
4 changes: 2 additions & 2 deletions LibXMTP.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'LibXMTP'
s.version = '0.4.1-beta3'
s.version = '0.4.2-beta1'
s.summary = 'XMTP shared Rust code that powers cross-platform SDKs'

s.homepage = 'https://github.com/xmtp/libxmtp-swift'
Expand All @@ -10,7 +10,7 @@ Pod::Spec.new do |s|
s.platform = :ios, '13.0', :macos, '11.0'
s.swift_version = '5.3'

s.source = { :http => "https://github.com/xmtp/libxmtp/releases/download/swift-bindings-8c182f5/LibXMTPSwiftFFI.zip", :type => :zip }
s.source = { :http => "https://github.com/xmtp/libxmtp/releases/download/swift-bindings-f2eb822/LibXMTPSwiftFFI.zip", :type => :zip }
s.vendored_frameworks = 'LibXMTPRust.xcframework'
s.source_files = 'Sources/LibXMTP/**/*'
end
4 changes: 2 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ let package = Package(
),
.binaryTarget(
name: "LibXMTPSwiftFFI",
url: "https://github.com/xmtp/libxmtp/releases/download/swift-bindings-8c182f5/LibXMTPSwiftFFI.zip",
checksum: "7f553e4e3b8b2881f7e8623ac49c00d8e260df7f376a04b1f321a8872af24eff"
url: "https://github.com/xmtp/libxmtp/releases/download/swift-bindings-f2eb822/LibXMTPSwiftFFI.zip",
checksum: "12d472e239a1eb1619ab3e209abfd5d34555dde9633eb6dc466eb9f060ea4139"
),
.testTarget(name: "LibXMTPTests", dependencies: ["LibXMTP"]),
]
Expand Down
72 changes: 68 additions & 4 deletions Sources/LibXMTP/xmtpv3.swift
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,7 @@ private struct FfiConverterData: FfiConverterRustBuffer {
}

public protocol FfiConversationsProtocol {
func createGroup(accountAddresses: [String]) async throws -> FfiGroup
func createGroup(accountAddresses: [String], permissions: GroupPermissions?) async throws -> FfiGroup
func list(opts: FfiListConversationsOptions) async throws -> [FfiGroup]
func stream(callback: FfiConversationCallback) async throws -> FfiStreamCloser
func sync() async throws
Expand All @@ -445,12 +445,13 @@ public class FfiConversations: FfiConversationsProtocol {
try! rustCall { uniffi_xmtpv3_fn_free_fficonversations(pointer, $0) }
}

public func createGroup(accountAddresses: [String]) async throws -> FfiGroup {
public func createGroup(accountAddresses: [String], permissions: GroupPermissions?) async throws -> FfiGroup {
return try await uniffiRustCallAsync(
rustFutureFunc: {
uniffi_xmtpv3_fn_method_fficonversations_create_group(
self.pointer,
FfiConverterSequenceString.lower(accountAddresses)
FfiConverterSequenceString.lower(accountAddresses),
FfiConverterOptionTypeGroupPermissions.lower(permissions)
)
},
pollFunc: ffi_xmtpv3_rust_future_poll_pointer,
Expand Down Expand Up @@ -2008,6 +2009,48 @@ extension GenericError: Equatable, Hashable {}

extension GenericError: Error {}

// Note that we don't yet support `indirect` for enums.
// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion.
public enum GroupPermissions {
case everyoneIsAdmin
case groupCreatorIsAdmin
}

public struct FfiConverterTypeGroupPermissions: FfiConverterRustBuffer {
typealias SwiftType = GroupPermissions

public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> GroupPermissions {
let variant: Int32 = try readInt(&buf)
switch variant {
case 1: return .everyoneIsAdmin

case 2: return .groupCreatorIsAdmin

default: throw UniffiInternalError.unexpectedEnumCase
}
}

public static func write(_ value: GroupPermissions, into buf: inout [UInt8]) {
switch value {
case .everyoneIsAdmin:
writeInt(&buf, Int32(1))

case .groupCreatorIsAdmin:
writeInt(&buf, Int32(2))
}
}
}

public func FfiConverterTypeGroupPermissions_lift(_ buf: RustBuffer) throws -> GroupPermissions {
return try FfiConverterTypeGroupPermissions.lift(buf)
}

public func FfiConverterTypeGroupPermissions_lower(_ value: GroupPermissions) -> RustBuffer {
return FfiConverterTypeGroupPermissions.lower(value)
}

extension GroupPermissions: Equatable, Hashable {}

// Note that we don't yet support `indirect` for enums.
// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion.
public enum LegacyIdentitySource {
Expand Down Expand Up @@ -2708,6 +2751,27 @@ private struct FfiConverterOptionTypeFfiPagingInfo: FfiConverterRustBuffer {
}
}

private struct FfiConverterOptionTypeGroupPermissions: FfiConverterRustBuffer {
typealias SwiftType = GroupPermissions?

public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
guard let value = value else {
writeInt(&buf, Int8(0))
return
}
writeInt(&buf, Int8(1))
FfiConverterTypeGroupPermissions.write(value, into: &buf)
}

public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
switch try readInt(&buf) as Int8 {
case 0: return nil
case 1: return try FfiConverterTypeGroupPermissions.read(from: &buf)
default: throw UniffiInternalError.unexpectedOptionalTag
}
}
}

private struct FfiConverterSequenceBool: FfiConverterRustBuffer {
typealias SwiftType = [Bool]

Expand Down Expand Up @@ -3194,7 +3258,7 @@ private var initializationResult: InitializationResult {
if uniffi_xmtpv3_checksum_func_verify_k256_sha256() != 31332 {
return InitializationResult.apiChecksumMismatch
}
if uniffi_xmtpv3_checksum_method_fficonversations_create_group() != 45500 {
if uniffi_xmtpv3_checksum_method_fficonversations_create_group() != 16460 {
return InitializationResult.apiChecksumMismatch
}
if uniffi_xmtpv3_checksum_method_fficonversations_list() != 44067 {
Expand Down

0 comments on commit db13df1

Please sign in to comment.