Why am I NOT able to interact with ALL of my smart contract functions via my HTML GUI?

I have noticed something very strange…

I have a smart contract with two functions. I am able to interact with all of them (In Remix, Web3 Provider Environment, pragma solidity ^0.8.2) perfectly well. However, when I try calling the same functions via my Dapp (HTML GUI), I am ONLY able to interact with ONE of my functions, and NOT with the other.

Please help me understand what is going on.

Find below a snippet of my solidity functions:

struct CryptoGift {
    address from;
    address to;
    uint256 tokenId;
    string  tokenName;
    string  messageToRecipient;
    uint256 createdAt;
    uint256 firstReminderAt;
    uint256 transferDate;
}
  
CryptoGift[] private allGifts;
mapping(address => CryptoGift[]) private myGifts;

function viewAllGifts() public view returns ( CryptoGift[] memory ) {   
    return allGifts;   
}

function viewMyGifts() public view returns ( CryptoGift[] memory ) {        
    return myGifts[msg.sender];
}

In Remix, using ENVIRONENT: Web3 Provider ACCOUNT: 0xb35abE6Cbf39AF6b547dB36C4645140F1d807413, both functions viewAllGifts and viewMyGifts work perfectly

However, in my HTML file, the viewAllGifts works perfectly while the viewMyGifts doesn’t work.

Find below a snippet from my viewMyGifts function in javascript:

contractMethods.viewMyGifts().call( ({}), (error, result)=> {
    console.log("Your in viewMyGifts"); 
    console.log("ethAddress: " +ethAddress);
    console.log("Result: " +result);
    console.log("Error: " +error);
  if(!error){ }
  else{}
});

The above code yeilds:

Your in viewMyGifts
ethAddress: 0xb35abe6cbf39af6b547db36c4645140f1d807413
Result: 
Error: null

And…

contractMethods.viewAllGifts().call( ({}), (error, result)=> {
    console.log("Your in viewAllGifts"); 
    console.log("ethAddress: " +ethAddress);
    console.log("Result: " +result);
    console.log("Error: " +error);
  if(!error){ }
     else{}
 });

Yeilds:

Your in viewAllGifts
ethAddress: 0xb35abe6cbf39af6b547db36c4645140f1d807413
Result: 0xb35abE6Cbf39AF6b547dB36C4645140F1d807413,0x22Eb94E0DD34B70B9E718595D71bF5CF3065b1c4,100,BOO,I love you Boo 0,0,1652339951,1652339981,1652340011,0xb35abE6Cbf39AF6b547dB36C4645140F1d807413,0x22Eb94E0DD34B70B9E718595D71bF5CF3065b1c4,101,BOO,I love you Boo 1,0,1652339957,1652339987,1652340017,0xb35abE6Cbf39AF6b547dB36C4645140F1d807413,0x22Eb94E0DD34B70B9E718595D71bF5CF3065b1c4,102,BOO,I love you Boo 2,0,1652339962,1652339992,1652340022,0xb35abE6Cbf39AF6b547dB36C4645140F1d807413,0x22Eb94E0DD34B70B9E718595D71bF5CF3065b1c4,103,BOO,I love you Boo 3,0,1652339967,1652339997,1652340027
app.js:36 Error: null

Your help is appreciated!

You can use Moralis and executeFunction to run a contract function from the frontend

Try setting the return in viewMyGifts to something static to see if you can get that returned. myGifts[msg.sender] probably won’t return anything in this context because where would msg.sender come from?