all repos

onasty @ 7ff621dd2cbf09e69e4ec0edf8bf5e4a28b7d637

a one-time notes service

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 ()
        }