From 30c3ec9673a9e8de66ec733bf68b80c1b3400f92 Mon Sep 17 00:00:00 2001 From: Sosthene Date: Wed, 22 May 2024 23:36:18 +0200 Subject: [PATCH] obtainTokenWithFaucet slight improvement --- crates/sp_client/src/api.rs | 19 +++++++------ src/services.ts | 57 +++++++++++++++++++++---------------- 2 files changed, 44 insertions(+), 32 deletions(-) diff --git a/crates/sp_client/src/api.rs b/crates/sp_client/src/api.rs index 91f8c67..1f54f16 100644 --- a/crates/sp_client/src/api.rs +++ b/crates/sp_client/src/api.rs @@ -900,16 +900,19 @@ pub fn try_decrypt_with_key(cipher: String, key: String) -> ApiResult { } #[wasm_bindgen] -pub fn create_faucet_msg() -> ApiResult { +pub fn create_faucet_msg() -> ApiResult { 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] diff --git a/src/services.ts b/src/services.ts index 16b5a93..7ad857d 100644 --- a/src/services.ts +++ b/src/services.ts @@ -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 { + public async obtainTokenWithFaucet(): Promise { 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); + 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) { - console.error("Failed to obtain tokens with relay ", connection.getUrl()); - return null; + 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 {