Ah awesome thanks - that's very helpul

On Sunday, 5 February 2017 21:57:36 UTC, Keith Lazuka wrote:
>
> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to