@@ -22,6 +22,7 @@ export type ChessBoardStateHandlersProps = {
2222 chess : Chess ;
2323 colorToPlay : Color ;
2424 setColorToPlay : ( color : Color ) => void ;
25+ setBroadcastMove : ( broadcastMove : ( ( move : MoveInfo ) => void ) | null ) => void ;
2526 handleClientMakeMove : ( move : Move , promotionPiece : PromotionPieceType | null ) => void ;
2627 handleClientUndoMove : ( ) => void ;
2728 handleHoveringOver : ( position : Position ) => void ;
@@ -40,6 +41,7 @@ export const useChessBoardState = (props: Props): ChessBoardStateHandlersProps =
4041 const { color, isEnabled } = props ;
4142
4243 const [ colorToPlay , setColorToPlay ] = React . useState < Color > ( color ) ;
44+ const broadcastMove = React . useRef < ( ( move : MoveInfo ) => void ) | null > ( null ) ;
4345 const chess = React . useRef ( new Chess ( ) ) . current ;
4446
4547 const [ chessBoardState , setChessBoardState ] = React . useState < ChessBoardState > ( {
@@ -56,7 +58,9 @@ export const useChessBoardState = (props: Props): ChessBoardStateHandlersProps =
5658 } ;
5759
5860 const handleMovedTo = ( moveTo : Position ) => {
59- const options = { moveTo, chess, isEnabled, color, setColorToPlay } ;
61+ if ( ! broadcastMove . current ) throw new Error ( "broadcastMove function is required for broadcasting moves" ) ;
62+
63+ const options = { moveTo, chess, isEnabled, color, setColorToPlay, broadcastMove : broadcastMove . current } ;
6064 setChessBoardState ( ( chessBoardState ) => handleMoveTo ( chessBoardState , options ) ) ;
6165 } ;
6266
@@ -95,11 +99,16 @@ export const useChessBoardState = (props: Props): ChessBoardStateHandlersProps =
9599 setColorToPlay ( chess . board . colorToPlay ) ;
96100 } ;
97101
102+ const setBroadcastMove = ( newBroadcastMove : ( move : MoveInfo ) => void ) => {
103+ broadcastMove . current = newBroadcastMove ;
104+ } ;
105+
98106 return {
99107 chessBoardState,
100108 chess,
101109 colorToPlay,
102110 setColorToPlay,
111+ setBroadcastMove,
103112 handleClientMakeMove,
104113 handleClientUndoMove,
105114 handleMaybeGetPromotionPiece,
0 commit comments