Update advanced/part4

This commit is contained in:
Richard Feldman
2018-08-14 03:04:39 -04:00
parent ef7787d670
commit 9c4cb65c18
2 changed files with 27 additions and 16 deletions

View File

@@ -13,4 +13,4 @@ Then open [http://localhost:3000](http://localhost:3000) in your browser.
Resolve the TODOs in these files: Resolve the TODOs in these files:
* `src/Page/Home.elm` * `src/Page/Home.elm`
* `src/Page/Settings.elm` * `src/Page/Settings.elm`
* `src/Page/Article.elm` * `src/Page/Profile.elm`

View File

@@ -61,8 +61,9 @@ init session username =
let let
maybeCred = maybeCred =
Session.cred session Session.cred session
in
( { session = session model =
{ session = session
, timeZone = Time.utc , timeZone = Time.utc
, errors = [] , errors = []
, feedTab = defaultFeedTab , feedTab = defaultFeedTab
@@ -70,12 +71,14 @@ init session username =
, author = Loading username , author = Loading username
, feed = Loading username , feed = Loading username
} }
in
( model
, Cmd.batch , Cmd.batch
[ Author.fetch username maybeCred [ Author.fetch username maybeCred
|> Http.toTask |> Http.toTask
|> Task.mapError (Tuple.pair username) |> Task.mapError (Tuple.pair username)
|> Task.attempt CompletedAuthorLoad |> Task.attempt CompletedAuthorLoad
, fetchFeed session defaultFeedTab username 1 , fetchFeed model defaultFeedTab 1
, Task.perform GotTimeZone Time.here , Task.perform GotTimeZone Time.here
, Task.perform (\_ -> PassedSlowLoadThreshold) Loading.slowThreshold , Task.perform (\_ -> PassedSlowLoadThreshold) Loading.slowThreshold
] ]
@@ -107,11 +110,19 @@ defaultFeedTab =
-- HTTP -- HTTP
fetchFeed : Session -> FeedTab -> Username -> Int -> Cmd Msg {-| 👉 TODO: refactor this to accept narrower types than the entire Model.
fetchFeed session feedTabs username page =
💡 HINT: It may end up with multiple arguments!
-}
fetchFeed : Model -> FeedTab -> Int -> Cmd Msg
fetchFeed model feedTabs page =
let let
username =
currentUsername model
maybeCred = maybeCred =
Session.cred session Session.cred model.session
( extraParamName, extraParamVal ) = ( extraParamName, extraParamVal ) =
case feedTabs of case feedTabs of
@@ -127,7 +138,7 @@ fetchFeed session feedTabs username page =
|> HttpBuilder.withQueryParam extraParamName extraParamVal |> HttpBuilder.withQueryParam extraParamName extraParamVal
|> Cred.addHeaderIfAvailable maybeCred |> Cred.addHeaderIfAvailable maybeCred
|> PaginatedList.fromRequestBuilder articlesPerPage page |> PaginatedList.fromRequestBuilder articlesPerPage page
|> Task.map (Feed.init session) |> Task.map (Feed.init model.session)
|> Task.mapError (Tuple.pair username) |> Task.mapError (Tuple.pair username)
|> Task.attempt CompletedFeedLoad |> Task.attempt CompletedFeedLoad
@@ -340,12 +351,12 @@ update msg model =
ClickedTab tab -> ClickedTab tab ->
( { model | feedTab = tab } ( { model | feedTab = tab }
, fetchFeed model.session tab (currentUsername model) 1 , fetchFeed model tab 1
) )
ClickedFeedPage page -> ClickedFeedPage page ->
( { model | feedPage = page } ( { model | feedPage = page }
, fetchFeed model.session model.feedTab (currentUsername model) page , fetchFeed model model.feedTab page
) )
CompletedFollowChange (Ok newAuthor) -> CompletedFollowChange (Ok newAuthor) ->