tree 2f41bcee71e93b51d18ac73099710caed35f0387
parent 0674a95d59c0390b516efa0bbdd27de8cdc8b4df
author Ben Rohlfs <brohlfs@google.com> 1674490298 +0100
committer Ben Rohlfs <brohlfs@google.com> 1674579258 +0100

Extract route handling into view model

This is a refactoring for just 1 of ~50 routes. Once this is reviewed
and submitted we will follow up with the 49 routes.

The core of all route handlers is to convert a URL into a view model
state. We think that it is vital to have the code for converting state
into URL and back in the same file. We already have the create...Url()
functions in view model classes. We would also like to have urlToState()
functions in the same file.

It is also beneficial to have the patterns for matching a URL and the
function for converting the URL into a state object very close to each
other. Let's create the notion of a `Route` for that. This is just
`pattern` and `createState()` in one object.

Most of the current handlers just use the `params` and the `querystring`
for creating a view state, and then they call `this.setState()` and
`viewModel.setState()`. Let's create a new method `mapRouteState()`
that is similar to what `mapRoute()` does, but caters for the newly
introduced concepts above.

There are tons of things that could be further refactored in the router,
but we are trying to be focused with this change, and only do one thing.
We are happy to add further TODOs and comments though, if reviewers have
ideas or questions.

One of the goals of this change is also to address the fragile handling
of repo routes. It will be very beneficial for that effort to have all
the handlers and tests in one place.

Release-Notes: skip
Change-Id: I537733c099660470019840ab4614a751dd5ec1d9
