Page MenuHomePhorge

D11403.1767060223.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D11403.1767060223.diff

diff --git a/native/native_rust_library/src/farcaster.rs b/native/native_rust_library/src/farcaster.rs
--- a/native/native_rust_library/src/farcaster.rs
+++ b/native/native_rust_library/src/farcaster.rs
@@ -1,3 +1,22 @@
+use crate::{
+ handle_string_result_as_callback, Error, CODE_VERSION, DEVICE_TYPE,
+ IDENTITY_SOCKET_ADDR, RUNTIME,
+};
+use grpc_clients::identity::{
+ get_unauthenticated_client, protos::unauth::GetFarcasterUsersRequest,
+};
+use serde::Serialize;
+
+#[derive(Serialize)]
+#[serde(rename_all = "camelCase")]
+struct FarcasterUser {
+ #[serde(rename = "userID")]
+ user_id: String,
+ username: String,
+ #[serde(rename = "farcasterID")]
+ farcaster_id: String,
+}
+
pub fn farcaster_id_string_to_option(input: &str) -> Option<String> {
if input.is_empty() {
None
@@ -5,3 +24,40 @@
Some(input.to_string())
}
}
+
+pub fn get_farcaster_users(farcaster_ids: Vec<String>, promise_id: u32) {
+ RUNTIME.spawn(async move {
+ let result = get_farcaster_users_helper(farcaster_ids).await;
+ handle_string_result_as_callback(result, promise_id);
+ });
+}
+
+async fn get_farcaster_users_helper(
+ farcaster_ids: Vec<String>,
+) -> Result<String, Error> {
+ let get_farcaster_users_request = GetFarcasterUsersRequest { farcaster_ids };
+
+ let mut identity_client = get_unauthenticated_client(
+ IDENTITY_SOCKET_ADDR,
+ CODE_VERSION,
+ DEVICE_TYPE.as_str_name().to_lowercase(),
+ )
+ .await?;
+
+ let response = identity_client
+ .get_farcaster_users(get_farcaster_users_request)
+ .await?
+ .into_inner();
+
+ let mapped_response: Vec<FarcasterUser> = response
+ .farcaster_users
+ .into_iter()
+ .map(|farcaster_user| FarcasterUser {
+ user_id: farcaster_user.user_id,
+ username: farcaster_user.username,
+ farcaster_id: farcaster_user.farcaster_id,
+ })
+ .collect();
+
+ Ok(serde_json::to_string(&mapped_response)?)
+}
diff --git a/native/native_rust_library/src/lib.rs b/native/native_rust_library/src/lib.rs
--- a/native/native_rust_library/src/lib.rs
+++ b/native/native_rust_library/src/lib.rs
@@ -4,7 +4,7 @@
use exact_user_search::{
find_user_id_for_username, find_user_id_for_wallet_address,
};
-use farcaster::farcaster_id_string_to_option;
+use farcaster::{farcaster_id_string_to_option, get_farcaster_users};
use ffi::{bool_callback, string_callback, void_callback};
use future_manager::ffi::*;
use grpc_clients::identity::protos::auth::{
@@ -243,6 +243,10 @@
#[cxx_name = "identityFindUserIDForUsername"]
fn find_user_id_for_username(username: String, promise_id: u32);
+ // Farcaster
+ #[cxx_name = "identityGetFarcasterUsers"]
+ fn get_farcaster_users(farcaster_ids: Vec<String>, promise_id: u32);
+
// Argon2
#[cxx_name = "compute_backup_key"]
fn compute_backup_key_str(

File Metadata

Mime Type
text/plain
Expires
Tue, Dec 30, 2:03 AM (10 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5866247
Default Alt Text
D11403.1767060223.diff (2 KB)

Event Timeline