Clean up some old TODOs
This commit is contained in:
@@ -28,21 +28,6 @@ decoder =
|
|||||||
-- TRANSFORM
|
-- TRANSFORM
|
||||||
|
|
||||||
|
|
||||||
src : Avatar -> Attribute msg
|
|
||||||
src (Avatar maybeUrl) =
|
|
||||||
Html.Attributes.src (resolveAvatarUrl maybeUrl)
|
|
||||||
|
|
||||||
|
|
||||||
resolveAvatarUrl : Maybe String -> String
|
|
||||||
resolveAvatarUrl maybeUrl =
|
|
||||||
{- 👉 TODO #1 of 2: return the user's avatar from maybeUrl, if maybeUrl actually
|
|
||||||
contains one. If maybeUrl is Nothing, return this URL instead:
|
|
||||||
|
|
||||||
https://static.productionready.io/images/smiley-cyrus.jpg
|
|
||||||
-}
|
|
||||||
""
|
|
||||||
|
|
||||||
|
|
||||||
encode : Avatar -> Value
|
encode : Avatar -> Value
|
||||||
encode (Avatar maybeUrl) =
|
encode (Avatar maybeUrl) =
|
||||||
case maybeUrl of
|
case maybeUrl of
|
||||||
@@ -53,6 +38,19 @@ encode (Avatar maybeUrl) =
|
|||||||
Encode.null
|
Encode.null
|
||||||
|
|
||||||
|
|
||||||
|
src : Avatar -> Attribute msg
|
||||||
|
src (Avatar maybeUrl) =
|
||||||
|
case maybeUrl of
|
||||||
|
Nothing ->
|
||||||
|
Asset.src Asset.defaultAvatar
|
||||||
|
|
||||||
|
Just "" ->
|
||||||
|
Asset.src Asset.defaultAvatar
|
||||||
|
|
||||||
|
Just url ->
|
||||||
|
Html.Attributes.src url
|
||||||
|
|
||||||
|
|
||||||
toMaybeString : Avatar -> Maybe String
|
toMaybeString : Avatar -> Maybe String
|
||||||
toMaybeString (Avatar maybeUrl) =
|
toMaybeString (Avatar maybeUrl) =
|
||||||
maybeUrl
|
maybeUrl
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import Api
|
|||||||
import Article exposing (Article, Full)
|
import Article exposing (Article, Full)
|
||||||
import Article.Body exposing (Body)
|
import Article.Body exposing (Body)
|
||||||
import Article.Slug as Slug exposing (Slug)
|
import Article.Slug as Slug exposing (Slug)
|
||||||
import Article.Tag
|
|
||||||
import Browser.Navigation as Nav
|
import Browser.Navigation as Nav
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (attribute, class, disabled, href, id, placeholder, type_, value)
|
import Html.Attributes exposing (attribute, class, disabled, href, id, placeholder, type_, value)
|
||||||
@@ -498,14 +497,8 @@ validateField (Trimmed form) field =
|
|||||||
if String.isEmpty form.body then
|
if String.isEmpty form.body then
|
||||||
[ "body can't be blank." ]
|
[ "body can't be blank." ]
|
||||||
|
|
||||||
else if String.trim form.tags /= "" && List.all String.isEmpty (toTagList form.tags) then
|
|
||||||
[ "close, but not quite! Is your filter condition returning True when it should be returning False?" ]
|
|
||||||
|
|
||||||
else if Article.Tag.validate form.tags (toTagList form.tags) then
|
|
||||||
[]
|
|
||||||
|
|
||||||
else
|
else
|
||||||
[ "some tags were empty." ]
|
[]
|
||||||
|
|
||||||
|
|
||||||
{-| Don't trim while the user is typing! That would be super annoying.
|
{-| Don't trim while the user is typing! That would be super annoying.
|
||||||
@@ -538,7 +531,7 @@ create (Trimmed form) cred =
|
|||||||
[ ( "title", Encode.string form.title )
|
[ ( "title", Encode.string form.title )
|
||||||
, ( "description", Encode.string form.description )
|
, ( "description", Encode.string form.description )
|
||||||
, ( "body", Encode.string form.body )
|
, ( "body", Encode.string form.body )
|
||||||
, ( "tagList", Encode.list Encode.string (toTagList form.tags) )
|
, ( "tagList", Encode.list Encode.string (tagsFromString form.tags) )
|
||||||
]
|
]
|
||||||
|
|
||||||
jsonBody =
|
jsonBody =
|
||||||
@@ -553,25 +546,11 @@ create (Trimmed form) cred =
|
|||||||
|> HttpBuilder.toRequest
|
|> HttpBuilder.toRequest
|
||||||
|
|
||||||
|
|
||||||
toTagList : String -> List String
|
tagsFromString : String -> List String
|
||||||
toTagList tagString =
|
tagsFromString str =
|
||||||
{- 👉 TODO #2 of 2: add another |> to the end of this pipeline,
|
String.split " " str
|
||||||
which filters out any remaining empty strings.
|
|
||||||
|
|
||||||
To see if the bug is fixed, visit http://localhost:3000/#/editor
|
|
||||||
(you'll need to be logged in) and create an article with tags that have
|
|
||||||
multiple spaces between them, e.g. "tag1 tag2 tag3"
|
|
||||||
|
|
||||||
If the bug has not been fixed, trying to save an article with those tags
|
|
||||||
will result in an error! If it has been fixed, saving will work and the
|
|
||||||
tags will be accepted.
|
|
||||||
|
|
||||||
💡 HINT: Here's how to remove all the "foo" strings from a list of strings:
|
|
||||||
|
|
||||||
List.filter (\str -> str == "foo") listOfStrings
|
|
||||||
-}
|
|
||||||
String.split " " tagString
|
|
||||||
|> List.map String.trim
|
|> List.map String.trim
|
||||||
|
|> List.filter (not << String.isEmpty)
|
||||||
|
|
||||||
|
|
||||||
edit : Slug -> TrimmedForm -> Cred -> Http.Request (Article Full)
|
edit : Slug -> TrimmedForm -> Cred -> Http.Request (Article Full)
|
||||||
|
|||||||
@@ -28,21 +28,6 @@ decoder =
|
|||||||
-- TRANSFORM
|
-- TRANSFORM
|
||||||
|
|
||||||
|
|
||||||
src : Avatar -> Attribute msg
|
|
||||||
src (Avatar maybeUrl) =
|
|
||||||
Html.Attributes.src (resolveAvatarUrl maybeUrl)
|
|
||||||
|
|
||||||
|
|
||||||
resolveAvatarUrl : Maybe String -> String
|
|
||||||
resolveAvatarUrl maybeUrl =
|
|
||||||
{- 👉 TODO #1 of 2: return the user's avatar from maybeUrl, if maybeUrl actually
|
|
||||||
contains one. If maybeUrl is Nothing, return this URL instead:
|
|
||||||
|
|
||||||
https://static.productionready.io/images/smiley-cyrus.jpg
|
|
||||||
-}
|
|
||||||
""
|
|
||||||
|
|
||||||
|
|
||||||
encode : Avatar -> Value
|
encode : Avatar -> Value
|
||||||
encode (Avatar maybeUrl) =
|
encode (Avatar maybeUrl) =
|
||||||
case maybeUrl of
|
case maybeUrl of
|
||||||
@@ -53,6 +38,19 @@ encode (Avatar maybeUrl) =
|
|||||||
Encode.null
|
Encode.null
|
||||||
|
|
||||||
|
|
||||||
|
src : Avatar -> Attribute msg
|
||||||
|
src (Avatar maybeUrl) =
|
||||||
|
case maybeUrl of
|
||||||
|
Nothing ->
|
||||||
|
Asset.src Asset.defaultAvatar
|
||||||
|
|
||||||
|
Just "" ->
|
||||||
|
Asset.src Asset.defaultAvatar
|
||||||
|
|
||||||
|
Just url ->
|
||||||
|
Html.Attributes.src url
|
||||||
|
|
||||||
|
|
||||||
toMaybeString : Avatar -> Maybe String
|
toMaybeString : Avatar -> Maybe String
|
||||||
toMaybeString (Avatar maybeUrl) =
|
toMaybeString (Avatar maybeUrl) =
|
||||||
maybeUrl
|
maybeUrl
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import Api
|
|||||||
import Article exposing (Article, Full)
|
import Article exposing (Article, Full)
|
||||||
import Article.Body exposing (Body)
|
import Article.Body exposing (Body)
|
||||||
import Article.Slug as Slug exposing (Slug)
|
import Article.Slug as Slug exposing (Slug)
|
||||||
import Article.Tag
|
|
||||||
import Browser.Navigation as Nav
|
import Browser.Navigation as Nav
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (attribute, class, disabled, href, id, placeholder, type_, value)
|
import Html.Attributes exposing (attribute, class, disabled, href, id, placeholder, type_, value)
|
||||||
@@ -498,14 +497,8 @@ validateField (Trimmed form) field =
|
|||||||
if String.isEmpty form.body then
|
if String.isEmpty form.body then
|
||||||
[ "body can't be blank." ]
|
[ "body can't be blank." ]
|
||||||
|
|
||||||
else if String.trim form.tags /= "" && List.all String.isEmpty (toTagList form.tags) then
|
|
||||||
[ "close, but not quite! Is your filter condition returning True when it should be returning False?" ]
|
|
||||||
|
|
||||||
else if Article.Tag.validate form.tags (toTagList form.tags) then
|
|
||||||
[]
|
|
||||||
|
|
||||||
else
|
else
|
||||||
[ "some tags were empty." ]
|
[]
|
||||||
|
|
||||||
|
|
||||||
{-| Don't trim while the user is typing! That would be super annoying.
|
{-| Don't trim while the user is typing! That would be super annoying.
|
||||||
@@ -538,7 +531,7 @@ create (Trimmed form) cred =
|
|||||||
[ ( "title", Encode.string form.title )
|
[ ( "title", Encode.string form.title )
|
||||||
, ( "description", Encode.string form.description )
|
, ( "description", Encode.string form.description )
|
||||||
, ( "body", Encode.string form.body )
|
, ( "body", Encode.string form.body )
|
||||||
, ( "tagList", Encode.list Encode.string (toTagList form.tags) )
|
, ( "tagList", Encode.list Encode.string (tagsFromString form.tags) )
|
||||||
]
|
]
|
||||||
|
|
||||||
jsonBody =
|
jsonBody =
|
||||||
@@ -553,25 +546,11 @@ create (Trimmed form) cred =
|
|||||||
|> HttpBuilder.toRequest
|
|> HttpBuilder.toRequest
|
||||||
|
|
||||||
|
|
||||||
toTagList : String -> List String
|
tagsFromString : String -> List String
|
||||||
toTagList tagString =
|
tagsFromString str =
|
||||||
{- 👉 TODO #2 of 2: add another |> to the end of this pipeline,
|
String.split " " str
|
||||||
which filters out any remaining empty strings.
|
|
||||||
|
|
||||||
To see if the bug is fixed, visit http://localhost:3000/#/editor
|
|
||||||
(you'll need to be logged in) and create an article with tags that have
|
|
||||||
multiple spaces between them, e.g. "tag1 tag2 tag3"
|
|
||||||
|
|
||||||
If the bug has not been fixed, trying to save an article with those tags
|
|
||||||
will result in an error! If it has been fixed, saving will work and the
|
|
||||||
tags will be accepted.
|
|
||||||
|
|
||||||
💡 HINT: Here's how to remove all the "foo" strings from a list of strings:
|
|
||||||
|
|
||||||
List.filter (\str -> str == "foo") listOfStrings
|
|
||||||
-}
|
|
||||||
String.split " " tagString
|
|
||||||
|> List.map String.trim
|
|> List.map String.trim
|
||||||
|
|> List.filter (not << String.isEmpty)
|
||||||
|
|
||||||
|
|
||||||
edit : Slug -> TrimmedForm -> Cred -> Http.Request (Article Full)
|
edit : Slug -> TrimmedForm -> Cred -> Http.Request (Article Full)
|
||||||
|
|||||||
@@ -28,21 +28,6 @@ decoder =
|
|||||||
-- TRANSFORM
|
-- TRANSFORM
|
||||||
|
|
||||||
|
|
||||||
src : Avatar -> Attribute msg
|
|
||||||
src (Avatar maybeUrl) =
|
|
||||||
Html.Attributes.src (resolveAvatarUrl maybeUrl)
|
|
||||||
|
|
||||||
|
|
||||||
resolveAvatarUrl : Maybe String -> String
|
|
||||||
resolveAvatarUrl maybeUrl =
|
|
||||||
{- 👉 TODO #1 of 2: return the user's avatar from maybeUrl, if maybeUrl actually
|
|
||||||
contains one. If maybeUrl is Nothing, return this URL instead:
|
|
||||||
|
|
||||||
https://static.productionready.io/images/smiley-cyrus.jpg
|
|
||||||
-}
|
|
||||||
""
|
|
||||||
|
|
||||||
|
|
||||||
encode : Avatar -> Value
|
encode : Avatar -> Value
|
||||||
encode (Avatar maybeUrl) =
|
encode (Avatar maybeUrl) =
|
||||||
case maybeUrl of
|
case maybeUrl of
|
||||||
@@ -53,6 +38,19 @@ encode (Avatar maybeUrl) =
|
|||||||
Encode.null
|
Encode.null
|
||||||
|
|
||||||
|
|
||||||
|
src : Avatar -> Attribute msg
|
||||||
|
src (Avatar maybeUrl) =
|
||||||
|
case maybeUrl of
|
||||||
|
Nothing ->
|
||||||
|
Asset.src Asset.defaultAvatar
|
||||||
|
|
||||||
|
Just "" ->
|
||||||
|
Asset.src Asset.defaultAvatar
|
||||||
|
|
||||||
|
Just url ->
|
||||||
|
Html.Attributes.src url
|
||||||
|
|
||||||
|
|
||||||
toMaybeString : Avatar -> Maybe String
|
toMaybeString : Avatar -> Maybe String
|
||||||
toMaybeString (Avatar maybeUrl) =
|
toMaybeString (Avatar maybeUrl) =
|
||||||
maybeUrl
|
maybeUrl
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import Api
|
|||||||
import Article exposing (Article, Full)
|
import Article exposing (Article, Full)
|
||||||
import Article.Body exposing (Body)
|
import Article.Body exposing (Body)
|
||||||
import Article.Slug as Slug exposing (Slug)
|
import Article.Slug as Slug exposing (Slug)
|
||||||
import Article.Tag
|
|
||||||
import Browser.Navigation as Nav
|
import Browser.Navigation as Nav
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (attribute, class, disabled, href, id, placeholder, type_, value)
|
import Html.Attributes exposing (attribute, class, disabled, href, id, placeholder, type_, value)
|
||||||
@@ -498,14 +497,8 @@ validateField (Trimmed form) field =
|
|||||||
if String.isEmpty form.body then
|
if String.isEmpty form.body then
|
||||||
[ "body can't be blank." ]
|
[ "body can't be blank." ]
|
||||||
|
|
||||||
else if String.trim form.tags /= "" && List.all String.isEmpty (toTagList form.tags) then
|
|
||||||
[ "close, but not quite! Is your filter condition returning True when it should be returning False?" ]
|
|
||||||
|
|
||||||
else if Article.Tag.validate form.tags (toTagList form.tags) then
|
|
||||||
[]
|
|
||||||
|
|
||||||
else
|
else
|
||||||
[ "some tags were empty." ]
|
[]
|
||||||
|
|
||||||
|
|
||||||
{-| Don't trim while the user is typing! That would be super annoying.
|
{-| Don't trim while the user is typing! That would be super annoying.
|
||||||
@@ -538,7 +531,7 @@ create (Trimmed form) cred =
|
|||||||
[ ( "title", Encode.string form.title )
|
[ ( "title", Encode.string form.title )
|
||||||
, ( "description", Encode.string form.description )
|
, ( "description", Encode.string form.description )
|
||||||
, ( "body", Encode.string form.body )
|
, ( "body", Encode.string form.body )
|
||||||
, ( "tagList", Encode.list Encode.string (toTagList form.tags) )
|
, ( "tagList", Encode.list Encode.string (tagsFromString form.tags) )
|
||||||
]
|
]
|
||||||
|
|
||||||
jsonBody =
|
jsonBody =
|
||||||
@@ -553,25 +546,11 @@ create (Trimmed form) cred =
|
|||||||
|> HttpBuilder.toRequest
|
|> HttpBuilder.toRequest
|
||||||
|
|
||||||
|
|
||||||
toTagList : String -> List String
|
tagsFromString : String -> List String
|
||||||
toTagList tagString =
|
tagsFromString str =
|
||||||
{- 👉 TODO #2 of 2: add another |> to the end of this pipeline,
|
String.split " " str
|
||||||
which filters out any remaining empty strings.
|
|
||||||
|
|
||||||
To see if the bug is fixed, visit http://localhost:3000/#/editor
|
|
||||||
(you'll need to be logged in) and create an article with tags that have
|
|
||||||
multiple spaces between them, e.g. "tag1 tag2 tag3"
|
|
||||||
|
|
||||||
If the bug has not been fixed, trying to save an article with those tags
|
|
||||||
will result in an error! If it has been fixed, saving will work and the
|
|
||||||
tags will be accepted.
|
|
||||||
|
|
||||||
💡 HINT: Here's how to remove all the "foo" strings from a list of strings:
|
|
||||||
|
|
||||||
List.filter (\str -> str == "foo") listOfStrings
|
|
||||||
-}
|
|
||||||
String.split " " tagString
|
|
||||||
|> List.map String.trim
|
|> List.map String.trim
|
||||||
|
|> List.filter (not << String.isEmpty)
|
||||||
|
|
||||||
|
|
||||||
edit : Slug -> TrimmedForm -> Cred -> Http.Request (Article Full)
|
edit : Slug -> TrimmedForm -> Cred -> Http.Request (Article Full)
|
||||||
|
|||||||
@@ -28,21 +28,6 @@ decoder =
|
|||||||
-- TRANSFORM
|
-- TRANSFORM
|
||||||
|
|
||||||
|
|
||||||
src : Avatar -> Attribute msg
|
|
||||||
src (Avatar maybeUrl) =
|
|
||||||
Html.Attributes.src (resolveAvatarUrl maybeUrl)
|
|
||||||
|
|
||||||
|
|
||||||
resolveAvatarUrl : Maybe String -> String
|
|
||||||
resolveAvatarUrl maybeUrl =
|
|
||||||
{- 👉 TODO #1 of 2: return the user's avatar from maybeUrl, if maybeUrl actually
|
|
||||||
contains one. If maybeUrl is Nothing, return this URL instead:
|
|
||||||
|
|
||||||
https://static.productionready.io/images/smiley-cyrus.jpg
|
|
||||||
-}
|
|
||||||
""
|
|
||||||
|
|
||||||
|
|
||||||
encode : Avatar -> Value
|
encode : Avatar -> Value
|
||||||
encode (Avatar maybeUrl) =
|
encode (Avatar maybeUrl) =
|
||||||
case maybeUrl of
|
case maybeUrl of
|
||||||
@@ -53,6 +38,19 @@ encode (Avatar maybeUrl) =
|
|||||||
Encode.null
|
Encode.null
|
||||||
|
|
||||||
|
|
||||||
|
src : Avatar -> Attribute msg
|
||||||
|
src (Avatar maybeUrl) =
|
||||||
|
case maybeUrl of
|
||||||
|
Nothing ->
|
||||||
|
Asset.src Asset.defaultAvatar
|
||||||
|
|
||||||
|
Just "" ->
|
||||||
|
Asset.src Asset.defaultAvatar
|
||||||
|
|
||||||
|
Just url ->
|
||||||
|
Html.Attributes.src url
|
||||||
|
|
||||||
|
|
||||||
toMaybeString : Avatar -> Maybe String
|
toMaybeString : Avatar -> Maybe String
|
||||||
toMaybeString (Avatar maybeUrl) =
|
toMaybeString (Avatar maybeUrl) =
|
||||||
maybeUrl
|
maybeUrl
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import Api
|
|||||||
import Article exposing (Article, Full)
|
import Article exposing (Article, Full)
|
||||||
import Article.Body exposing (Body)
|
import Article.Body exposing (Body)
|
||||||
import Article.Slug as Slug exposing (Slug)
|
import Article.Slug as Slug exposing (Slug)
|
||||||
import Article.Tag
|
|
||||||
import Browser.Navigation as Nav
|
import Browser.Navigation as Nav
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (attribute, class, disabled, href, id, placeholder, type_, value)
|
import Html.Attributes exposing (attribute, class, disabled, href, id, placeholder, type_, value)
|
||||||
@@ -498,14 +497,8 @@ validateField (Trimmed form) field =
|
|||||||
if String.isEmpty form.body then
|
if String.isEmpty form.body then
|
||||||
[ "body can't be blank." ]
|
[ "body can't be blank." ]
|
||||||
|
|
||||||
else if String.trim form.tags /= "" && List.all String.isEmpty (toTagList form.tags) then
|
|
||||||
[ "close, but not quite! Is your filter condition returning True when it should be returning False?" ]
|
|
||||||
|
|
||||||
else if Article.Tag.validate form.tags (toTagList form.tags) then
|
|
||||||
[]
|
|
||||||
|
|
||||||
else
|
else
|
||||||
[ "some tags were empty." ]
|
[]
|
||||||
|
|
||||||
|
|
||||||
{-| Don't trim while the user is typing! That would be super annoying.
|
{-| Don't trim while the user is typing! That would be super annoying.
|
||||||
@@ -538,7 +531,7 @@ create (Trimmed form) cred =
|
|||||||
[ ( "title", Encode.string form.title )
|
[ ( "title", Encode.string form.title )
|
||||||
, ( "description", Encode.string form.description )
|
, ( "description", Encode.string form.description )
|
||||||
, ( "body", Encode.string form.body )
|
, ( "body", Encode.string form.body )
|
||||||
, ( "tagList", Encode.list Encode.string (toTagList form.tags) )
|
, ( "tagList", Encode.list Encode.string (tagsFromString form.tags) )
|
||||||
]
|
]
|
||||||
|
|
||||||
jsonBody =
|
jsonBody =
|
||||||
@@ -553,25 +546,11 @@ create (Trimmed form) cred =
|
|||||||
|> HttpBuilder.toRequest
|
|> HttpBuilder.toRequest
|
||||||
|
|
||||||
|
|
||||||
toTagList : String -> List String
|
tagsFromString : String -> List String
|
||||||
toTagList tagString =
|
tagsFromString str =
|
||||||
{- 👉 TODO #2 of 2: add another |> to the end of this pipeline,
|
String.split " " str
|
||||||
which filters out any remaining empty strings.
|
|
||||||
|
|
||||||
To see if the bug is fixed, visit http://localhost:3000/#/editor
|
|
||||||
(you'll need to be logged in) and create an article with tags that have
|
|
||||||
multiple spaces between them, e.g. "tag1 tag2 tag3"
|
|
||||||
|
|
||||||
If the bug has not been fixed, trying to save an article with those tags
|
|
||||||
will result in an error! If it has been fixed, saving will work and the
|
|
||||||
tags will be accepted.
|
|
||||||
|
|
||||||
💡 HINT: Here's how to remove all the "foo" strings from a list of strings:
|
|
||||||
|
|
||||||
List.filter (\str -> str == "foo") listOfStrings
|
|
||||||
-}
|
|
||||||
String.split " " tagString
|
|
||||||
|> List.map String.trim
|
|> List.map String.trim
|
||||||
|
|> List.filter (not << String.isEmpty)
|
||||||
|
|
||||||
|
|
||||||
edit : Slug -> TrimmedForm -> Cred -> Http.Request (Article Full)
|
edit : Slug -> TrimmedForm -> Cred -> Http.Request (Article Full)
|
||||||
|
|||||||
Reference in New Issue
Block a user