Page MenuHomePhorge

D11407.1767075236.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D11407.1767075236.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,9 +1,11 @@
use crate::{
- handle_string_result_as_callback, Error, CODE_VERSION, DEVICE_TYPE,
- IDENTITY_SOCKET_ADDR, RUNTIME,
+ handle_string_result_as_callback, handle_void_result_as_callback, Error,
+ CODE_VERSION, DEVICE_TYPE, IDENTITY_SOCKET_ADDR, RUNTIME,
};
use grpc_clients::identity::{
- get_unauthenticated_client, protos::unauth::GetFarcasterUsersRequest,
+ get_auth_client, get_unauthenticated_client,
+ protos::auth::LinkFarcasterAccountRequest,
+ protos::unauth::GetFarcasterUsersRequest,
};
use serde::Serialize;
@@ -61,3 +63,48 @@
Ok(serde_json::to_string(&mapped_response)?)
}
+
+pub fn link_farcaster_account(
+ user_id: String,
+ device_id: String,
+ access_token: String,
+ farcaster_id: String,
+ promise_id: u32,
+) {
+ RUNTIME.spawn(async move {
+ let result = link_farcaster_account_helper(
+ user_id,
+ device_id,
+ access_token,
+ farcaster_id,
+ )
+ .await;
+ handle_void_result_as_callback(result, promise_id);
+ });
+}
+
+async fn link_farcaster_account_helper(
+ user_id: String,
+ device_id: String,
+ access_token: String,
+ farcaster_id: String,
+) -> Result<(), Error> {
+ let mut identity_client = get_auth_client(
+ IDENTITY_SOCKET_ADDR,
+ user_id,
+ device_id,
+ access_token,
+ CODE_VERSION,
+ DEVICE_TYPE.as_str_name().to_lowercase(),
+ )
+ .await?;
+
+ let link_farcaster_account_request =
+ LinkFarcasterAccountRequest { farcaster_id };
+
+ identity_client
+ .link_farcaster_account(link_farcaster_account_request)
+ .await?;
+
+ Ok(())
+}
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,9 @@
use exact_user_search::{
find_user_id_for_username, find_user_id_for_wallet_address,
};
-use farcaster::{farcaster_id_string_to_option, get_farcaster_users};
+use farcaster::{
+ farcaster_id_string_to_option, get_farcaster_users, link_farcaster_account,
+};
use ffi::{bool_callback, string_callback, void_callback};
use future_manager::ffi::*;
use grpc_clients::identity::protos::auth::{
@@ -247,6 +249,15 @@
#[cxx_name = "identityGetFarcasterUsers"]
fn get_farcaster_users(farcaster_ids: Vec<String>, promise_id: u32);
+ #[cxx_name = "identityLinkFarcasterAccount"]
+ fn link_farcaster_account(
+ user_id: String,
+ device_id: String,
+ access_token: String,
+ farcaster_id: 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, 6:13 AM (15 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5866559
Default Alt Text
D11407.1767075236.diff (2 KB)

Event Timeline