obtainTokenWithFaucet slight improvement

This commit is contained in:
Sosthene 2024-05-22 23:36:18 +02:00
parent a251458f04
commit 30c3ec9673
2 changed files with 44 additions and 32 deletions

View File

@ -900,16 +900,19 @@ pub fn try_decrypt_with_key(cipher: String, key: String) -> ApiResult<String> {
}
#[wasm_bindgen]
pub fn create_faucet_msg() -> ApiResult<FaucetMessage> {
pub fn create_faucet_msg() -> ApiResult<CachedMessage> {
let user = lock_connected_user()?;
let sp_address = user.try_get_recover()?.get_client().get_receiving_address();
let faucet_msg = FaucetMessage::new(sp_address);
// we write the commitment in a networkmessage so that we can keep track
let mut network_msg = CachedMessage::new();
network_msg.commitment = Some(faucet_msg.commitment.clone());
network_msg.status = CachedMessageStatus::FaucetWaiting;
lock_messages()?.push(network_msg);
Ok(faucet_msg)
let mut commitment = [0u8;64];
thread_rng().fill_bytes(&mut commitment);
let mut cached_msg = CachedMessage::new();
cached_msg.recipient = Some(sp_address);
cached_msg.commitment = Some(commitment.to_lower_hex_string());
cached_msg.status = CachedMessageStatus::FaucetWaiting;
lock_messages()?.push(cached_msg.clone());
Ok(cached_msg)
}
#[wasm_bindgen]

View File

@ -87,7 +87,7 @@ class Services {
if (availableAmt < 2000) {
try {
await services.obtainTokenWithFaucet(this.sp_address!);
await services.obtainTokenWithFaucet();
} catch (error) {
console.error('Failed to obtain faucet token:', error);
return;
@ -150,16 +150,14 @@ class Services {
return;
}
} catch (error) {
console.error(error);
return;
throw error;
}
const passwordElement = document.getElementById("password") as HTMLInputElement;
const processElement = document.getElementById("selectProcess") as HTMLSelectElement;
if (!passwordElement || !processElement) {
console.error("One or more elements not found");
return;
throw 'One or more elements not found';
}
const password = passwordElement.value;
@ -172,7 +170,12 @@ class Services {
const birthday_signet = 50000;
const birthday_main = 500000;
let createUserReturn: createUserReturn = services.sdkClient.create_user(password, label, birthday_main, birthday_signet, this.current_process);
let createUserReturn: createUserReturn;
try {
createUserReturn = services.sdkClient.create_user(password, label, birthday_main, birthday_signet, this.current_process);
} catch (error) {
throw error;
}
let user = createUserReturn.user;
@ -180,8 +183,7 @@ class Services {
// send the shares on the network
const revokeData = user.revoke_data;
if (!revokeData) {
console.error('Failed to get revoke data from wasm');
return;
throw 'Failed to get revoke data from wasm';
}
// user.shares = [];
@ -192,17 +194,13 @@ class Services {
const db = await indexedDb.getDb();
await indexedDb.writeObject(db, indexedDb.getStoreList().AnkUser, user, null);
} catch (error) {
console.error("Failed to write user object :", error);
throw `Failed to write user object: ${error}`;
}
try {
this.sp_address = services.sdkClient.get_recover_address();
if (this.sp_address) {
console.info('Using sp_address:', this.sp_address);
await services.obtainTokenWithFaucet(this.sp_address);
}
await services.obtainTokenWithFaucet();
} catch (error) {
console.error(error);
throw error;
}
await services.displayRevokeImage(new Uint8Array(revokeData));
@ -244,7 +242,7 @@ class Services {
this.sp_address = services.sdkClient.get_recover_address();
if (this.sp_address) {
console.info('Using sp_address:', this.sp_address);
await services.obtainTokenWithFaucet(this.sp_address);
await services.obtainTokenWithFaucet();
}
}
} catch (error) {
@ -762,22 +760,33 @@ class Services {
}
}
public async obtainTokenWithFaucet(spaddress: string): Promise<string | null> {
public async obtainTokenWithFaucet(): Promise<void> {
const services = await Services.getInstance();
const connection = await services.pickWebsocketConnectionRandom();
if (!connection) {
return null;
throw 'no available relay connections';
}
let cachedMsg: CachedMessage;
try {
const flag: AnkFlag = 'Faucet';
const faucetMsg = services.sdkClient.create_faucet_msg();
connection.sendMessage(flag, JSON.stringify(faucetMsg));
await services.updateMessages(faucetMsg);
} catch (error) {
console.error("Failed to obtain tokens with relay ", connection.getUrl());
return null;
cachedMsg = services.sdkClient.create_faucet_msg();
if (cachedMsg.commitment && cachedMsg.recipient) {
let faucetMsg: FaucetMessage = {
sp_address: cachedMsg.recipient,
commitment: cachedMsg.commitment,
}
connection.sendMessage(flag, JSON.stringify(faucetMsg));
}
} catch (error) {
throw `Failed to obtain tokens with relay ${connection.getUrl()}: ${error}`;
}
try {
await services.updateMessages(cachedMsg);
} catch (error) {
throw error;
}
return null;
}
public async updateUser(user: User): Promise<void> {