From 05473c8a855b4a5205fc06bac97ca12621723a52 Mon Sep 17 00:00:00 2001 From: GuillaumeSD <47183782+GuillaumeSD@users.noreply.github.com> Date: Sat, 20 Jul 2024 16:20:35 +0200 Subject: [PATCH] fix : promotion on piece drag --- src/components/board/index.tsx | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/components/board/index.tsx b/src/components/board/index.tsx index 85514fc..2396c88 100644 --- a/src/components/board/index.tsx +++ b/src/components/board/index.tsx @@ -86,7 +86,7 @@ export default function Board({ return !!result; }; - const resetMoveClick = (square?: Square) => { + const resetMoveClick = (square?: Square | null) => { setMoveClickFrom(square ?? null); setMoveClickTo(null); setShowPromotionDialog(false); @@ -150,17 +150,35 @@ export default function Board({ resetMoveClick(); }; - const onPromotionPieceSelect = (piece?: PromotionPieceOption) => { - if (piece && moveClickFrom && moveClickTo) { + const onPromotionPieceSelect = ( + piece?: PromotionPieceOption, + from?: Square, + to?: Square + ) => { + if (!piece) return false; + const promotionPiece = piece[1]?.toLowerCase() ?? "q"; + + if (moveClickFrom && moveClickTo) { const result = makeGameMove({ from: moveClickFrom, to: moveClickTo, - promotion: piece[1]?.toLowerCase() ?? "q", + promotion: promotionPiece, }); resetMoveClick(); return !!result; } + if (from && to) { + const result = makeGameMove({ + from, + to, + promotion: promotionPiece, + }); + resetMoveClick(); + return !!result; + } + + resetMoveClick(moveClickFrom); return false; };