diff --git a/README.md b/README.md index 5acdea5..fc2aa73 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ npm install @synonymdev/react-native-pubky - [x] [parseAuthUrl](#parseAuthUrl): Method to decode an authUrl. - [x] [publish](#publish): Functionality to publish content. - [x] [resolve](#resolve): Functionality to resolve content. +- [x] [publishHttps](#publishHttps): Publish HTTPS records. +- [x] [resolveHttps](#resolveHttps): Resolve HTTPS records. ### Methods to be Implemented - [ ] signIn: Sign-in to a homeserver. - [ ] signUp: Sign-up to a homeserver and update Pkarr accordingly. @@ -78,6 +80,36 @@ if (resolveRes.isErr()) { console.log(resolveRes.value); ``` +### publishHttps +```js +import { publishHttps } from '@synonymdev/react-native-pubky'; + +const publishHttpsRes = await publishHttps( + 'example.com', // Record Name + 'target.example.com', // Target + 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' // Secret Key +); +if (publishHttpsRes.isErr()) { + console.log(publishHttpsRes.error.message); + return; +} +console.log(publishHttpsRes.value); +``` + +### resolveHttps +```js +import { resolveHttps } from '@synonymdev/react-native-pubky'; + +const resolveHttpsRes = await resolveHttps( + 'z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty' // Public key +); +if (resolveHttpsRes.isErr()) { + console.log(resolveHttpsRes.error.message); + return; +} +console.log(resolveHttpsRes.value); +``` + ## Local Installation 1. Clone & npm install: diff --git a/android/src/main/java/com/pubky/PubkyModule.kt b/android/src/main/java/com/pubky/PubkyModule.kt index 05247d5..e872188 100644 --- a/android/src/main/java/com/pubky/PubkyModule.kt +++ b/android/src/main/java/com/pubky/PubkyModule.kt @@ -18,6 +18,8 @@ import uniffi.pubkymobile.signIn import uniffi.pubkymobile.signOut import uniffi.pubkymobile.put import uniffi.pubkymobile.get +import uniffi.pubkymobile.publishHttps +import uniffi.pubkymobile.resolveHttps class PubkyModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { @@ -191,6 +193,44 @@ class PubkyModule(reactContext: ReactApplicationContext) : } } + @ReactMethod + fun publishHttps(recordName: String, target: String, secretKey: String, promise: Promise) { + CoroutineScope(Dispatchers.IO).launch { + try { + val result = publishHttps(recordName, target, secretKey) + val array = Arguments.createArray().apply { + result.forEach { pushString(it) } + } + withContext(Dispatchers.Main) { + promise.resolve(array) + } + } catch (e: Exception) { + withContext(Dispatchers.Main) { + promise.reject("Error", e.message) + } + } + } + } + + @ReactMethod + fun resolveHttps(publicKey: String, promise: Promise) { + CoroutineScope(Dispatchers.IO).launch { + try { + val result = resolveHttps(publicKey) + val array = Arguments.createArray().apply { + result.forEach { pushString(it) } + } + withContext(Dispatchers.Main) { + promise.resolve(array) + } + } catch (e: Exception) { + withContext(Dispatchers.Main) { + promise.reject("Error", e.message) + } + } + } + } + companion object { const val NAME = "Pubky" } diff --git a/android/src/main/java/uniffi/pubkymobile/pubkymobile.kt b/android/src/main/java/uniffi/pubkymobile/pubkymobile.kt index 5cc31ef..b5382fc 100644 --- a/android/src/main/java/uniffi/pubkymobile/pubkymobile.kt +++ b/android/src/main/java/uniffi/pubkymobile/pubkymobile.kt @@ -393,10 +393,14 @@ internal interface _UniFFILib : Library { ): RustBuffer.ByValue fun uniffi_pubkymobile_fn_func_publish(`recordName`: RustBuffer.ByValue,`recordContent`: RustBuffer.ByValue,`secretKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, ): RustBuffer.ByValue + fun uniffi_pubkymobile_fn_func_publish_https(`recordName`: RustBuffer.ByValue,`target`: RustBuffer.ByValue,`secretKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, + ): RustBuffer.ByValue fun uniffi_pubkymobile_fn_func_put(`url`: RustBuffer.ByValue,`content`: RustBuffer.ByValue, ): Pointer fun uniffi_pubkymobile_fn_func_resolve(`publicKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, ): RustBuffer.ByValue + fun uniffi_pubkymobile_fn_func_resolve_https(`publicKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, + ): RustBuffer.ByValue fun uniffi_pubkymobile_fn_func_sign_in(`secretKey`: RustBuffer.ByValue, ): Pointer fun uniffi_pubkymobile_fn_func_sign_out(`secretKey`: RustBuffer.ByValue, @@ -525,10 +529,14 @@ internal interface _UniFFILib : Library { ): Short fun uniffi_pubkymobile_checksum_func_publish( ): Short + fun uniffi_pubkymobile_checksum_func_publish_https( + ): Short fun uniffi_pubkymobile_checksum_func_put( ): Short fun uniffi_pubkymobile_checksum_func_resolve( ): Short + fun uniffi_pubkymobile_checksum_func_resolve_https( + ): Short fun uniffi_pubkymobile_checksum_func_sign_in( ): Short fun uniffi_pubkymobile_checksum_func_sign_out( @@ -564,12 +572,18 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) { if (lib.uniffi_pubkymobile_checksum_func_publish() != 20156.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } + if (lib.uniffi_pubkymobile_checksum_func_publish_https() != 14705.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } if (lib.uniffi_pubkymobile_checksum_func_put() != 47594.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } if (lib.uniffi_pubkymobile_checksum_func_resolve() != 18303.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } + if (lib.uniffi_pubkymobile_checksum_func_resolve_https() != 34593.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } if (lib.uniffi_pubkymobile_checksum_func_sign_in() != 53969.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } @@ -751,6 +765,14 @@ fun `publish`(`recordName`: String, `recordContent`: String, `secretKey`: String } +fun `publishHttps`(`recordName`: String, `target`: String, `secretKey`: String): List { + return FfiConverterSequenceString.lift( + rustCall() { _status -> + _UniFFILib.INSTANCE.uniffi_pubkymobile_fn_func_publish_https(FfiConverterString.lower(`recordName`),FfiConverterString.lower(`target`),FfiConverterString.lower(`secretKey`),_status) +}) +} + + @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE") suspend fun `put`(`url`: String, `content`: String) : List { return uniffiRustCallAsync( @@ -773,6 +795,14 @@ fun `resolve`(`publicKey`: String): List { } +fun `resolveHttps`(`publicKey`: String): List { + return FfiConverterSequenceString.lift( + rustCall() { _status -> + _UniFFILib.INSTANCE.uniffi_pubkymobile_fn_func_resolve_https(FfiConverterString.lower(`publicKey`),_status) +}) +} + + @Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE") suspend fun `signIn`(`secretKey`: String) : List { return uniffiRustCallAsync( diff --git a/android/src/main/jniLibs/arm64-v8a/libpubkymobile.so b/android/src/main/jniLibs/arm64-v8a/libpubkymobile.so index 4f9e38d..4092437 100755 Binary files a/android/src/main/jniLibs/arm64-v8a/libpubkymobile.so and b/android/src/main/jniLibs/arm64-v8a/libpubkymobile.so differ diff --git a/android/src/main/jniLibs/armeabi-v7a/libpubkymobile.so b/android/src/main/jniLibs/armeabi-v7a/libpubkymobile.so index 8973192..8dc1d34 100755 Binary files a/android/src/main/jniLibs/armeabi-v7a/libpubkymobile.so and b/android/src/main/jniLibs/armeabi-v7a/libpubkymobile.so differ diff --git a/android/src/main/jniLibs/x86/libpubkymobile.so b/android/src/main/jniLibs/x86/libpubkymobile.so index 5138553..c87cd3f 100755 Binary files a/android/src/main/jniLibs/x86/libpubkymobile.so and b/android/src/main/jniLibs/x86/libpubkymobile.so differ diff --git a/android/src/main/jniLibs/x86_64/libpubkymobile.so b/android/src/main/jniLibs/x86_64/libpubkymobile.so index cefb145..769dce7 100755 Binary files a/android/src/main/jniLibs/x86_64/libpubkymobile.so and b/android/src/main/jniLibs/x86_64/libpubkymobile.so differ diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 580b02e..3b49eea 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1237,7 +1237,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-pubky (0.4.0): + - react-native-pubky (0.5.0): - DoubleConversion - glog - hermes-engine @@ -1757,7 +1757,7 @@ SPEC CHECKSUMS: React-logger: 4072f39df335ca443932e0ccece41fbeb5ca8404 React-Mapbuffer: 714f2fae68edcabfc332b754e9fbaa8cfc68fdd4 React-microtasksnativemodule: 4943ad8f99be8ccf5a63329fa7d269816609df9e - react-native-pubky: d9834542073d368f48e8f0bcce3d7d92317159fa + react-native-pubky: 6eb6e656a9c7bfc4310556c142db5861a2fe5b7f React-nativeconfig: 4a9543185905fe41014c06776bf126083795aed9 React-NativeModulesApple: 0506da59fc40d2e1e6e12a233db5e81c46face27 React-perflogger: 3bbb82f18e9ac29a1a6931568e99d6305ef4403b diff --git a/example/src/App.tsx b/example/src/App.tsx index 395446c..633185e 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -9,6 +9,8 @@ import { signOut, put, get, + resolveHttps, + publishHttps, } from '@synonymdev/react-native-pubky'; export default function App() { @@ -167,6 +169,44 @@ export default function App() { } }} /> + +