- Replaced multiple App-level state fields with unified GameState
- Added INITIAL_GAME_STATE and migrated App.tsx to use single game state
- Introduced GameProps as shared base props for all turn-based board games
- Created TicTacToeGameProps and BattleshipGameProps extending GameProps
- Updated TicTacToe and Battleship components to use new props
- Replaced verbose prop passing with spread {...commonProps}
- Updated renderGameBoard to use game.metadata consistently
- Renamed TicTacToeBoard -> TicTacToeGame for clarity
- Renamed BattleShipBoard -> BattleShipGame for naming consistency
- Updated all import paths to reflect new component names
- Replaced MatchDataMessage with MatchDataModel
- Moved GameState definition from models.ts to interfaces/states.ts
- Removed old board-specific prop structures and per-field state management
- Increased type safety and reduced duplication across the codebase
This commit consolidates game state flow, introduces a clean component props
architecture, and standardizes naming convention
- Extracted context contract to `contexts.ts` (NakamaContextType)
- Added strongly typed internal provider refs in `refs.ts`
- socketRef: React.RefObject<Socket | null>
- gameMetadataRef: React.RefObject<GameMetadata | null>
- Added `NakamaProviderState` in `states.ts` for React-managed provider state
- session, socket, matchId, matchmakerTicket
- Refactored NakamaProvider to use new modular structure
- Replaced scattered useState/useRef with structured internal state + refs
- Updated onMatchData to use MatchDataMessage model
- Replaced deprecated MutableRefObject typing with RefObject
- Cleaned update patterns using `updateState` helper
- Updated imports to use new models and context structure
- Improved separation of responsibilities:
- models = pure domain types
- context = exposed provider API
- refs = internal mutable runtime refs
- state = provider-managed reactive state
- Ensured all Nakama provider functions fully typed and consistent with TS
This refactor improves clarity, type safety, and maintainability for the
Nakama real-time multiplayer provider.