onasty/web/src/Api/Profile.elm(view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
module Api.Profile exposing (changePassword, me, requestEmailChange)
import Api
import Data.Me as Me exposing (Me)
import Effect exposing (Effect)
import Http
import Json.Decode as Decode
import Json.Encode as E
me : { onResponse : Result Api.Error Me -> msg } -> Effect msg
me options =
Effect.sendApiRequest
{ endpoint = "/api/v1/me"
, method = "GET"
, body = Http.emptyBody
, onResponse = options.onResponse
, decoder = Me.decode
}
requestEmailChange : { onResponse : Result Api.Error () -> msg, newEmail : String } -> Effect msg
requestEmailChange { onResponse, newEmail } =
Effect.sendApiRequest
{ endpoint = "/api/v1/auth/change-email"
, method = "POST"
, body = E.object [ ( "new_email", E.string newEmail ) ] |> Http.jsonBody
, onResponse = onResponse
, decoder = Decode.succeed ()
}
changePassword : { onResponse : Result Api.Error () -> msg, currentPassword : String, newPassword : String } -> Effect msg
changePassword { onResponse, currentPassword, newPassword } =
Effect.sendApiRequest
{ endpoint = "/api/v1/auth/change-password"
, method = "POST"
, body =
Http.jsonBody <|
E.object
[ ( "current_password", E.string currentPassword )
, ( "new_password", E.string newPassword )
]
, onResponse = onResponse
, decoder = Decode.succeed ()
}
|