1- import React , { useState } from "react" ;
2- import PageDraftDeck from "./PageDraftDeck" ;
3- import PageSettings from "./PageSettings" ;
1+ import React from "react" ;
2+ import PageDraftDeck from "../shared/draftPage /PageDraftDeck" ;
3+ import PageSettings from "../shared/settingsPage /PageSettings" ;
44import Stepper from "../../core/stepper/Stepper" ;
55import StepperStep from "../../core/stepper/StepperStep" ;
66import { Deck } from "../../api/CardModel" ;
7- import PageOverview from "./PageOverview " ;
7+ import LocaleDraftWizardResultPage from "./LocaleDraftWizardResultPage " ;
88import { ExtraDeckFilter , MainDeckFilter } from "../../api/CardFilter" ;
99import { DraftSettings } from "../../api/Draft" ;
10- import { ExportDeck } from "../../deck/DeckRandomGeneratorPage" ;
10+ import { ExportDeck } from "../shared/deck/DeckRandomGeneratorPage" ;
11+ import useLocalState from "../../api/hooks/storage/useLocalState" ;
1112
1213export enum LocalDraftStages {
1314 Settings = 1 ,
@@ -16,50 +17,61 @@ export enum LocalDraftStages {
1617 DeckOverview
1718}
1819
19- function DeckDraftWizard ( ) {
20- const [ draftSettings , setDraftSettings ] = useState < DraftSettings > ( { } as DraftSettings )
21- const [ currentStage , setCurrentStage ] = useState < LocalDraftStages > ( LocalDraftStages . Settings )
22- const [ deck , setDeck ] = useState < Deck > ( { cards : [ ] } as Deck )
20+ function LocaleDraftWizard ( ) {
21+ const [ draftSettings , setDraftSettings , resetDraftSettings ] = useLocalState < DraftSettings > ( "deck_draft_wizard_settings" , { } as DraftSettings )
22+ const [ currentStage , setCurrentStage , resetCurrentStage ] = useLocalState < LocalDraftStages > ( "deck_draft_wizard_stage" , LocalDraftStages . Settings )
23+ const [ deck , setDeck , resetDeck ] = useLocalState < Deck > ( "deck_draft_wizard_deck" , { cards : [ ] } as Deck )
2324
2425 let mainDeckFilter = MainDeckFilter
2526 mainDeckFilter . sets = draftSettings . sets
2627
2728 let extraDeckFilter = ExtraDeckFilter
2829 extraDeckFilter . sets = draftSettings . sets
2930
31+ function onAbortDraft ( ) {
32+ resetDeck ( )
33+ resetDraftSettings ( )
34+ resetCurrentStage ( )
35+ setCurrentStage ( LocalDraftStages . Settings )
36+ }
37+
3038 let stageBody
3139 switch ( currentStage ) {
3240 case LocalDraftStages . DraftMain :
3341 stageBody = < PageDraftDeck isMainDraft = { true }
42+ storagePrefix = { "locale_main" }
3443 filter = { mainDeckFilter }
3544 deck = { deck }
45+ canAbort = { true }
3646 setDeck = { setDeck }
3747 draftSize = { draftSettings . main_deck_size }
3848 maxRounds = { draftSettings . main_deck_draws }
3949 onNextClick = { ( ) => setCurrentStage ( LocalDraftStages . DraftExtra ) }
40- onAbort = { ( ) => setCurrentStage ( LocalDraftStages . Settings ) } />
50+ onAbort = { onAbortDraft } />
4151 break
4252 case LocalDraftStages . DraftExtra :
4353 stageBody = < PageDraftDeck isMainDraft = { false }
54+ storagePrefix = { "locale_extra" }
4455 filter = { extraDeckFilter }
4556 deck = { deck }
57+ canAbort = { true }
4658 setDeck = { setDeck }
4759 draftSize = { draftSettings . extra_deck_size }
4860 maxRounds = { draftSettings . extra_deck_draws }
4961 onNextClick = { ( ) => setCurrentStage ( LocalDraftStages . DeckOverview ) }
50- onAbort = { ( ) => setCurrentStage ( LocalDraftStages . Settings ) } />
62+ onAbort = { onAbortDraft } />
5163 break
5264 case LocalDraftStages . DeckOverview :
53- stageBody = < PageOverview deck = { deck } submitName = { "Export" } onSubmit = { ExportDeck } />
65+ stageBody = < LocaleDraftWizardResultPage onAbort = { onAbortDraft } deck = { deck } />
5466 break
5567 default :
5668 case LocalDraftStages . Settings :
5769 stageBody = < PageSettings submitButtonName = { "Next" }
5870 local = { true }
5971 onSettingsSubmit = { ( settings : DraftSettings ) => {
60- setDraftSettings ( settings )
61- setCurrentStage ( LocalDraftStages . DraftMain )
62- } } />
72+ setDraftSettings ( settings )
73+ setCurrentStage ( LocalDraftStages . DraftMain )
74+ } } />
6375 break
6476 }
6577
@@ -88,4 +100,4 @@ function getCurrentStageHeader(currentStage: LocalDraftStages): JSX.Element {
88100 </ Stepper >
89101}
90102
91- export default DeckDraftWizard
103+ export default LocaleDraftWizard
0 commit comments