Skip to content

Instantly share code, notes, and snippets.

@sabine
Created January 7, 2017 11:10
Show Gist options
  • Save sabine/e698645f7a986bc998abab20c150487d to your computer and use it in GitHub Desktop.
Save sabine/e698645f7a986bc998abab20c150487d to your computer and use it in GitHub Desktop.
Querystring parsing with Bogdanp/elm-querystring and Bogdanp/elm-route
type alias Model =
{ ....
, route : Sitemap
, querystring : QueryString
... }
type Msg
= RouteTo Sitemap QueryString
| RouteChanged Sitemap QueryString
| ...
navigateTo : Sitemap -> QueryString -> Cmd msg
navigateTo route querystring =
let
url = toString route ++ (if querystring == QueryString.empty then "" else QueryString.render querystring)
in
Navigation.newUrl url
parseRoute : Location -> Msg
parseRoute location =
let
route = Routes.parsePath location
querystring = QueryString.parse location.search
in
RouteChanged route querystring
handleRoute : Sitemap -> QueryString -> Model -> ( Model, Cmd Msg )
handleRoute route querystring m =
let
model =
{ m | route = route
, querystring = querystring
, ... }
in
case route of
...
init : Flags -> Location -> ( Model, Cmd Msg )
init flags location =
let
route = Routes.parsePath location
querystring = QueryString.parse location.search
in
handleRoute route querystring
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
RouteTo route querystring ->
model ! [ Routes.navigateTo route querystring ]
RouteChanged route querystring ->
handleRoute route querystring model
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment