This is a pretty big refactor of how communication works to start moving
us in the direction we want to go long-term. This adds the new
communication row and migrates existing reports to add rows for
communication.
There's also a bunch of automatic fixes from the new linter. I should
have added them separately, but whatever.
This solves some problems created by making the publicreport part of the
communication API consistent. There are a lot of optimizations still on
the table with this one, but for now I need to get this out.
This is useful because everywhere that we use the AddressAndMapLocator
component we also want to use the user's location and we want to zoom
the map based on their location. Instead of tracking this externally in
3 places we just pull it into the component.
The idea here is that we'll make compliance reports two different ways,
The first is if the user navigates to /district/:slug/compliance, the
second if they open a QR code from a mailer. In both cases we create the
report then feed them into a flow for updating the data on that report.
* Create a nwe AddressAndMapLocator which abstracts out the behavior of
selecting a location
* Fix the overlay causing render errors on the MapLocator by getting
rid of the overlay and just using a lock indicator
* Fix MapLocator zooming in to the wrong place by not framing the
markers
* Remove Latlng from platform and just use Location with optional
accuracy
* Use nested types with form-encoded POST
* Fix styles on water report page
This makes it possible to start hydrating the types into valid data
types like Dates which means I can get type safety guarantees when
displaying information.