diff --git a/README.md b/README.md
index 561c479..80b5f27 100644
--- a/README.md
+++ b/README.md
@@ -18,6 +18,7 @@ npm install @synonymdev/react-native-pubky
- [x] [resolveHttps](#resolveHttps): Resolve HTTPS records.
- [x] [getSignupToken](#getSignupToken): Get a signup token from a homeserver with admin credentials.
- [x] [signUp](#signUp): Sign-up to a homeserver and update Pkarr accordingly, with optional signup token support.
+- [x] [republishHomeserver](#republishHomeserver): Republish homeserver information to the DHT.
- [x] [signIn](#signIn): Sign-in to a homeserver.
- [x] [session](#session): Check the current session for a given Pubky in its homeserver.
- [x] [signOut](#signOut): Sign-out from a homeserver.
@@ -239,6 +240,21 @@ if (signUpWithTokenRes.isErr()) {
console.log(signUpWithTokenRes.value);
```
+### republishHomeserver
+```js
+import { republishHomeserver } from '@synonymdev/react-native-pubky';
+
+const republishRes = await republishHomeserver(
+ 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', // Secret Key
+ 'pubky://8pinxxgqs41n4aididenw5apqp1urfmzdztr8jt4abrkdn435ewo' // Homeserver
+);
+if (republishRes.isErr()) {
+ console.log(republishRes.error.message);
+ return;
+}
+console.log(republishRes.value); // "Homeserver republished successfully"
+```
+
### signIn
```js
import { signIn } from '@synonymdev/react-native-pubky';
diff --git a/android/src/main/java/com/pubky/PubkyModule.kt b/android/src/main/java/com/pubky/PubkyModule.kt
index c3cbd9b..2b13276 100644
--- a/android/src/main/java/com/pubky/PubkyModule.kt
+++ b/android/src/main/java/com/pubky/PubkyModule.kt
@@ -205,6 +205,25 @@ class PubkyModule(reactContext: ReactApplicationContext) :
}
}
+ @ReactMethod
+ fun republishHomeserver(secretKey: String, homeserver: String, promise: Promise) {
+ CoroutineScope(Dispatchers.IO).launch {
+ try {
+ val result = republishHomeserver(secretKey, homeserver)
+ 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 signIn(secretKey: String, promise: Promise) {
CoroutineScope(Dispatchers.IO).launch {
diff --git a/android/src/main/java/uniffi/pubkycore/pubkycore.kt b/android/src/main/java/uniffi/pubkycore/pubkycore.kt
index 4f3a0f0..8256880 100644
--- a/android/src/main/java/uniffi/pubkycore/pubkycore.kt
+++ b/android/src/main/java/uniffi/pubkycore/pubkycore.kt
@@ -418,6 +418,8 @@ internal interface _UniFFILib : Library {
): RustBuffer.ByValue
fun uniffi_pubkycore_fn_func_remove_event_listener(_uniffi_out_err: RustCallStatus,
): Unit
+ fun uniffi_pubkycore_fn_func_republish_homeserver(`secretKey`: RustBuffer.ByValue,`homeserver`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
+ ): RustBuffer.ByValue
fun uniffi_pubkycore_fn_func_resolve(`publicKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
): RustBuffer.ByValue
fun uniffi_pubkycore_fn_func_resolve_https(`publicKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
@@ -576,6 +578,8 @@ internal interface _UniFFILib : Library {
): Short
fun uniffi_pubkycore_checksum_func_remove_event_listener(
): Short
+ fun uniffi_pubkycore_checksum_func_republish_homeserver(
+ ): Short
fun uniffi_pubkycore_checksum_func_resolve(
): Short
fun uniffi_pubkycore_checksum_func_resolve_https(
@@ -653,6 +657,9 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) {
if (lib.uniffi_pubkycore_checksum_func_remove_event_listener() != 23534.toShort()) {
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
}
+ if (lib.uniffi_pubkycore_checksum_func_republish_homeserver() != 63919.toShort()) {
+ throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
+ }
if (lib.uniffi_pubkycore_checksum_func_resolve() != 34317.toShort()) {
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
}
@@ -1305,6 +1312,14 @@ fun `removeEventListener`() =
+fun `republishHomeserver`(`secretKey`: String, `homeserver`: String): List {
+ return FfiConverterSequenceString.lift(
+ rustCall() { _status ->
+ _UniFFILib.INSTANCE.uniffi_pubkycore_fn_func_republish_homeserver(FfiConverterString.lower(`secretKey`),FfiConverterString.lower(`homeserver`),_status)
+})
+}
+
+
fun `resolve`(`publicKey`: String): List {
return FfiConverterSequenceString.lift(
rustCall() { _status ->
diff --git a/android/src/main/jniLibs/arm64-v8a/libpubkycore.so b/android/src/main/jniLibs/arm64-v8a/libpubkycore.so
index e903eef..614542a 100755
Binary files a/android/src/main/jniLibs/arm64-v8a/libpubkycore.so and b/android/src/main/jniLibs/arm64-v8a/libpubkycore.so differ
diff --git a/android/src/main/jniLibs/armeabi-v7a/libpubkycore.so b/android/src/main/jniLibs/armeabi-v7a/libpubkycore.so
index de05cec..14d2894 100755
Binary files a/android/src/main/jniLibs/armeabi-v7a/libpubkycore.so and b/android/src/main/jniLibs/armeabi-v7a/libpubkycore.so differ
diff --git a/android/src/main/jniLibs/x86/libpubkycore.so b/android/src/main/jniLibs/x86/libpubkycore.so
index 6741d1a..e0bfd98 100755
Binary files a/android/src/main/jniLibs/x86/libpubkycore.so and b/android/src/main/jniLibs/x86/libpubkycore.so differ
diff --git a/android/src/main/jniLibs/x86_64/libpubkycore.so b/android/src/main/jniLibs/x86_64/libpubkycore.so
index b5edb74..df8a3d6 100755
Binary files a/android/src/main/jniLibs/x86_64/libpubkycore.so and b/android/src/main/jniLibs/x86_64/libpubkycore.so differ
diff --git a/ios/Frameworks/PubkyCore.xcframework/Info.plist b/ios/Frameworks/PubkyCore.xcframework/Info.plist
index d2c2fe2..ed336bd 100644
--- a/ios/Frameworks/PubkyCore.xcframework/Info.plist
+++ b/ios/Frameworks/PubkyCore.xcframework/Info.plist
@@ -4,22 +4,6 @@
AvailableLibraries
-
- BinaryPath
- libpubkycore.a
- HeadersPath
- Headers
- LibraryIdentifier
- ios-arm64
- LibraryPath
- libpubkycore.a
- SupportedArchitectures
-
- arm64
-
- SupportedPlatform
- ios
-
BinaryPath
libpubkycore.a
@@ -38,6 +22,22 @@
SupportedPlatformVariant
simulator
+
+ BinaryPath
+ libpubkycore.a
+ HeadersPath
+ Headers
+ LibraryIdentifier
+ ios-arm64
+ LibraryPath
+ libpubkycore.a
+ SupportedArchitectures
+
+ arm64
+
+ SupportedPlatform
+ ios
+
CFBundlePackageType
XFWK
diff --git a/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/Headers/pubkycoreFFI.h b/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/Headers/pubkycoreFFI.h
index db9bc67..14cc9ee 100644
--- a/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/Headers/pubkycoreFFI.h
+++ b/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/Headers/pubkycoreFFI.h
@@ -96,6 +96,8 @@ RustBuffer uniffi_pubkycore_fn_func_put(RustBuffer url, RustBuffer content, Rust
);
void uniffi_pubkycore_fn_func_remove_event_listener(RustCallStatus *_Nonnull out_status
+);
+RustBuffer uniffi_pubkycore_fn_func_republish_homeserver(RustBuffer secret_key, RustBuffer homeserver, RustCallStatus *_Nonnull out_status
);
RustBuffer uniffi_pubkycore_fn_func_resolve(RustBuffer public_key, RustCallStatus *_Nonnull out_status
);
@@ -268,6 +270,9 @@ uint16_t uniffi_pubkycore_checksum_func_put(void
);
uint16_t uniffi_pubkycore_checksum_func_remove_event_listener(void
+);
+uint16_t uniffi_pubkycore_checksum_func_republish_homeserver(void
+
);
uint16_t uniffi_pubkycore_checksum_func_resolve(void
diff --git a/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/libpubkycore.a b/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/libpubkycore.a
index 6fbcc36..e41adbc 100644
Binary files a/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/libpubkycore.a and b/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/libpubkycore.a differ
diff --git a/ios/Frameworks/PubkyCore.xcframework/ios-arm64/Headers/pubkycoreFFI.h b/ios/Frameworks/PubkyCore.xcframework/ios-arm64/Headers/pubkycoreFFI.h
index db9bc67..14cc9ee 100644
--- a/ios/Frameworks/PubkyCore.xcframework/ios-arm64/Headers/pubkycoreFFI.h
+++ b/ios/Frameworks/PubkyCore.xcframework/ios-arm64/Headers/pubkycoreFFI.h
@@ -96,6 +96,8 @@ RustBuffer uniffi_pubkycore_fn_func_put(RustBuffer url, RustBuffer content, Rust
);
void uniffi_pubkycore_fn_func_remove_event_listener(RustCallStatus *_Nonnull out_status
+);
+RustBuffer uniffi_pubkycore_fn_func_republish_homeserver(RustBuffer secret_key, RustBuffer homeserver, RustCallStatus *_Nonnull out_status
);
RustBuffer uniffi_pubkycore_fn_func_resolve(RustBuffer public_key, RustCallStatus *_Nonnull out_status
);
@@ -268,6 +270,9 @@ uint16_t uniffi_pubkycore_checksum_func_put(void
);
uint16_t uniffi_pubkycore_checksum_func_remove_event_listener(void
+);
+uint16_t uniffi_pubkycore_checksum_func_republish_homeserver(void
+
);
uint16_t uniffi_pubkycore_checksum_func_resolve(void
diff --git a/ios/Frameworks/PubkyCore.xcframework/ios-arm64/libpubkycore.a b/ios/Frameworks/PubkyCore.xcframework/ios-arm64/libpubkycore.a
index 77b41a8..7ca48a6 100644
Binary files a/ios/Frameworks/PubkyCore.xcframework/ios-arm64/libpubkycore.a and b/ios/Frameworks/PubkyCore.xcframework/ios-arm64/libpubkycore.a differ
diff --git a/ios/Pubky.mm b/ios/Pubky.mm
index 596b7d7..4bcff36 100644
--- a/ios/Pubky.mm
+++ b/ios/Pubky.mm
@@ -47,6 +47,11 @@ RCT_EXTERN_METHOD(signUp:(NSString *)secretKey
withResolver:(RCTPromiseResolveBlock)resolve
withRejecter:(RCTPromiseRejectBlock)reject)
+RCT_EXTERN_METHOD(republishHomeserver:(NSString *)secretKey
+ homeserver:(NSString *)homeserver
+ withResolver:(RCTPromiseResolveBlock)resolve
+ withRejecter:(RCTPromiseRejectBlock)reject)
+
RCT_EXTERN_METHOD(signIn:(NSString *)secretKey
withResolver:(RCTPromiseResolveBlock)resolve
withRejecter:(RCTPromiseRejectBlock)reject)
diff --git a/ios/Pubky.swift b/ios/Pubky.swift
index 7e605c5..9c252d8 100644
--- a/ios/Pubky.swift
+++ b/ios/Pubky.swift
@@ -111,6 +111,18 @@ class Pubky: RCTEventEmitter {
}
}
+ @objc(republishHomeserver:homeserver:withResolver:withRejecter:)
+ func republishHomeserver(_ secretKey: String, homeserver: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
+ Task {
+ do {
+ let result = try await react_native_pubky.republishHomeserver(secretKey: secretKey, homeserver: homeserver)
+ resolve(result)
+ } catch {
+ reject("republishHomeserver Error", "Failed to republish homeserver", error)
+ }
+ }
+ }
+
@objc(signIn:withResolver:withRejecter:)
func signIn(_ secretKey: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
Task {
diff --git a/ios/pubkycore.swift b/ios/pubkycore.swift
index 140857b..c887c9e 100644
--- a/ios/pubkycore.swift
+++ b/ios/pubkycore.swift
@@ -766,6 +766,16 @@ public func removeEventListener() {
+public func republishHomeserver(secretKey: String, homeserver: String) -> [String] {
+ return try! FfiConverterSequenceString.lift(
+ try! rustCall() {
+ uniffi_pubkycore_fn_func_republish_homeserver(
+ FfiConverterString.lower(secretKey),
+ FfiConverterString.lower(homeserver),$0)
+}
+ )
+}
+
public func resolve(publicKey: String) -> [String] {
return try! FfiConverterSequenceString.lift(
try! rustCall() {
@@ -897,6 +907,9 @@ private var initializationResult: InitializationResult {
if (uniffi_pubkycore_checksum_func_remove_event_listener() != 23534) {
return InitializationResult.apiChecksumMismatch
}
+ if (uniffi_pubkycore_checksum_func_republish_homeserver() != 63919) {
+ return InitializationResult.apiChecksumMismatch
+ }
if (uniffi_pubkycore_checksum_func_resolve() != 34317) {
return InitializationResult.apiChecksumMismatch
}
diff --git a/src/index.tsx b/src/index.tsx
index 7bdc282..1a7ff99 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -160,6 +160,21 @@ export async function signUp(
}
}
+export async function republishHomeserver(
+ secretKey: string,
+ homeserver: string
+): Promise> {
+ try {
+ const res = await Pubky.republishHomeserver(secretKey, homeserver);
+ if (res[0] === 'error') {
+ return err(res[1]);
+ }
+ return ok(res[1]);
+ } catch (e) {
+ return err(JSON.stringify(e));
+ }
+}
+
export async function signIn(secretKey: string): Promise> {
try {
const res = await Pubky.signIn(secretKey);