ContractManager.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { ERC20ABI } from "./abis/ERC20ABI";
  2. import { Contract, Web3Result as Web3Params } from "./Contract";
  3. import { WalletManager } from "./WalletManager";
  4. export class ContractManager {
  5. private static _ins: ContractManager = null!;
  6. private constructor() {}
  7. public static get ins(): ContractManager {
  8. if (!ContractManager._ins) {
  9. ContractManager._ins = new ContractManager();
  10. }
  11. return ContractManager._ins;
  12. }
  13. public async getZPBalance() {
  14. let web3Result = WalletManager.ins.getWeb3Result();
  15. console.log("web3Result", web3Result);
  16. let contractAddress = "0x8BD8d0f43484E06E86c8667F717A6A80a6F24A2e";
  17. let tokenAddress = "0x6009950E4B05FBa0F95fe799Ce47b56E2DE4a34F";
  18. //@ts-ignore
  19. let contract = await new window.ethers.Contract(
  20. tokenAddress,
  21. ERC20ABI,
  22. web3Result.signer
  23. );
  24. console.log("contract", contract, web3Result.account);
  25. let balance = await this.contractBalance(contract, web3Result.account);
  26. console.log("balance", balance);
  27. return balance;
  28. }
  29. public async contractBalance(
  30. contract: any,
  31. address: string
  32. ): Promise<number> {
  33. try {
  34. //@ts-ignore
  35. const ethers = window.ethers;
  36. if (!ethers.utils.isAddress(address)) {
  37. console.log("Invalid address format");
  38. // MsgHints.show("Invalid address format");
  39. return 0;
  40. }
  41. const balance = await contract.balanceOf(address);
  42. console.log(" --- balance", balance);
  43. let balanceStr = await this.formatEther(balance);
  44. let balanceNum = Number(balanceStr);
  45. return balanceNum;
  46. } catch (error) {
  47. console.log(" contractBalance error ", error);
  48. return 0;
  49. }
  50. }
  51. public async formatEther(balance: any): Promise<string> {
  52. //@ts-ignore
  53. return Number(Number(window.ethers.utils.formatEther(balance)).toFixed(8));
  54. }
  55. }