Files
elm-0.19-workshop/part5/src/Data/UserPhoto.elm
2018-05-05 05:39:19 -04:00

54 lines
1017 B
Elm

module Data.UserPhoto exposing (UserPhoto, decoder, encode, src, toMaybeString)
import Html exposing (Attribute)
import Html.Attributes
import Json.Decode as Decode exposing (Decoder)
import Json.Encode as Encode exposing (Value)
import Json.Encode.Extra as EncodeExtra
type UserPhoto
= UserPhoto (Maybe String)
src : UserPhoto -> Attribute msg
src =
photoToUrl >> Html.Attributes.src
decoder : Decoder UserPhoto
decoder =
Decode.map UserPhoto (Decode.nullable Decode.string)
encode : UserPhoto -> Value
encode (UserPhoto maybeUrl) =
EncodeExtra.maybe Encode.string maybeUrl
toMaybeString : UserPhoto -> Maybe String
toMaybeString (UserPhoto maybeUrl) =
maybeUrl
-- INTERNAL --
photoToUrl : UserPhoto -> String
photoToUrl (UserPhoto maybeUrl) =
case maybeUrl of
Nothing ->
defaultPhotoUrl
Just "" ->
defaultPhotoUrl
Just url ->
url
defaultPhotoUrl : String
defaultPhotoUrl =
"/assets/images/smiley-cyrus.jpg"