summaryrefslogtreecommitdiffstats
path: root/src/Types.elm
blob: f10223e0f0af6c7029de3c430de3b9e4edc40df3 (plain)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
module Types exposing (..)

import Browser.Navigation exposing (Key)
import Http
import RemoteData exposing (RemoteData)
import Time


type alias Model =
    { now : Time.Posix
    , key : Key
    , userData : UserData
    , apiURL : String
    , posts : RemoteData (List Post)
    , composeTextInputValue : String
    , composeImageInputValue : String
    }


type alias Flags =
    { userData : UserData
    , apiURL : String
    }


type alias UserData =
    { name : String
    , email : String
    , pictureUrl : String
    }


type Msg
    = NoOp
    | RequestLogout
      -- TIME
    | SetNowPosix Time.Posix
      -- POSTS
    | GetPosts
    | GotPosts (Result Http.Error (List Post))
    | LikePost Post
    | LikedPost (Result Http.Error Post)
      -- COMPOSE POST
    | ComposeTextInputChanged String
    | ComposeImageInputChanged String
    | ComposePost
    | ComposedPost (Result Http.Error Post)


type alias Author =
    { id : String
    , name : String
    }


type alias Post =
    { id : String
    , content : String
    , author : Author
    , createdAt : Time.Posix
    , likes : Int
    , userPictureUrl : String
    , imageUrl : Maybe String
    }