Skip to content

Commit

Permalink
Merge pull request #432 from xmtp/np/update-v2-streaming
Browse files Browse the repository at this point in the history
Update all V2 to be backed by rust
  • Loading branch information
nplasterer authored Jul 1, 2024
2 parents 5852319 + 87e0503 commit ac0e0ad
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 34 deletions.
5 changes: 2 additions & 3 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,7 @@ repositories {
dependencies {
implementation project(':expo-modules-core')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${getKotlinVersion()}"
implementation "org.xmtp:android:0.11.2"
implementation "org.xmtp:android:0.14.1"
implementation 'com.google.code.gson:gson:2.10.1'
implementation 'com.facebook.react:react-native:0.71.3'
implementation "com.daveanthonythomas.moshipack:moshipack:1.0.1"
}
implementation "com.daveanthonythomas.moshipack:moshipack:1.0.1"}
41 changes: 23 additions & 18 deletions android/src/main/java/expo/modules/xmtpreactnativesdk/XMTPModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -299,20 +299,24 @@ class XMTPModule : Module() {

//
// Client API
AsyncFunction("canMessage") { clientAddress: String, peerAddress: String ->
logV("canMessage")
val client = clients[clientAddress] ?: throw XMTPException("No client")
AsyncFunction("canMessage") Coroutine { clientAddress: String, peerAddress: String ->
withContext(Dispatchers.IO) {
logV("canMessage")
val client = clients[clientAddress] ?: throw XMTPException("No client")

client.canMessage(peerAddress)
client.canMessage(peerAddress)
}
}

AsyncFunction("staticCanMessage") { peerAddress: String, environment: String, appVersion: String? ->
try {
logV("staticCanMessage")
val options = ClientOptions(api = apiEnvironments(environment, appVersion))
Client.canMessage(peerAddress = peerAddress, options = options)
} catch (e: Exception) {
throw XMTPException("Failed to create client: ${e.message}")
AsyncFunction("staticCanMessage") Coroutine { peerAddress: String, environment: String, appVersion: String? ->
withContext(Dispatchers.IO) {
try {
logV("staticCanMessage")
val options = ClientOptions(api = apiEnvironments(environment, appVersion))
Client.canMessage(peerAddress = peerAddress, options = options)
} catch (e: Exception) {
throw XMTPException("Failed to create client: ${e.message}")
}
}
}

Expand Down Expand Up @@ -583,14 +587,15 @@ class XMTPModule : Module() {

var consentProof: ConsentProofPayload? = null
if (consentProofPayload.isNotEmpty()) {
val consentProofDataBytes = consentProofPayload.foldIndexed(ByteArray(consentProofPayload.size)) { i, a, v ->
a.apply {
set(
i,
v.toByte()
)
val consentProofDataBytes =
consentProofPayload.foldIndexed(ByteArray(consentProofPayload.size)) { i, a, v ->
a.apply {
set(
i,
v.toByte()
)
}
}
}
consentProof = ConsentProofPayload.parseFrom(consentProofDataBytes)
}

Expand Down
18 changes: 9 additions & 9 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ PODS:
- hermes-engine/Pre-built (= 0.71.14)
- hermes-engine/Pre-built (0.71.14)
- libevent (2.1.12)
- LibXMTP (0.4.4-beta5)
- LibXMTP (0.5.4-beta0)
- Logging (1.0.0)
- MessagePacker (0.4.7)
- MMKV (1.3.5):
Expand Down Expand Up @@ -322,7 +322,7 @@ PODS:
- React-Core
- react-native-encrypted-storage (4.0.3):
- React-Core
- react-native-get-random-values (1.10.0):
- react-native-get-random-values (1.11.0):
- React-Core
- react-native-mmkv (2.11.0):
- MMKV (>= 1.2.13)
Expand Down Expand Up @@ -445,16 +445,16 @@ PODS:
- GenericJSON (~> 2.0)
- Logging (~> 1.0.0)
- secp256k1.swift (~> 0.1)
- XMTP (0.10.9):
- XMTP (0.13.0):
- Connect-Swift (= 0.12.0)
- GzipSwift
- LibXMTP (= 0.4.4-beta5)
- LibXMTP (= 0.5.4-beta0)
- web3.swift
- XMTPReactNative (0.1.0):
- ExpoModulesCore
- MessagePacker
- secp256k1.swift
- XMTP (= 0.10.9)
- XMTP (= 0.13.0)
- Yoga (1.14.0)

DEPENDENCIES:
Expand Down Expand Up @@ -701,7 +701,7 @@ SPEC CHECKSUMS:
GzipSwift: 893f3e48e597a1a4f62fafcb6514220fcf8287fa
hermes-engine: d7cc127932c89c53374452d6f93473f1970d8e88
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
LibXMTP: e2fb601691981900099551ff3e05621bd73dccf1
LibXMTP: 549e85c40f00957be3e114a823a2887cdcf5817a
Logging: 9ef4ecb546ad3169398d5a723bc9bea1c46bef26
MessagePacker: ab2fe250e86ea7aedd1a9ee47a37083edd41fd02
MMKV: 506311d0494023c2f7e0b62cc1f31b7370fa3cfb
Expand All @@ -724,7 +724,7 @@ SPEC CHECKSUMS:
react-native-blob-util: d8fa1a7f726867907a8e43163fdd8b441d4489ea
react-native-config: 86038147314e2e6d10ea9972022aa171e6b1d4d8
react-native-encrypted-storage: db300a3f2f0aba1e818417c1c0a6be549038deb7
react-native-get-random-values: 384787fd76976f5aec9465aff6fa9e9129af1e74
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
react-native-mmkv: e97c0c79403fb94577e5d902ab1ebd42b0715b43
react-native-netinfo: 8a7fd3f7130ef4ad2fb4276d5c9f8d3f28d2df3d
react-native-quick-base64: 777057ea4286f806b00259ede65dc79c7c706320
Expand All @@ -751,8 +751,8 @@ SPEC CHECKSUMS:
secp256k1.swift: a7e7a214f6db6ce5db32cc6b2b45e5c4dd633634
SwiftProtobuf: 407a385e97fd206c4fbe880cc84123989167e0d1
web3.swift: 2263d1e12e121b2c42ffb63a5a7beb1acaf33959
XMTP: 5efac5f69327cc6a4ad5b1f1fb9624b9e8355efe
XMTPReactNative: 5c4baec31d5ef83e5e5a35c33c31e70524db620e
XMTP: fbcb4e36d906d220778a5a0727cab6fd912bbb1d
XMTPReactNative: 44fd251a95a87f5ced57cce617f0748f2d056940
Yoga: e71803b4c1fff832ccf9b92541e00f9b873119b9

PODFILE CHECKSUM: 95d6ace79946933ecf80684613842ee553dd76a2
Expand Down
2 changes: 1 addition & 1 deletion ios/Wrappers/ConversationWrapper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ struct ConversationWrapper {
"topic": conversation.topic,
"createdAt": UInt64(conversation.createdAt.timeIntervalSince1970 * 1000),
"context": context,
"peerAddress": conversation.peerAddress,
"peerAddress": try conversation.peerAddress,
"version": conversation.version == .v1 ? "v1" : "v2",
"conversationID": conversation.conversationID ?? "",
"keyMaterial": conversation.keyMaterial?.base64EncodedString() ?? "",
Expand Down
4 changes: 2 additions & 2 deletions ios/XMTPModule.swift
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ public class XMTPModule: Module {
guard let conversation = try await findConversation(clientAddress: clientAddress, topic: conversationTopic) else {
throw Error.conversationNotFound(conversationTopic)
}
return ConsentWrapper.consentStateToString(state: await conversation.consentState())
return ConsentWrapper.consentStateToString(state: try await conversation.consentState())
}

AsyncFunction("consentList") { (clientAddress: String) -> [String] in
Expand Down Expand Up @@ -682,7 +682,7 @@ public class XMTPModule: Module {
await subscriptionsManager.get(getConversationsKey(clientAddress: clientAddress))?.cancel()
await subscriptionsManager.set(getConversationsKey(clientAddress: clientAddress), Task {
do {
for try await conversation in await client.conversations.stream() {
for try await conversation in try await client.conversations.stream() {
try sendEvent("conversation", [
"clientAddress": clientAddress,
"conversation": ConversationWrapper.encodeToObj(conversation, client: client),
Expand Down
2 changes: 1 addition & 1 deletion ios/XMTPReactNative.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ Pod::Spec.new do |s|
s.source_files = "**/*.{h,m,swift}"
s.dependency 'secp256k1.swift'
s.dependency "MessagePacker"
s.dependency "XMTP", "= 0.10.9"
s.dependency "XMTP", "= 0.13.0"
end

0 comments on commit ac0e0ad

Please sign in to comment.