Unable to join game
Issue: Player is unable to join a new game.
Build: 5080439
Steps to reproduce:
- clone fresh
- run make setup, make anvil, make webdev, make deploy, make circuits
- navigate to http://localhost:3000/?index=1 and mint deck
- navigate to http://localhost:3000/?index=2 and mint deck
- from index=1: create game (game index = 1)
- from index=2: join game (game index = 1)
Expected: Player 2 can join game of player 1.
Reality: Modal displays the following error message: "SyntaxError: Cannot convert #bigint.20826557750498812955920791981733214788339539821236692591183101691377953231916 to a BigInt"
Just found this and have not had the time yet to investigate.
Console points to contract: setting error modal: {"title":"Contract execution error","message":"SyntaxError: Cannot convert #bigint.20826557750498812955920791981733214788339539821236692591183101691377953231916 to a BigInt","buttons":[{"text":"Dismiss"}]}
Hhm, so the error message points at the serialization we use to persist bigints in the browser storage. It seems like the string representing the bigint is not parsed correctly and is being fed directly to the contract instead of a bigint.
We override the JSON.stringify and JSON.parse logic in the setup.ts file.
I think we should try to pinpoint in which scenarios this happens. Clearly it doesn't happen if we don't mint and use users 0 and 1, right?
The standard deployment script should mint decks to index 0 and index 1, so I'm already surprised you manage to mint a deck to index 1? Okay lmao, we never set the claimed flag here: https://github.com/0xFableOrg/0xFable/blob/master/packages/contracts/src/DeckAirdrop.sol — that shouldn't be causing this issue though, but worth trying anyway.
Can you pinpoint the transaction in which this happens? joinGame, or drawInitialHand (you should be able to tell by the changing modal text, if not by the console). Mostly likely it's joinGame and the culprit is the gameID ... not sure what could have changed to make that into a parsed string though... so maybe not.
Good debugging exercise in perspective :D
The culprit here is the saltHash param in the doJoinGameTransaction. The function expects a bigint but is being fed a string, from PrivateInfo.saltHash.
Hey @ShantelPeters! Thanks for showing interest. We've created an application for you to contribute to 0xFable. Go check it out on OnlyDust!
Hey Shantel, we have a pretty good idea of how to fix this, but 0xFable's development is currently paused!
Could I take a shot at this?
Hi, I'm Hilary, a full-stack Web Developer and I will like to take on this issue.
ETA - 2 days
Let me try this one!
I'd love to work on this! ETA: 24Hrs telegram: kellmusk