ERC1155 (NFT) - Dynamic URI Not working with overriden uri function

I have an erc1155 (NFT) contract, that should be able to update the metadata dynamically, because i have overriden the uri function like so:

packOpened basically returns false intially, but will end up being set to true eventually.


 function uri(uint256 packid) public view virtual override returns (string memory) {
        if(packOpened(packid) == false) {
            return _uri;
        } else {
            return _uriOpened;
        }
 }

when i call the uri function from the smart contract itself, it works properly, it gives me the correct metadata url.

However for some reason when i click refresh metadata for the NFT on opensea, or any other website for that matter, the metadata/image isn't updating, and remains the initial metadata.

Does any one know why this could potentially happen?

Any help would be appreciated! thankx :slightly_smiling_face:

If you can get a correct result by your contract, I think your new changes are correct, as for the OpenSea, maybe they use cookie, that is maybe they only read uri once, I am not sure.

The weird thing is that when you refresh data on some of their other nfts like Sandbox, they do update the metadata and image as well upon refreshing, which imo dont make sense, maybe on testnet?

Not sure for this, maybe you can connect with developer of the Opensea to discuss about this.