Update advanced/part4
This commit is contained in:
@@ -13,4 +13,4 @@ Then open [http://localhost:3000](http://localhost:3000) in your browser.
|
||||
Resolve the TODOs in these files:
|
||||
* `src/Page/Home.elm`
|
||||
* `src/Page/Settings.elm`
|
||||
* `src/Page/Article.elm`
|
||||
* `src/Page/Profile.elm`
|
||||
|
||||
@@ -61,8 +61,9 @@ init session username =
|
||||
let
|
||||
maybeCred =
|
||||
Session.cred session
|
||||
in
|
||||
( { session = session
|
||||
|
||||
model =
|
||||
{ session = session
|
||||
, timeZone = Time.utc
|
||||
, errors = []
|
||||
, feedTab = defaultFeedTab
|
||||
@@ -70,12 +71,14 @@ init session username =
|
||||
, author = Loading username
|
||||
, feed = Loading username
|
||||
}
|
||||
in
|
||||
( model
|
||||
, Cmd.batch
|
||||
[ Author.fetch username maybeCred
|
||||
|> Http.toTask
|
||||
|> Task.mapError (Tuple.pair username)
|
||||
|> Task.attempt CompletedAuthorLoad
|
||||
, fetchFeed session defaultFeedTab username 1
|
||||
, fetchFeed model defaultFeedTab 1
|
||||
, Task.perform GotTimeZone Time.here
|
||||
, Task.perform (\_ -> PassedSlowLoadThreshold) Loading.slowThreshold
|
||||
]
|
||||
@@ -107,11 +110,19 @@ defaultFeedTab =
|
||||
-- HTTP
|
||||
|
||||
|
||||
fetchFeed : Session -> FeedTab -> Username -> Int -> Cmd Msg
|
||||
fetchFeed session feedTabs username page =
|
||||
{-| 👉 TODO: refactor this to accept narrower types than the entire Model.
|
||||
|
||||
💡 HINT: It may end up with multiple arguments!
|
||||
|
||||
-}
|
||||
fetchFeed : Model -> FeedTab -> Int -> Cmd Msg
|
||||
fetchFeed model feedTabs page =
|
||||
let
|
||||
username =
|
||||
currentUsername model
|
||||
|
||||
maybeCred =
|
||||
Session.cred session
|
||||
Session.cred model.session
|
||||
|
||||
( extraParamName, extraParamVal ) =
|
||||
case feedTabs of
|
||||
@@ -127,7 +138,7 @@ fetchFeed session feedTabs username page =
|
||||
|> HttpBuilder.withQueryParam extraParamName extraParamVal
|
||||
|> Cred.addHeaderIfAvailable maybeCred
|
||||
|> PaginatedList.fromRequestBuilder articlesPerPage page
|
||||
|> Task.map (Feed.init session)
|
||||
|> Task.map (Feed.init model.session)
|
||||
|> Task.mapError (Tuple.pair username)
|
||||
|> Task.attempt CompletedFeedLoad
|
||||
|
||||
@@ -340,12 +351,12 @@ update msg model =
|
||||
|
||||
ClickedTab tab ->
|
||||
( { model | feedTab = tab }
|
||||
, fetchFeed model.session tab (currentUsername model) 1
|
||||
, fetchFeed model tab 1
|
||||
)
|
||||
|
||||
ClickedFeedPage page ->
|
||||
( { model | feedPage = page }
|
||||
, fetchFeed model.session model.feedTab (currentUsername model) page
|
||||
, fetchFeed model model.feedTab page
|
||||
)
|
||||
|
||||
CompletedFollowChange (Ok newAuthor) ->
|
||||
|
||||
Reference in New Issue
Block a user