In terms of sending an HTTP request when navigating to the Login page, you should be able to do that by returning an Http Cmd in your `update` function.
Elm's Navigation library provides a special `program` function which--in addition to the standard init/update/view/subscription functions used by Html.program--also takes a function from `Navigation.Location` to a message that your update function can understand. In the example program included in the Navigation library, this function is called `UrlChange`. So in your `update` function, you probably already have a case that listens for this `UrlChange` message, computes a "route" from the `Location` attached to this message, and stores the new route in your model. update msg model = case msg of UrlChange location -> ( { model | route = routeFromLocation location } , Cmd.none ) All you need to do is change this case so that in addition to returning the updated model, it looks at the new route and returns a Cmd based on whether the new route is Login or not. e.g. update msg model = case msg of UrlChange location -> let newRoute = routeFromLocation location newCmd = case newRoute of Just (Route.Login) -> Http.get "/api/loginStuff" stuffDecoder |> Http.send GotStuff _ -> Cmd.none in ( { model | route = newRoute } , newCmd ) On Sunday, February 5, 2017 at 11:51:03 AM UTC-8, Kingsley Hendrickse wrote: > > Hi, > > I'm new to elm and am using version 0.18 > > I'm struggling a bit to get what I want out of the Route and Navigation > libraries. > > I have 2 features Login and Registration > > In the Main.elm I use an update which delegates to either the Login or > Registration features and then updates the main model after Login or > Registration has done its thing. > > However I want to be able to detect when I'm going to show the Login view > and before the view is rendered fire off an http request which will be used > to populate the view. I can't see how to do this. It's easy to do as a > result of something like a button click - because then the trigger point is > the button click. But I want the trigger point to be during navigation so > that the user can arrive on a page and that initial arrival on the page > triggers the http requests that will be used in that view. > > Also if anyone could point me in the direction of a good pattern for > protecting routes that would be great - e.g. if a user is not logged in > they should not be allowed to go to the welcome page and get redirected to > login, and if logged in they should be redirected to welcome and not > allowed on login or registration etc ... > > Any help appreciated > > Thanks > > --Kingsley > -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.