From 9627f455f301dd953b17b42ec33c7a6d8e360b84 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 5 Jul 2025 01:21:58 +0000 Subject: [PATCH 1/4] Add flash animation for newly hit roulette numbers Co-authored-by: jedduffey --- src/components/roulette/NumbersHitTracker.js | 53 +++++++++++++++++--- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/src/components/roulette/NumbersHitTracker.js b/src/components/roulette/NumbersHitTracker.js index 3f8cd56..91586fd 100644 --- a/src/components/roulette/NumbersHitTracker.js +++ b/src/components/roulette/NumbersHitTracker.js @@ -7,6 +7,9 @@ import { getPlayerNumberCompletionSetCurrent, rouletteContractEvents } from "../ const CLASS_NAME = "NumbersHitTracker-component"; export function NumbersHitTracker(props) { const [currentSet, setCurrentSet] = useState(new Set()); + const [previousSet, setPreviousSet] = useState(new Set()); + const [newlyHitNumbers, setNewlyHitNumbers] = useState(new Set()); + const [flashState, setFlashState] = useState(false); // Initialize the current set on component mount useEffect(() => { @@ -29,7 +32,30 @@ export function NumbersHitTracker(props) { try { // Get the updated completion set from the blockchain const currentNumbers = await getPlayerNumberCompletionSetCurrent(props.playerAddress); - setCurrentSet(new Set(currentNumbers)); + const newSet = new Set(currentNumbers); + + // Find newly hit numbers (numbers in current set but not in previous set) + const newlyHit = new Set([...newSet].filter(num => !currentSet.has(num))); + + if (newlyHit.size > 0) { + setNewlyHitNumbers(newlyHit); + + // Start flashing animation for newly hit numbers + // Flash for 3 seconds (3000ms) at twice per second (500ms intervals) + const flashInterval = setInterval(() => { + setFlashState(prev => !prev); + }, 500); + + // Stop flashing after 3 seconds + setTimeout(() => { + clearInterval(flashInterval); + setNewlyHitNumbers(new Set()); // Clear newly hit numbers + setFlashState(false); + }, 3000); + } + + setPreviousSet(currentSet); + setCurrentSet(newSet); } catch (error) { console.error('Error updating numbers hit tracker:', error); } @@ -42,7 +68,7 @@ export function NumbersHitTracker(props) { return () => { rouletteContractEvents.off('ExecutedWager', handleExecutedWager); }; - }, [props.playerAddress]); + }, [props.playerAddress, currentSet]); return (
Date: Sat, 5 Jul 2025 22:08:44 -0400 Subject: [PATCH 2/4] increase flash speed --- src/components/roulette/NumbersHitTracker.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/roulette/NumbersHitTracker.js b/src/components/roulette/NumbersHitTracker.js index 91586fd..1927d92 100644 --- a/src/components/roulette/NumbersHitTracker.js +++ b/src/components/roulette/NumbersHitTracker.js @@ -44,14 +44,14 @@ export function NumbersHitTracker(props) { // Flash for 3 seconds (3000ms) at twice per second (500ms intervals) const flashInterval = setInterval(() => { setFlashState(prev => !prev); - }, 500); + }, 250); - // Stop flashing after 3 seconds + // Stop flashing after 2 seconds setTimeout(() => { clearInterval(flashInterval); setNewlyHitNumbers(new Set()); // Clear newly hit numbers setFlashState(false); - }, 3000); + }, 2000); } setPreviousSet(currentSet); From 7704cba61a15f4598c7ff55df3346f5e30295cff Mon Sep 17 00:00:00 2001 From: Jed Duffey Date: Sat, 5 Jul 2025 22:16:55 -0400 Subject: [PATCH 3/4] fix: remove unused previousSet variable to resolve CI build issue - Remove unused previousSet state variable that was causing ESLint warnings - Keep correct flash animation logic for newly hit numbers - Ensure only truly new numbers get flash animation, not previously hit numbers --- src/components/roulette/NumbersHitTracker.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/roulette/NumbersHitTracker.js b/src/components/roulette/NumbersHitTracker.js index 1927d92..c45d9d9 100644 --- a/src/components/roulette/NumbersHitTracker.js +++ b/src/components/roulette/NumbersHitTracker.js @@ -7,7 +7,6 @@ import { getPlayerNumberCompletionSetCurrent, rouletteContractEvents } from "../ const CLASS_NAME = "NumbersHitTracker-component"; export function NumbersHitTracker(props) { const [currentSet, setCurrentSet] = useState(new Set()); - const [previousSet, setPreviousSet] = useState(new Set()); const [newlyHitNumbers, setNewlyHitNumbers] = useState(new Set()); const [flashState, setFlashState] = useState(false); @@ -54,7 +53,6 @@ export function NumbersHitTracker(props) { }, 2000); } - setPreviousSet(currentSet); setCurrentSet(newSet); } catch (error) { console.error('Error updating numbers hit tracker:', error); From fa9f171a17c1d06160abcbc7f14494e1b22751bf Mon Sep 17 00:00:00 2001 From: Jed Duffey Date: Sat, 5 Jul 2025 22:25:36 -0400 Subject: [PATCH 4/4] rm deepsource --- .deepsource.toml | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .deepsource.toml diff --git a/.deepsource.toml b/.deepsource.toml deleted file mode 100644 index a26941c..0000000 --- a/.deepsource.toml +++ /dev/null @@ -1,7 +0,0 @@ -version = 1 - -[[analyzers]] -name = "javascript" - - [analyzers.meta] - plugins = ["react"] \ No newline at end of file