Skip to content

Commit 092347a

Browse files
committed
initial working version with testnet smart contracts running
1 parent 4a32bf7 commit 092347a

3 files changed

Lines changed: 42 additions & 15 deletions

File tree

frontend/src/app.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub fn App() -> Element {
1313
// Signal for transaction status
1414
let tx_status = use_signal(|| "".to_string());
1515

16-
let contract_address = "0xYourContractAddressHere";
16+
let contract_address = "0x998abeb3E57409262aE5b751f60747921B33613E";
1717

1818
rsx! {
1919
div {
@@ -54,7 +54,7 @@ pub fn App() -> Element {
5454
let mut tx_status = tx_status.clone();
5555
spawn_local(async move {
5656
tx_status.set("Wrapping...".to_string());
57-
let res = wrap_tokens(contract_address, &underlying.read(), &amount.read()).await;
57+
let res = wrap_tokens(contract_address, &underlying.read(), &amount.read(), &wrapped.read()).await.as_string().unwrap_or_default();
5858
tx_status.set(format!("Wrap done: {:?}", res));
5959
});
6060
},
@@ -76,7 +76,7 @@ pub fn App() -> Element {
7676
let mut tx_status = tx_status.clone();
7777
spawn_local(async move {
7878
tx_status.set("Unwrapping...".to_string());
79-
let res = unwrap_tokens(contract_address, &wrapped.read(), &amount.read()).await;
79+
let res = unwrap_tokens(contract_address, &wrapped.read(), &amount.read(), &underlying.read()).await.as_string().unwrap_or_default();
8080
tx_status.set(format!("Unwrap done: {:?}", res));
8181
});
8282
},

frontend/src/metamask.js

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,43 @@ export async function connect_metamask() {
1111
return await signer.getAddress();
1212
}
1313

14-
export async function wrap_tokens(contractAddress, underlying, amount) {
15-
const abi = ["function wrap(address underlying, uint256 amount) external"];
16-
const contract = new ethers.Contract(contractAddress, abi, signer);
17-
const tx = await contract.wrap(underlying, amount);
18-
return tx.wait();
14+
export async function wrap_tokens(contractAddress, dToken, amount, cAsset) {
15+
try {
16+
const abi = ["function wrap(address dTokent, uint256 amount, address cAsset) external"];
17+
const approveAbi = ["function approve(address spender, uint256 amount) external returns (bool)"];
18+
console.log("contractAddress:", contractAddress, " dToken:",dToken, " Amount:",amount," cAsset:", cAsset);
19+
const erc20_contract = new ethers.Contract(dToken, approveAbi, signer);
20+
const erc20_connected = erc20_contract.connect(signer);
21+
const approve_tx = await erc20_connected.approve(contractAddress, amount);
22+
await approve_tx.wait();
23+
const contract = new ethers.Contract(contractAddress, abi, signer);
24+
const connected = contract.connect(signer);
25+
const tx = await connected.wrap(dToken, amount, cAsset);
26+
await tx.wait();
27+
return "Transaction successful";
28+
} catch (err) {
29+
console.error(err);
30+
return `Error: ${err.reason || err.message}`;
31+
}
32+
1933
}
2034

21-
export async function unwrap_tokens(contractAddress, wrapped, amount) {
22-
const abi = ["function unwrap(address wrapped, uint256 amount) external"];
23-
const contract = new ethers.Contract(contractAddress, abi, signer);
24-
const tx = await contract.unwrap(wrapped, amount);
25-
return tx.wait();
35+
export async function unwrap_tokens(contractAddress, cAsset, amount, dToken) {
36+
try {
37+
const abi = ["function unwrap(address cAsset, uint256 amount, address dToken) external"];
38+
const approveAbi = ["function approve(address spender, uint256 amount) external returns (bool)"];
39+
console.log("contractAddress:", contractAddress, " cAsset:", cAsset, " Amount:",amount, " dToken:",dToken);
40+
const erc20_contract = new ethers.Contract(cAsset, approveAbi, signer);
41+
const erc20_connected = erc20_contract.connect(signer);
42+
const approve_tx = await erc20_connected.approve(contractAddress, amount);
43+
await approve_tx.wait();
44+
const contract = new ethers.Contract(contractAddress, abi, signer);
45+
const connected = contract.connect(signer);
46+
const tx = await connected.unwrap(cAsset, amount, dToken);
47+
await tx.wait();
48+
return "Transaction successful";
49+
} catch (err) {
50+
console.error(err);
51+
return `Error: ${err.reason || err.message}`;
52+
}
2653
}

frontend/src/metamask.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ use wasm_bindgen::prelude::*;
44
#[wasm_bindgen(module = "/src/metamask.js")]
55
extern "C" {
66
pub async fn connect_metamask() -> JsValue;
7-
pub async fn wrap_tokens(contract: &str, underlying: &str, amount: &str) -> JsValue;
8-
pub async fn unwrap_tokens(contract: &str, wrapped: &str, amount: &str) -> JsValue;
7+
pub async fn wrap_tokens(contract: &str, dToken: &str, amount: &str, cAsset: &str,) -> JsValue;
8+
pub async fn unwrap_tokens(contract: &str, cAsset: &str, amount: &str, dToken: &str) -> JsValue;
99
}

0 commit comments

Comments
 (0)