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.