Răsfoiți Sursa

Start draft from set

Cadel Watson 1 an în urmă
părinte
comite
13a116bfa9
1 a modificat fișierele cu 13 adăugiri și 9 ștergeri
  1. 13 9
      src/Main.elm

+ 13 - 9
src/Main.elm

@@ -126,12 +126,13 @@ type Msg
     | IOFetchSetData String
     | IOGotSetData (Result String ( String, Maybe Database.Database ))
     | PortReceiveDoesSetHaveLocalData String
+    | StartDraft String Database.Database
 
 
-startDraft : ChooseSetModel -> String -> ( Model, Cmd Msg )
-startDraft initFlags setCode =
-    case ( Dict.get setCode initFlags.sets, Draft.decode initFlags.draftData ) of
-        ( Just (HasLocalData database), Ok draftData ) ->
+startDraft : ChooseSetModel -> Database.Database -> ( Model, Cmd Msg )
+startDraft initFlags database =
+    case Draft.decode initFlags.draftData of
+        Ok draftData ->
             ( Ready
                 { draft = draftData
                 , database = database
@@ -151,10 +152,7 @@ startDraft initFlags setCode =
             , Cmd.none
             )
 
-        ( _, Ok _ ) ->
-            ( Error { error = "No set data in init flags" }, Cmd.none )
-
-        ( _, Err err ) ->
+        Err err ->
             ( Error { error = "Error decoding draft data: " ++ err }, Cmd.none )
 
 
@@ -163,6 +161,9 @@ update msg model =
     case model of
         ChooseSet mdl ->
             case msg of
+                StartDraft setCode database ->
+                    startDraft mdl database
+
                 IOGotSets (Ok remoteData) ->
                     -- Merge any new sets into the local sets
                     let
@@ -304,6 +305,9 @@ update msg model =
                 PortReceiveDoesSetHaveLocalData _ ->
                     ( Ready mdl, Cmd.none )
 
+                StartDraft _ _ ->
+                    ( Ready mdl, Cmd.none )
+
         Error mdl ->
             ( Error mdl, Cmd.none )
 
@@ -341,7 +345,7 @@ viewChooseSet model =
                     button [ onClick (IOFetchSetData setCode) ] [ text "Download" ]
 
                 HasLocalData database ->
-                    button [] [ text "Open" ]
+                    button [ onClick (StartDraft setCode database) ] [ text "Open" ]
     in
     div [ class "w-full h-full bg-slate-100 flex justify-center items-center" ]
         [ div [ class "max-w-2xl max-h-2xl" ]