Solidity/React issue when using Ethers.js : ethereum

0
9
Solidity/React issue when using Ethers.js : ethereum


Solidity/React Question: Using Ethers.js, I’m trying to access a function taking in two variables as parameters using the hook useContractReader. I replicated it from other useContractReader code I have in my project, but it doesn’t seem to be working for whatever reason. I assume it has to do with some parsing of the variables I have, but how I do it in other problems, it works fine.

The React:

const test = useContractReader(writeContracts, "YourContract", "getTest", "1", "0"); // Indexing game 1, players 0

  function getTestName() {
    if (test == null) {
      return "test is undefined.";
    } else if (test[0] == null) { // test[0] is the name variable in the struct
      return "noName";
    } else {
      return test[0].toString();
    }
  }

The Solidity code:

struct Game {
        address host; // Establishes host function access 0
        uint gameId; // Allows different games to be played concurrently 1
        uint buyinRequirement; // To establish minimum buyin amount for a game 2
        uint etherWithdrawalReqs; // Tracks # of ether in total from requests. If >/< than contract balance, throws error 3   
        uint gamePot; // Tracks how much ether is in the game's pot 4 
        uint8 tableWithdrawalReqs; // Tracks how many players have requested a withdrawal 5
        uint8 playerCount; // Tracks # of of players in a game 6
        uint8 verifiedWithdrawalReqs; // Tracks # of verifs that withdrawal requests are valid 7
        bool endedBuyin; // Host function to end buyin stage 8
        bool isActive; // Checks if game struct is already done 9 
        address[] playerList; // 10
    }
    
    struct Player {
        string name; // Allows players to more easily identify eachother
        uint gameId; // gameId generated from gameNumber
        uint buyinAmount; // How much a player has bought in with
        uint withdrawalAmount; // How much a player has requested a withdrawal for
        bool withdrawalReq; // Tracks if a player has submitted a request
        bool verifyReqs; // TO verify that all withdrawal requests look good at table
        bool hasWithdrawn; // To signify that a player has paidout to prevent triggering of any functions after they receieve back their funds
        bool isInGame; // Is in game bool
        bool isHost; // Is host
    }

mapping(address => Player) public playerInfo; // To call Player struct based on the msg.sender

    // Mapping for locating each game's details
    mapping(uint => Game) public idToGame; // To call Game struct to see game details

function getTest(uint gameId, uint playerIndex) public view returns (Player memory) {
        return playerInfo[idToGame[gameId].playerList[playerIndex]];
    }

Please refer to my stack overflow question for more information on the issue:

https://stackoverflow.com/questions/74323524/problem-accessing-solidity-getter-using-ethers-js



Source link