impls claims
This commit is contained in:
48
src/Api.elm
48
src/Api.elm
@@ -22,8 +22,8 @@ type Update
|
||||
= ItemRemoved Item
|
||||
| ItemAdded Item
|
||||
| WealthUpdated Wealth
|
||||
| ClaimAdded ()
|
||||
| ClaimRemoved ()
|
||||
| ClaimAdded Claim
|
||||
| ClaimRemoved Claim
|
||||
|
||||
|
||||
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
|
||||
--
|
||||
@@ -168,22 +184,6 @@ fetchLoot dest =
|
||||
-- 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
|
||||
@@ -208,8 +208,8 @@ updatesDecoder =
|
||||
[ field "ItemRemoved" (itemDecoder |> D.andThen (\i -> succeed <| ItemRemoved i))
|
||||
, field "ItemAdded" (itemDecoder |> D.andThen (\i -> succeed <| ItemAdded i))
|
||||
, field "Wealth" (wealthDecoder |> D.andThen (\i -> succeed <| WealthUpdated i))
|
||||
, field "ClaimRemoved" (succeed () |> D.andThen (\i -> succeed <| ClaimRemoved i))
|
||||
, field "ClaimAdded" (succeed () |> D.andThen (\i -> succeed <| ClaimAdded i))
|
||||
, field "ClaimRemoved" (claimDecoder |> D.andThen (\i -> succeed <| ClaimRemoved i))
|
||||
, field "ClaimAdded" (claimDecoder |> D.andThen (\i -> succeed <| ClaimAdded i))
|
||||
]
|
||||
|
||||
|
||||
@@ -247,18 +247,16 @@ buildPayload mode items =
|
||||
E.object
|
||||
[ ( "items", items |> E.list (\i -> E.list identity [ E.int i.id, E.null ]) )
|
||||
, ( "global_mod", E.null )
|
||||
, ( "players", E.null )
|
||||
]
|
||||
|
||||
-- API expects the list of claimed loot ids
|
||||
Modes.Grab ->
|
||||
E.object
|
||||
[ ( "items", items |> E.list (\i -> E.int i.id) )
|
||||
, ( "global_mod", E.null )
|
||||
]
|
||||
items |> E.list (\i -> E.int i.id)
|
||||
|
||||
Modes.Add ->
|
||||
E.object
|
||||
[ ( "items", items |> E.list (\i -> E.int i.id) )
|
||||
, ( "global_mod", E.null )
|
||||
]
|
||||
|
||||
|
||||
|
||||
13
src/Main.elm
13
src/Main.elm
@@ -306,6 +306,12 @@ setLoot items model =
|
||||
{ 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
|
||||
|
||||
@@ -340,11 +346,12 @@ applyUpdate u model =
|
||||
}
|
||||
}
|
||||
|
||||
Api.ClaimAdded _ ->
|
||||
model
|
||||
Api.ClaimAdded claim ->
|
||||
model |> setClaims (claim :: model.chest.claims)
|
||||
|
||||
Api.ClaimRemoved _ ->
|
||||
Api.ClaimRemoved claim ->
|
||||
model
|
||||
|> setClaims (List.filter (\c -> c.id /= claim.id) model.chest.claims)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user