Fix listing transaction by getting alchemy provider

Co-authored-by: brunoedcf <brest.dallacosta@outlook.com>
This commit is contained in:
RcleydsonR 2023-01-20 19:16:52 -03:00
parent 59538d23d0
commit 242d28f0e3
5 changed files with 36 additions and 45 deletions

View File

@ -1,6 +1,6 @@
import { useEtherStore } from "@/store/ether"; import { useEtherStore } from "@/store/ether";
import { getProvider } from "./provider"; import { getContract, getProvider } from "./provider";
import { getP2PixAddress } from "./addresses"; import { getP2PixAddress } from "./addresses";
import p2pix from "../utils/smart_contract_files/P2PIX.json"; import p2pix from "../utils/smart_contract_files/P2PIX.json";
@ -14,9 +14,7 @@ const addLock = async (
): Promise<string> => { ): Promise<string> => {
const etherStore = useEtherStore(); const etherStore = useEtherStore();
const provider = getProvider(); const p2pContract = getContract();
const signer = provider.getSigner();
const p2pContract = new ethers.Contract(getP2PixAddress(), p2pix.abi, signer);
const lock = await p2pContract.lock( const lock = await p2pContract.lock(
depositId, // BigNumber depositId, // BigNumber
@ -75,26 +73,22 @@ const releaseLock = async (
return release; return release;
}; };
const cancelDeposit = async (depositId: BigNumber): Promise<boolean> => { const cancelDeposit = async (depositId: BigNumber): Promise<any> => {
const provider = getProvider(); const contract = getContract();
const signer = provider.getSigner(); const cancel = await contract.cancelDeposit(depositId);
const contract = new ethers.Contract(getP2PixAddress(), p2pix.abi, signer); await cancel.wait();
await contract.cancelDeposit(depositId);
return true; return cancel;
}; };
const withdrawDeposit = async (depositId: BigNumber): Promise<boolean> => { const withdrawDeposit = async (depositId: BigNumber): Promise<any> => {
const provider = getProvider(); const contract = getContract();
if (!provider) return false; const withdraw = await contract.withdraw(depositId, []);
await withdraw.wait();
const signer = provider.getSigner(); return withdraw;
const contract = new ethers.Contract(getP2PixAddress(), p2pix.abi, signer);
await contract.withdraw(depositId, []);
return true;
}; };
export { cancelDeposit, withdrawDeposit, addLock, releaseLock }; export { cancelDeposit, withdrawDeposit, addLock, releaseLock };

View File

@ -3,8 +3,7 @@ import { Contract, ethers } from "ethers";
import p2pix from "../utils/smart_contract_files/P2PIX.json"; import p2pix from "../utils/smart_contract_files/P2PIX.json";
import { formatEther } from "ethers/lib/utils"; import { formatEther } from "ethers/lib/utils";
import { getProvider } from "./provider"; import { getContract } from "./provider";
import { getP2PixAddress } from "./addresses";
import type { ValidDeposit } from "@/model/ValidDeposit"; import type { ValidDeposit } from "@/model/ValidDeposit";
const getNetworksLiquidity = async (): Promise<void> => { const getNetworksLiquidity = async (): Promise<void> => {
@ -50,15 +49,14 @@ const getValidDeposits = async (
if (contract) { if (contract) {
p2pContract = contract; p2pContract = contract;
} else { } else {
const provider = getProvider(); p2pContract = getContract(true);
const signer = provider.getSigner();
p2pContract = new ethers.Contract(getP2PixAddress(), p2pix.abi, signer);
} }
const filterDeposits = p2pContract.filters.DepositAdded(null); const filterDeposits = p2pContract.filters.DepositAdded(null);
const eventsDeposits = await p2pContract.queryFilter(filterDeposits); const eventsDeposits = await p2pContract.queryFilter(filterDeposits);
p2pContract = getContract(); // get metamask provider contract
const depositList = await Promise.all( const depositList = await Promise.all(
eventsDeposits.map(async (deposit) => { eventsDeposits.map(async (deposit) => {
const mappedDeposit = await p2pContract.mapDeposits( const mappedDeposit = await p2pContract.mapDeposits(

View File

@ -1,27 +1,36 @@
import { useEtherStore } from "@/store/ether"; import { useEtherStore } from "@/store/ether";
import p2pix from "../utils/smart_contract_files/P2PIX.json";
import { updateWalletStatus } from "./wallet"; import { updateWalletStatus } from "./wallet";
import { import {
getProviderUrl, getProviderUrl,
isPossibleNetwork, isPossibleNetwork,
possibleChains, possibleChains,
network2Chain, network2Chain,
getP2PixAddress,
} from "./addresses"; } from "./addresses";
import { ethers } from "ethers"; import { ethers } from "ethers";
const getProvider = (): const getProvider = (
| ethers.providers.Web3Provider onlyAlchemyProvider: boolean = false
| ethers.providers.JsonRpcProvider => { ): ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider => {
const window_ = window as any; const window_ = window as any;
const connection = window_.ethereum; const connection = window_.ethereum;
if (!connection) if (!connection || onlyAlchemyProvider)
return new ethers.providers.JsonRpcProvider(getProviderUrl()); // alchemy provider return new ethers.providers.JsonRpcProvider(getProviderUrl()); // alchemy provider
return new ethers.providers.Web3Provider(connection); // metamask provider return new ethers.providers.Web3Provider(connection); // metamask provider
}; };
const getContract = (onlyAlchemyProvider: boolean = false) => {
const provider = getProvider(onlyAlchemyProvider);
const signer = provider.getSigner();
return new ethers.Contract(getP2PixAddress(), p2pix.abi, signer);
};
const connectProvider = async (): Promise<void> => { const connectProvider = async (): Promise<void> => {
const window_ = window as any; const window_ = window as any;
const connection = window_.ethereum; const connection = window_.ethereum;
@ -79,6 +88,7 @@ const requestNetworkChange = async (network: string): Promise<boolean> => {
export { export {
getProvider, getProvider,
getContract,
connectProvider, connectProvider,
listenToNetworkChange, listenToNetworkChange,
requestNetworkChange, requestNetworkChange,

View File

@ -1,10 +1,9 @@
import { getProvider } from "./provider"; import { getContract, getProvider } from "./provider";
import { getTokenAddress, getP2PixAddress } from "./addresses"; import { getTokenAddress, getP2PixAddress } from "./addresses";
import { parseEther } from "ethers/lib/utils"; import { parseEther } from "ethers/lib/utils";
import { ethers } from "ethers"; import { ethers } from "ethers";
import p2pix from "../utils/smart_contract_files/P2PIX.json";
import mockToken from "../utils/smart_contract_files/MockToken.json"; import mockToken from "../utils/smart_contract_files/MockToken.json";
const approveTokens = async (tokenQty: string): Promise<any> => { const approveTokens = async (tokenQty: string): Promise<any> => {
@ -28,10 +27,7 @@ const approveTokens = async (tokenQty: string): Promise<any> => {
}; };
const addDeposit = async (tokenQty: string, pixKey: string): Promise<any> => { const addDeposit = async (tokenQty: string, pixKey: string): Promise<any> => {
const provider = getProvider(); const p2pContract = getContract();
const signer = provider.getSigner();
const p2pContract = new ethers.Contract(getP2PixAddress(), p2pix.abi, signer);
const deposit = await p2pContract.deposit( const deposit = await p2pContract.deposit(
getTokenAddress(), getTokenAddress(),

View File

@ -1,9 +1,8 @@
import { useEtherStore } from "@/store/ether"; import { useEtherStore } from "@/store/ether";
import { getProvider } from "./provider"; import { getContract, getProvider } from "./provider";
import { getP2PixAddress, getTokenAddress, possibleChains } from "./addresses"; import { getTokenAddress, possibleChains } from "./addresses";
import p2pix from "../utils/smart_contract_files/P2PIX.json";
import mockToken from "../utils/smart_contract_files/MockToken.json"; import mockToken from "../utils/smart_contract_files/MockToken.json";
import { ethers, type Event } from "ethers"; import { ethers, type Event } from "ethers";
@ -52,10 +51,7 @@ const listValidDepositTransactionsByWalletAddress = async (
const listAllTransactionByWalletAddress = async ( const listAllTransactionByWalletAddress = async (
walletAddress: string walletAddress: string
): Promise<Event[]> => { ): Promise<Event[]> => {
const provider = getProvider(); const p2pContract = getContract();
const signer = provider.getSigner();
const p2pContract = new ethers.Contract(getP2PixAddress(), p2pix.abi, signer);
const filterDeposits = p2pContract.filters.DepositAdded([walletAddress]); const filterDeposits = p2pContract.filters.DepositAdded([walletAddress]);
const eventsDeposits = await p2pContract.queryFilter(filterDeposits); const eventsDeposits = await p2pContract.queryFilter(filterDeposits);
@ -79,10 +75,7 @@ const listAllTransactionByWalletAddress = async (
const listReleaseTransactionByWalletAddress = async ( const listReleaseTransactionByWalletAddress = async (
walletAddress: string walletAddress: string
): Promise<Event[]> => { ): Promise<Event[]> => {
const provider = getProvider(); const p2pContract = getContract();
const signer = provider.getSigner();
const p2pContract = new ethers.Contract(getP2PixAddress(), p2pix.abi, signer);
const filterReleasedLocks = p2pContract.filters.LockReleased([walletAddress]); const filterReleasedLocks = p2pContract.filters.LockReleased([walletAddress]);
const eventsReleasedLocks = await p2pContract.queryFilter( const eventsReleasedLocks = await p2pContract.queryFilter(