|
|
@@ -69,6 +69,7 @@ type SetLoadStatus
|
|
|
| NoLocalData
|
|
|
| HasLocalData Database.Database
|
|
|
| FetchingRemoteData
|
|
|
+ | DeletingLocalData
|
|
|
|
|
|
|
|
|
type alias ChooseSetModel =
|
|
|
@@ -143,6 +144,8 @@ type Msg
|
|
|
| IOGotSets (Result String (List String))
|
|
|
| IOFetchSetData String
|
|
|
| IOGotSetData (Result String ( String, Maybe Database.Database ))
|
|
|
+ | IODeleteSetData String -- Delete by set code
|
|
|
+ | IOGotDeleteSetData String -- Successful deletion by set code
|
|
|
| PortReceiveDoesSetHaveLocalData String
|
|
|
| StartDraft String Database.Database
|
|
|
| OpenCardExplorer String Database.Database
|
|
|
@@ -260,6 +263,16 @@ update msg model =
|
|
|
, API.getSetData setCode IOGotSetData
|
|
|
)
|
|
|
|
|
|
+ IODeleteSetData setCode ->
|
|
|
+ ( ChooseSet { mdl | sets = Dict.insert setCode DeletingLocalData mdl.sets }
|
|
|
+ , sendDeleteLocalData (Encode.string setCode)
|
|
|
+ )
|
|
|
+
|
|
|
+ IOGotDeleteSetData setCode ->
|
|
|
+ ( ChooseSet { mdl | sets = Dict.insert setCode NoLocalData mdl.sets }
|
|
|
+ , Cmd.none
|
|
|
+ )
|
|
|
+
|
|
|
IOGotSetData (Ok ( setCode, Just database )) ->
|
|
|
( ChooseSet { mdl | sets = Dict.insert setCode (HasLocalData database) mdl.sets }
|
|
|
, sendSaveLocalData (Database.encode ( setCode, database ))
|
|
|
@@ -340,6 +353,12 @@ update msg model =
|
|
|
IOFetchSetData _ ->
|
|
|
( Ready mdl, Cmd.none )
|
|
|
|
|
|
+ IODeleteSetData setCode ->
|
|
|
+ ( Ready mdl, Cmd.none )
|
|
|
+
|
|
|
+ IOGotDeleteSetData setCode ->
|
|
|
+ ( Ready mdl, Cmd.none )
|
|
|
+
|
|
|
PortReceiveDoesSetHaveLocalData _ ->
|
|
|
( Ready mdl, Cmd.none )
|
|
|
|
|
|
@@ -402,13 +421,17 @@ viewChooseSet model =
|
|
|
CheckingLocalData ->
|
|
|
text "Loading..."
|
|
|
|
|
|
+ DeletingLocalData ->
|
|
|
+ text "Deleting..."
|
|
|
+
|
|
|
NoLocalData ->
|
|
|
Button.make "Download" (IOFetchSetData setCode) |> Button.view
|
|
|
|
|
|
HasLocalData database ->
|
|
|
- div []
|
|
|
+ div [ class "flex gap-2" ]
|
|
|
[ Button.make "Explore" (OpenCardExplorer setCode database) |> Button.view
|
|
|
, Button.make "View draft" (StartDraft setCode database) |> Button.view
|
|
|
+ , Button.make "Delete" (IODeleteSetData setCode) |> Button.view
|
|
|
]
|
|
|
in
|
|
|
div [ class "w-full h-full bg-slate-100 flex justify-center items-center" ]
|
|
|
@@ -1011,7 +1034,10 @@ viewKeyedCard model wasChosen { name, frontImage, backImage } =
|
|
|
|
|
|
subscriptions : Model -> Sub Msg
|
|
|
subscriptions _ =
|
|
|
- receiveDoesSetHaveLocalData PortReceiveDoesSetHaveLocalData
|
|
|
+ Sub.batch
|
|
|
+ [ receiveDoesSetHaveLocalData PortReceiveDoesSetHaveLocalData
|
|
|
+ , receiveDidDeleteLocalData IOGotDeleteSetData
|
|
|
+ ]
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1025,3 +1051,9 @@ port receiveDoesSetHaveLocalData : (String -> msg) -> Sub msg
|
|
|
|
|
|
|
|
|
port sendSaveLocalData : Encode.Value -> Cmd msg
|
|
|
+
|
|
|
+
|
|
|
+port sendDeleteLocalData : Encode.Value -> Cmd msg
|
|
|
+
|
|
|
+
|
|
|
+port receiveDidDeleteLocalData : (String -> msg) -> Sub msg
|