Crates.io | walletconnect-client |
lib.rs | walletconnect-client |
version | 0.2.0 |
source | src |
created_at | 2024-02-13 11:22:43.350125 |
updated_at | 2024-06-21 08:02:22.073149 |
description | WASM library for walletconnect dApp connections |
homepage | https://quay.rs/ |
repository | https://github.com/quay-rs/walletconnect-client |
max_upload_size | |
id | 1138414 |
size | 126,727 |
Add this to your Cargo.toml:
[dependencies]
walletconnect-client = "0.1"
And this to your code:
use walletconnect_client::prelude::*;
To initiate walletconnect connection with the wallet, set up your dApps metadata:
use url::Url;
use walletconnect_client::prelude::*;
let dapp = Metadata::from("Your dApp's name",
"Your dApp's short description",
Url::parse("https://url.of.your.dapp").expect("Wrong URL"),
vec!["https://url.to.your.dapps.icon".to_string()]);
...and once you'll get your projects id from WalletConnect portal, you can simply create the connection:
use walletconnect_client::prelude::*;
const PROJECT_ID: &str = "myprojectidfromwalletconnectportal";
async fn start_session(dapp: Metadata) -> Result<String, WalletConnectError> {
let client = WalletConnect::connect(PROJECT_ID.into(),
1 /* Ethereums chain id */,
dapp,
None)?;
let url = client.initiate_session(None).await?;
Ok(url)
}
Now your wallet need to get your sessions url. You can pass it on using url call with proper schema, or present it using qrcode using crates such as qrcode-generator
:
State loop is manually handled by the implementor (there's no concurrency in some places). You have to loop somewhere to get any updates from WalletConnect.
use walletconnect_client::prelude::*;
async fn handle_messages(wc: WalletConnect) {
while let Ok(event) = wc.next().await {
match event {
Some(event) => println!("Got a new WC event {event:?}"),
None => println!("This loop brought no new event, and that is fine")
}
}
}
In progress of creation.
This library currently needs WASM to work. There is a plan to support server-side implementations, though. For now, we focus on building robust solution for WASM implementations of websites.