diff --git a/README.md b/README.md index 5e10e48..0e4bed6 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,8 @@ npm install @synonymdev/react-native-pubky ## Implementation Status ### Implemented Methods - [x] [auth](#auth): Authentication functionality. +- [x] [parseAuthUrl](#parseAuthUrl): Method to decode an authUrl. ### Methods to be Implemented -- [ ] parseAuthUrl: Method to decode an authUrl. - [ ] publish: Functionality to publish content. - [ ] resolve: Functionality to resolve content. - [ ] signIn: Functionality to sign in. @@ -31,6 +31,18 @@ if (authRes.isErr()) { } console.log(authRes.value); ``` +### parseAuthUrl +```js +import { parseAuthUrl } from '@synonymdev/react-native-pubky'; + +const pubkyAuthUrl = 'pubkyauth:///?relay=https://demo.httprelay.io/link&capabilities=/pub/pubky.app:rw,/pub/example.com/nested:rw&secret=FyzJ3gJ1W7boyFZC1Do9fYrRmDNgCLNRwEu_gaBgPUA'; +const parseRes = await parseAuthUrl(pubkyAuthUrl); +if (parseRes.isErr()) { + console.log(parseRes.error.message); + return; +} +console.log(parseRes.value); +``` ## Local Installation diff --git a/android/src/main/java/com/pubky/PubkyModule.kt b/android/src/main/java/com/pubky/PubkyModule.kt index 9d727c2..95237a4 100644 --- a/android/src/main/java/com/pubky/PubkyModule.kt +++ b/android/src/main/java/com/pubky/PubkyModule.kt @@ -10,6 +10,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import uniffi.pubkymobile.auth +import uniffi.pubkymobile.parseAuthUrl class PubkyModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { @@ -37,6 +38,19 @@ class PubkyModule(reactContext: ReactApplicationContext) : } } + @ReactMethod + fun parseAuthUrl(url: String, promise: Promise) { + try { + val result = parseAuthUrl(url) + val array = Arguments.createArray().apply { + result.forEach { pushString(it) } + } + promise.resolve(array) + } catch (e: Exception) { + 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 20cae78..46a4c9b 100644 --- a/android/src/main/java/uniffi/pubkymobile/pubkymobile.kt +++ b/android/src/main/java/uniffi/pubkymobile/pubkymobile.kt @@ -387,6 +387,8 @@ internal interface _UniFFILib : Library { fun uniffi_pubkymobile_fn_func_auth(`url`: RustBuffer.ByValue,`secretKey`: RustBuffer.ByValue, ): Pointer + fun uniffi_pubkymobile_fn_func_parse_auth_url(`url`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus, + ): RustBuffer.ByValue fun ffi_pubkymobile_rustbuffer_alloc(`size`: Int,_uniffi_out_err: RustCallStatus, ): RustBuffer.ByValue fun ffi_pubkymobile_rustbuffer_from_bytes(`bytes`: ForeignBytes.ByValue,_uniffi_out_err: RustCallStatus, @@ -503,6 +505,8 @@ internal interface _UniFFILib : Library { ): Unit fun uniffi_pubkymobile_checksum_func_auth( ): Short + fun uniffi_pubkymobile_checksum_func_parse_auth_url( + ): Short fun ffi_pubkymobile_uniffi_contract_version( ): Int @@ -523,6 +527,9 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) { if (lib.uniffi_pubkymobile_checksum_func_auth() != 46918.toShort()) { throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") } + if (lib.uniffi_pubkymobile_checksum_func_parse_auth_url() != 29088.toShort()) { + throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project") + } } // Async support @@ -671,3 +678,11 @@ suspend fun `auth`(`url`: String, `secretKey`: String) : List { ) } +fun `parseAuthUrl`(`url`: String): List { + return FfiConverterSequenceString.lift( + rustCall() { _status -> + _UniFFILib.INSTANCE.uniffi_pubkymobile_fn_func_parse_auth_url(FfiConverterString.lower(`url`),_status) +}) +} + + diff --git a/android/src/main/jniLibs/arm64-v8a/libpubkymobile.so b/android/src/main/jniLibs/arm64-v8a/libpubkymobile.so index 8c9fed6..0b51049 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 42b0eaf..aa8fc8f 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 f330c3a..6623f56 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 df6893e..fb2bafc 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 fdb1fe6..134024d 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.1.0): + - react-native-pubky (0.2.0): - DoubleConversion - glog - hermes-engine @@ -1757,7 +1757,7 @@ SPEC CHECKSUMS: React-logger: 4072f39df335ca443932e0ccece41fbeb5ca8404 React-Mapbuffer: 714f2fae68edcabfc332b754e9fbaa8cfc68fdd4 React-microtasksnativemodule: 4943ad8f99be8ccf5a63329fa7d269816609df9e - react-native-pubky: 10845f4997bf81181a4f915d22642d04492daec7 + react-native-pubky: 9fb377be57b3f0ee6a91aca7e2e6a754a756f11b React-nativeconfig: 4a9543185905fe41014c06776bf126083795aed9 React-NativeModulesApple: 0506da59fc40d2e1e6e12a233db5e81c46face27 React-perflogger: 3bbb82f18e9ac29a1a6931568e99d6305ef4403b diff --git a/example/src/App.tsx b/example/src/App.tsx index 16f55c3..1a91ceb 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -1,33 +1,9 @@ import { StyleSheet, View, Button } from 'react-native'; -import { auth } from '@synonymdev/react-native-pubky'; -import { getAddress } from 'react-native-address-generator'; - +import { auth, parseAuthUrl } from '@synonymdev/react-native-pubky'; export default function App() { return ( -