impls claims

This commit is contained in:
2019-11-07 16:09:13 +01:00
parent 141789bd25
commit c98b930647
2 changed files with 33 additions and 28 deletions

View File

@@ -22,8 +22,8 @@ type Update
= ItemRemoved Item = ItemRemoved Item
| ItemAdded Item | ItemAdded Item
| WealthUpdated Wealth | WealthUpdated Wealth
| ClaimAdded () | ClaimAdded Claim
| ClaimRemoved () | ClaimRemoved Claim
type Msg type Msg
@@ -90,6 +90,22 @@ type alias Claim =
} }
claimDecoder =
D.map3 Claim
(D.field "id" int)
(D.field "player_id" int)
(D.field "loot_id" int)
fetchClaims : Int -> Cmd Msg
fetchClaims playerId =
Http.get
{ url = "http://localhost:8088/api/claims"
, expect =
valueDecoder (D.list claimDecoder)
|> Http.expectJson (GotClaims playerId)
}
-- PLAYERS -- PLAYERS
-- --
@@ -168,22 +184,6 @@ fetchLoot dest =
-- CLAIMS -- CLAIMS
claimDecoder =
D.map3 Claim
(D.field "id" int)
(D.field "player_id" int)
(D.field "loot_id" int)
fetchClaims : Int -> Cmd Msg
fetchClaims playerId =
Http.get
{ url = "http://localhost:8088/api/claims"
, expect =
valueDecoder (D.list claimDecoder)
|> Http.expectJson (GotClaims playerId)
}
-- API Response -- API Response
@@ -208,8 +208,8 @@ updatesDecoder =
[ field "ItemRemoved" (itemDecoder |> D.andThen (\i -> succeed <| ItemRemoved i)) [ field "ItemRemoved" (itemDecoder |> D.andThen (\i -> succeed <| ItemRemoved i))
, field "ItemAdded" (itemDecoder |> D.andThen (\i -> succeed <| ItemAdded i)) , field "ItemAdded" (itemDecoder |> D.andThen (\i -> succeed <| ItemAdded i))
, field "Wealth" (wealthDecoder |> D.andThen (\i -> succeed <| WealthUpdated i)) , field "Wealth" (wealthDecoder |> D.andThen (\i -> succeed <| WealthUpdated i))
, field "ClaimRemoved" (succeed () |> D.andThen (\i -> succeed <| ClaimRemoved i)) , field "ClaimRemoved" (claimDecoder |> D.andThen (\i -> succeed <| ClaimRemoved i))
, field "ClaimAdded" (succeed () |> D.andThen (\i -> succeed <| ClaimAdded i)) , field "ClaimAdded" (claimDecoder |> D.andThen (\i -> succeed <| ClaimAdded i))
] ]
@@ -247,18 +247,16 @@ buildPayload mode items =
E.object E.object
[ ( "items", items |> E.list (\i -> E.list identity [ E.int i.id, E.null ]) ) [ ( "items", items |> E.list (\i -> E.list identity [ E.int i.id, E.null ]) )
, ( "global_mod", E.null ) , ( "global_mod", E.null )
, ( "players", E.null )
] ]
-- API expects the list of claimed loot ids
Modes.Grab -> Modes.Grab ->
E.object items |> E.list (\i -> E.int i.id)
[ ( "items", items |> E.list (\i -> E.int i.id) )
, ( "global_mod", E.null )
]
Modes.Add -> Modes.Add ->
E.object E.object
[ ( "items", items |> E.list (\i -> E.int i.id) ) [ ( "items", items |> E.list (\i -> E.int i.id) )
, ( "global_mod", E.null )
] ]

View File

@@ -306,6 +306,12 @@ setLoot items model =
{ model | chest = { chest | loot = items } } { model | chest = { chest | loot = items } }
setClaims : Claims -> Model -> Model
setClaims claims model =
let
chest = model.chest
in
{ model | chest = { chest | claims = claims } }
-- DbUpdates always refer to the active player's loot -- DbUpdates always refer to the active player's loot
@@ -340,11 +346,12 @@ applyUpdate u model =
} }
} }
Api.ClaimAdded _ -> Api.ClaimAdded claim ->
model model |> setClaims (claim :: model.chest.claims)
Api.ClaimRemoved _ -> Api.ClaimRemoved claim ->
model model
|> setClaims (List.filter (\c -> c.id /= claim.id) model.chest.claims)