From 85c9035aeea814914ba10d9819e00b615828423c Mon Sep 17 00:00:00 2001 From: Nicholas Sorokin Date: Sat, 17 Aug 2024 17:48:09 +0930 Subject: [PATCH] fix: remove use of "TEMP_DECK" hack Fixes #4 --- src/App.tsx | 4 ++-- src/components/form/CreateCardForm.tsx | 8 ++++---- src/context/universe/actions/CardActions.ts | 12 ++++++++++-- src/lib/SaveFormat.ts | 5 +++-- src/lib/consts.tsx | 1 - 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index e14e91b..2ba65dc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -52,7 +52,7 @@ import { cities } from './data/cities'; import { useDeck } from './hooks/useDeck'; import { createSave, loadSave } from './lib/SaveFormat'; import { getAutosave, saveToAutosave } from './lib/autosave'; -import { DISCARD_DECK, INFECTION_DECK, TEMP_DECK } from './lib/consts'; +import { DISCARD_DECK, INFECTION_DECK } from './lib/consts'; function App() { const [appState, dispatchAppState] = useAppState(); @@ -116,11 +116,11 @@ function App() { } else { dispatch(createDeck(INFECTION_DECK)); dispatch(createDeck(DISCARD_DECK)); - dispatch(createDeck(TEMP_DECK)); dispatch( createCards( INFECTION_DECK, + 0, ...Object.entries(cities).flatMap(([city, count]) => new Array(count).fill(city), ), diff --git a/src/components/form/CreateCardForm.tsx b/src/components/form/CreateCardForm.tsx index 04c577a..4a3139b 100644 --- a/src/components/form/CreateCardForm.tsx +++ b/src/components/form/CreateCardForm.tsx @@ -5,9 +5,8 @@ import { useUniverse, } from '../../context/universe/UniverseContext'; import { createCards } from '../../context/universe/actions/CardActions'; -import { moveCard } from '../../context/universe/actions/DeckActions'; import { setKeyframe } from '../../context/withUndoReducer'; -import { INFECTION_DECK, TEMP_DECK } from '../../lib/consts'; +import { INFECTION_DECK } from '../../lib/consts'; import { Button } from '../common/Button'; import { Input } from '../common/Input'; @@ -44,8 +43,9 @@ const CreateCardFormImpl = memo(function CreateCardFormImpl({ const handleSubmit = (e: FormEvent) => { e.preventDefault(); - dispatch(createCards(TEMP_DECK, ...new Array(count).fill(name))); - dispatch(moveCard(TEMP_DECK, 0, INFECTION_DECK, 0, -1)); + dispatch( + createCards(INFECTION_DECK, 0, ...new Array(count).fill(name)), + ); dispatch(setKeyframe()); setName(''); setCount(1); diff --git a/src/context/universe/actions/CardActions.ts b/src/context/universe/actions/CardActions.ts index 5aade89..b488ce3 100644 --- a/src/context/universe/actions/CardActions.ts +++ b/src/context/universe/actions/CardActions.ts @@ -6,13 +6,20 @@ interface CreateCardAction { type: typeof ACTION_CREATE_CARD; names: string[]; targetDeckId: Deck['id']; + targetIndex: number; } export function createCards( targetDeck: Deck['id'], + targetIndex: number, ...names: string[] ): CreateCardAction { - return { type: ACTION_CREATE_CARD, names, targetDeckId: targetDeck }; + return { + type: ACTION_CREATE_CARD, + names, + targetDeckId: targetDeck, + targetIndex, + }; } export function createCardReducer( @@ -31,13 +38,14 @@ export function createCardReducer( const newDeck = { ...deck, items: [ - ...deck.items, + ...deck.items.slice(0, action.targetIndex), ...newCards.map( (card): DeckItem => ({ type: 'card', cardId: card.id, }), ), + ...deck.items.slice(action.targetIndex), ], }; diff --git a/src/lib/SaveFormat.ts b/src/lib/SaveFormat.ts index d39294b..010f685 100644 --- a/src/lib/SaveFormat.ts +++ b/src/lib/SaveFormat.ts @@ -2,6 +2,7 @@ import { Card } from '../context/universe/Card'; import { Deck } from '../context/universe/Deck'; import { Group } from '../context/universe/Group'; import { Universe } from '../context/universe/Universe'; +import { DISCARD_DECK, INFECTION_DECK } from './consts'; interface SaveFormatV0 { infectionDeck: DeckSaveFormatV0; @@ -150,11 +151,11 @@ export function loadSave(data: SaveFormatV0 | SaveFormatV1): { } const infectionDeck: WDeck = { - id: 'Infection Deck', + id: INFECTION_DECK, items: [], }; const discardDeck: WDeck = { - id: 'Discard Deck', + id: DISCARD_DECK, items: [], }; diff --git a/src/lib/consts.tsx b/src/lib/consts.tsx index e909f19..530d8fd 100644 --- a/src/lib/consts.tsx +++ b/src/lib/consts.tsx @@ -1,3 +1,2 @@ export const INFECTION_DECK = 'Infection Deck'; export const DISCARD_DECK = 'Discard Deck'; -export const TEMP_DECK = 'TEMP';