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:
|
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`
|
||||||
|
|||||||
@@ -61,21 +61,24 @@ init session username =
|
|||||||
let
|
let
|
||||||
maybeCred =
|
maybeCred =
|
||||||
Session.cred session
|
Session.cred session
|
||||||
|
|
||||||
|
model =
|
||||||
|
{ session = session
|
||||||
|
, timeZone = Time.utc
|
||||||
|
, errors = []
|
||||||
|
, feedTab = defaultFeedTab
|
||||||
|
, feedPage = 1
|
||||||
|
, author = Loading username
|
||||||
|
, feed = Loading username
|
||||||
|
}
|
||||||
in
|
in
|
||||||
( { session = session
|
( model
|
||||||
, timeZone = Time.utc
|
|
||||||
, errors = []
|
|
||||||
, feedTab = defaultFeedTab
|
|
||||||
, feedPage = 1
|
|
||||||
, author = Loading username
|
|
||||||
, feed = Loading username
|
|
||||||
}
|
|
||||||
, 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) ->
|
||||||
|
|||||||
Reference in New Issue
Block a user