feat(#28): persist last-used break settings in localStorage
- Preload BreakRule and BreakOrder steps from localStorage defaults - Save selections (rule, first, second) when chosen to speed future setup Refs #28
This commit is contained in:
@@ -836,12 +836,14 @@ interface BreakOrderStepProps {
|
||||
rule: BreakRule;
|
||||
onNext: (first: number, second?: number) => void;
|
||||
onCancel: () => void;
|
||||
initialFirst?: number;
|
||||
initialSecond?: number;
|
||||
}
|
||||
|
||||
const BreakOrderStep = ({ players, rule, onNext, onCancel }: BreakOrderStepProps) => {
|
||||
const BreakOrderStep = ({ players, rule, onNext, onCancel, initialFirst = 1, initialSecond }: BreakOrderStepProps) => {
|
||||
const playerCount = players.filter(Boolean).length;
|
||||
const [first, setFirst] = useState<number>(1);
|
||||
const [second, setSecond] = useState<number>(playerCount >= 2 ? 2 : 1);
|
||||
const [first, setFirst] = useState<number>(initialFirst);
|
||||
const [second, setSecond] = useState<number>(initialSecond ?? (playerCount >= 2 ? 2 : 1));
|
||||
|
||||
const handleFirst = (idx: number) => {
|
||||
setFirst(idx);
|
||||
|
||||
@@ -49,12 +49,17 @@ export default function NewGameScreen({
|
||||
|
||||
const handleBreakRuleNext = (rule: 'winnerbreak' | 'wechselbreak') => {
|
||||
onDataChange({ breakRule: rule });
|
||||
try { localStorage.setItem('lastBreakRule', rule); } catch {}
|
||||
onStepChange('breakOrder');
|
||||
};
|
||||
|
||||
const handleBreakOrderNext = (first: number, second?: number) => {
|
||||
const finalData = { ...data, breakFirst: first, breakSecond: second ?? '' } as any;
|
||||
onDataChange({ breakFirst: first, breakSecond: second ?? '' });
|
||||
try {
|
||||
localStorage.setItem('lastBreakFirst', String(first));
|
||||
if (second) localStorage.setItem('lastBreakSecond', String(second));
|
||||
} catch {}
|
||||
onCreateGame(finalData as any);
|
||||
};
|
||||
|
||||
@@ -139,7 +144,7 @@ export default function NewGameScreen({
|
||||
<BreakRuleStep
|
||||
onNext={handleBreakRuleNext}
|
||||
onCancel={handleStepBack}
|
||||
initialValue={(data.breakRule as any) || 'winnerbreak'}
|
||||
initialValue={(data.breakRule as any) || (typeof window !== 'undefined' ? (localStorage.getItem('lastBreakRule') as any) : 'winnerbreak') || 'winnerbreak'}
|
||||
/>
|
||||
)}
|
||||
|
||||
@@ -149,6 +154,8 @@ export default function NewGameScreen({
|
||||
rule={(data.breakRule as any) || 'winnerbreak'}
|
||||
onNext={handleBreakOrderNext}
|
||||
onCancel={handleStepBack}
|
||||
initialFirst={(typeof window !== 'undefined' && localStorage.getItem('lastBreakFirst')) ? parseInt(localStorage.getItem('lastBreakFirst')!, 10) : 1}
|
||||
initialSecond={(typeof window !== 'undefined' && localStorage.getItem('lastBreakSecond')) ? parseInt(localStorage.getItem('lastBreakSecond')!, 10) : undefined}
|
||||
/>
|
||||
)}
|
||||
</Screen>
|
||||
|
||||
Reference in New Issue
Block a user