diff --git a/example-web/pages/components/DaoBreakdown/ApproveDonate.tsx b/example-web/pages/components/DaoBreakdown/ApproveDonate.tsx
index c6ff81b..83cd285 100644
--- a/example-web/pages/components/DaoBreakdown/ApproveDonate.tsx
+++ b/example-web/pages/components/DaoBreakdown/ApproveDonate.tsx
@@ -6,43 +6,74 @@ const ApproveDonate = () => {
const [approvedAmount, setApprovedAmount] = useState(false);
const [donationIsLoading, setDonationIsLoading] = useState(false);
const [donationAmount, setDonationAmount] = useState('');
-
+ const [communityAddress, setCommunityAddress] = useState('');
const approveDonation = async () => {
setDonationIsLoading(true);
- const response = await donationMiner.approve(donationAmount);
+ let response;
+ if (communityAddress.length > 0) {
+ response = await donationMiner.approve(donationAmount, communityAddress);
+ } else {
+ response = await donationMiner.approve(donationAmount);
+ }
setDonationIsLoading(false);
if (response?.status) {
setApprovedAmount(true);
}
- }
+ };
const executeDonation = async () => {
setDonationIsLoading(true);
- const response = await donationMiner.donateToTreasury(donationAmount);
+ let response;
+ if (communityAddress.length > 0) {
+ response = await donationMiner.donateToCommunity(communityAddress, donationAmount);
+ } else {
+ response = await donationMiner.donateToTreasury(donationAmount);
+ }
setDonationIsLoading(false);
if (response?.status) {
setApprovedAmount(false);
}
- }
+ };
return (
<>
Approve & Donate
- setDonationAmount(event.target.value)} type="number" value={donationAmount || ''} />
-
-
+ setDonationAmount(event.target.value)}
+ type="number"
+ value={donationAmount || ''}
+ />
+
+ setCommunityAddress(event.target.value)}
+ value={communityAddress || ''}
+ style={{ width: 400 }}
+ />
+
+
+
+
+
{donationIsLoading && Loading...}
>
- )
-}
+ );
+};
export default ApproveDonate;
diff --git a/src/internalUseTransaction.tsx b/src/internalUseTransaction.tsx
index 10fbd3d..f8cbc17 100644
--- a/src/internalUseTransaction.tsx
+++ b/src/internalUseTransaction.tsx
@@ -50,6 +50,10 @@ export const internalUseTransaction = () => {
throw new Error('no valid address connected');
}
+ if (signer) {
+ return tx;
+ }
+
const [_nonce, _gasPrice, _gasLimit, _value] = await Promise.all([
apiGetAccountNonce(jsonRpcUrl, tx.from || address),
apiGetGasPrice(jsonRpcUrl, defaultFeeCurrency),
@@ -62,7 +66,7 @@ export const internalUseTransaction = () => {
...tx,
account: (tx.from || address) as `0x${string}`,
gas: BigInt(_gasLimit.toNumber() * 2),
- gasPrice: BigInt(_gasPrice),
+ gasPrice: BigInt(parseInt(_gasPrice, 16) * 2),
nonce: _nonce,
value: BigInt(_value)
};
@@ -92,7 +96,7 @@ export const internalUseTransaction = () => {
const txResponse = await connection.sendTransaction({
data: tx.data,
from: tx.from || address,
- gasPrice: await apiGetGasPrice(jsonRpcUrl, defaultFeeCurrency),
+ gasPrice: parseInt(await apiGetGasPrice(jsonRpcUrl, defaultFeeCurrency), 16) * 2,
to: tx.to
});
diff --git a/src/useBorrower.tsx b/src/useBorrower.tsx
index 2ee46cc..7d2760b 100644
--- a/src/useBorrower.tsx
+++ b/src/useBorrower.tsx
@@ -163,6 +163,8 @@ export const useBorrower = () => {
if (loanId !== -1) {
userLoans(address, loanId).then(() => setIsReady(true));
+ } else {
+ setIsReady(true);
}
};
diff --git a/src/useDonationMiner.tsx b/src/useDonationMiner.tsx
index e170370..ed505c0 100644
--- a/src/useDonationMiner.tsx
+++ b/src/useDonationMiner.tsx
@@ -16,33 +16,27 @@ export const useDonationMiner = () => {
const executeTransaction = internalUseTransaction();
const approve = async (value: string | number, to?: string) => {
- try {
- const { cusd, donationMiner } = getContracts(provider, networkId);
- const amount = toToken(value, { EXPONENTIAL_AT: 29 });
-
- if (to === undefined) {
- to = donationMiner.address;
- }
- if (!address || !donationMiner?.provider || !cusd?.provider || !amount) {
- return;
- }
+ const { cusd, donationMiner } = getContracts(provider, networkId);
+ const amount = toToken(value, { EXPONENTIAL_AT: 29 });
- const cUSDAllowance = await cusd.allowance(address, to);
- const cusdAllowance = toNumber(cUSDAllowance);
- const allowance = cusdAllowance || 0;
+ if (to === undefined) {
+ to = donationMiner.address;
+ }
+ if (!address || !donationMiner?.provider || !cusd?.provider || !amount) {
+ return;
+ }
- if (allowance >= Number(value)) {
- return { status: true };
- }
+ const cUSDAllowance = await cusd.allowance(address, to);
+ const cusdAllowance = toNumber(cUSDAllowance);
+ const allowance = cusdAllowance || 0;
- const tx = await cusd.populateTransaction.approve(to, amount);
+ if (allowance >= Number(value)) {
+ return { status: true };
+ }
- return await executeTransaction(tx);
- } catch (error) {
- console.log('Error approving amount: \n', error);
+ const tx = await cusd.populateTransaction.approve(to, amount);
- return { status: false };
- }
+ return await executeTransaction(tx);
};
const donateToTreasury = async (value: string | number) => {