Commit graph

1806 commits

Author SHA1 Message Date
528a785007
Add a catch-all route
Some checks failed
/ golint (push) Failing after 9s
For error messaging
2026-05-24 21:51:10 +00:00
d92b579efa
Don't require the ID to be set when inserting contact_phone entries
Some checks failed
/ golint (push) Failing after 9s
Issue: #27
2026-05-24 21:38:59 +00:00
f4756637d6
Tell the user when they don't give us an address
Issue: #25
2026-05-24 21:27:16 +00:00
34f4980ad5
Don't error out on existing stadia request insert
Issue: #29
2026-05-24 21:02:43 +00:00
7eb0ad1221
Show message history in contact review page.
Some checks failed
/ golint (push) Failing after 9s
2026-05-23 01:33:25 +00:00
e8f899d098
Don't bonk when we have no E164s 2026-05-23 01:02:47 +00:00
a1aee10412
Add CardMessageHistory component for chat-style message display
Some checks failed
/ golint (push) Failing after 9s
2026-05-23 01:00:51 +00:00
984223c287
Add definition for messages from the API 2026-05-23 00:56:10 +00:00
5b0d009353
Get text messages for a contact and the phone status
Some checks failed
/ golint (push) Failing after 10s
2026-05-23 00:48:16 +00:00
5d03ab0844
Commit DB transaction after responding 2026-05-22 23:43:49 +00:00
393836a86a
Fix notification of job happening before transaction is closed
This is kind of a wild one. Turns out that the triggers I was using
actually fire before the transaction is closed and I was primarily
getting lucky that the job was present on the other side of the
connection rather than having things built correctly.

I've fixed this by removing the trigger entirely and instead manually
triggering as part of the transaction. This makes the NOTIFY call happen
as soon as the transaction closes, just at the cost of making my
application be in charge of ensuring the NOTIFY gets called. Seems like
a win.

Part of doing this is porting the existing job creation code over to use
Jet. It's something I want to do anyway, so it's a win all around.
2026-05-22 23:34:38 +00:00
7b04822a9b
Move properties of phones to the phone, not contact_phone
This makes sense because there will naturally be cases where multiple
districts have the same phone number mapped to different contacts.
2026-05-22 20:56:22 +00:00
f957dc6982
Migrate contact_email and contact_phone to allow dupes
The key item here is that comms.phone and comms.email are meant to
represent a real global namespace, but comms.contact is meant to
represent an organization-specific namespace. This means the mapping,
comms.contact_phone and comms.contact_email can't key off the global
namespace. Otherwise the contact namespace would implicitly be global.
2026-05-22 15:13:03 +00:00
a72f228e4e
Get all contacts on mounted 2026-05-22 13:58:21 +00:00
cecb9ef0f0
Fix reactive nature of generic resource store
Some checks failed
/ golint (push) Failing after 10s
These changes are meant to make it possible for new events that come in
to immediately render in the components that depend on them.
2026-05-21 23:12:37 +00:00
74ef9a8b3a
Return text log data on insert
So we can show log messages and stuff.
2026-05-21 23:12:37 +00:00
3cfd3182e9
Drop the unnecessary contact_email column
Issue: #13
2026-05-21 23:12:37 +00:00
6175e1a811
Update reporter contact on report update
This is as a complicated one because it involves merging contact
information in tricky cases.

I assume that phone should override email, primarily because setting up
phones is more tightly regulated. This may be a terrible assumption.

Issue: #13
2026-05-21 23:12:36 +00:00
dcce7cda1c
Remove comms.contact_email.id column
The address is the primary key, rather than an ID.
2026-05-21 23:12:36 +00:00
e3cc1e99d1
Update storage of reporter in contact
I failed to retrieve the data correctly before as part of the changeover
to contact records.

Issue: #13
2026-05-21 23:12:36 +00:00
b9f2107c79
feat: show ErrorNotification in ReportSubmitted on submission failure
Some checks failed
/ golint (push) Failing after 9s
- Add ErrorNotification component above the contact form
- Replace console.error with user-visible error messages in
  handleSubmit for both HTTP error responses and exceptions
- Add isSubmitting ref with :disabled binding to prevent
  double-submission (consistent with Nuisance/Water forms)
- Clear errorMessage on each submission attempt

Issue: #8
2026-05-21 15:47:43 +00:00
614f4d274e
Reconnect SSE connection if we miss heartbeats for 30 seconds
Some checks failed
/ golint (push) Failing after 10s
Issue: #11
2026-05-21 15:43:56 +00:00
03d40774cb
Update write deadline on SSE event push
Otherwise the server sees the connection as exceeding the deadline and
closes it after 30 seconds (our current timeout)

Issue: #12
2026-05-21 15:26:44 +00:00
41ed443d54
lint: log errors when adding errors from flyover uploads 2026-05-21 13:56:48 +00:00
d120ed05f2
Emit communication updated events when reports change
Some checks failed
/ golint (push) Failing after 10s
2026-05-21 04:26:07 +00:00
594bf33b0a
Fix updating contact by ID 2026-05-21 04:25:36 +00:00
5e103f46a0
Fix populating water report from ID, make ContactSimple
ContactSimple is the replacement for ContactReporter, which was the
simplified form of a contact from a report. I made the name more generic
and use it in the general report structures for consistency.
2026-05-21 03:23:10 +00:00
75d0283453
Emit communication creation event for submitting compliance reports 2026-05-20 23:55:45 +00:00
66dc3a171e
Create communication creation events for non-compliance reports 2026-05-20 23:53:52 +00:00
b4ae9e5a95
Move communication workbench to use resource store
Because it's getting better all the time, including by adding the
ability to get new resources when they get created over SSE.
2026-05-20 23:49:59 +00:00
72eef554ea
Fix creation of nuisance reports
Some checks failed
/ golint (push) Failing after 9s
Issue: #9
2026-05-20 23:17:57 +00:00
9d1063187a
Try to recognize email websocket going away 2026-05-20 23:17:57 +00:00
7a0a3c887b
feat: add ErrorNotification and API error handling to Water form
Some checks failed
/ golint (push) Failing after 9s
- Add ErrorNotification component to Water.vue submit section
- Add resp.ok check in doSubmit() to catch HTTP error responses
  and prevent workflow from proceeding on failure
- Add :disabled binding to submit button (was missing, unlike Nuisance)
- Fix typo: borwser → browser

Issue: #8
2026-05-20 23:08:43 +00:00
06e8de800a
feat: add ErrorNotification component and API error handling in Nuisance form
Some checks failed
/ golint (push) Failing after 10s
- Add ts/rmo/components/ErrorNotification.vue — reusable error alert
  with dismiss support, accessible markup, and configurable message
- Replace inline error div in Nuisance.vue with ErrorNotification
- Add resp.ok check in doSubmit() so HTTP error responses are caught
  and the workflow stops instead of proceeding to /submitted
- Fix typo: borwser → browser

Issue: #8
2026-05-20 21:53:44 +00:00
9d2895bd94
lint: Remove unused mailerQuery
Some checks failed
/ golint (push) Failing after 9s
2026-05-19 23:02:01 +00:00
b42b1144b6
Remove unused getCommitTime function 2026-05-19 22:44:40 +00:00
44c0356bcc
remove log spam for getting user information
Some checks failed
/ golint (push) Failing after 10s
2026-05-19 22:07:52 +00:00
865f11bc09
Disable fieldseeker data sync
Some checks failed
/ golint (push) Failing after 9s
This is creating a large number of goroutines that are requesting a
large number of database connections, possibly contributing to the pool
getting exhausted

Issue: #3
2026-05-19 20:33:02 +00:00
4ead6ba31b
Increase DB connections to 10
Seeing if it helps sort out the DB pool getting exhausted

Issue: #3
2026-05-19 20:32:35 +00:00
80f727a07c
Check version info on startup
Some checks failed
/ golint (push) Failing after 9s
2026-05-19 20:00:36 +00:00
d4cbfb960e
Move to setting version info explicitly in linker flags
Some checks failed
/ golint (push) Failing after 12s
We don't have go built-in VCS information in a nix build because the git
repository isn't present. After struggling to build an overlay that
would provide it, I decided this path is easier of just injecting in the
data that we need.

Issue: #5
2026-05-19 19:46:05 +00:00
81826f853e
Clean up unused import
Some checks failed
/ golint (push) Failing after 3m57s
2026-05-19 16:23:10 +00:00
0a3e70d418
lint: Avoid ending the loop on error
Some checks failed
/ golint (push) Failing after 2m47s
Caused by the lint bot, which actually produced another lint error
2026-05-19 16:06:41 +00:00
1f798c7521
Add timeout context to twilio client 2026-05-19 16:03:42 +00:00
7237f5f666
Move internal references to new source hosting
Some checks failed
/ golint (push) Failing after 3m50s
2026-05-19 15:33:57 +00:00
8c8e360bf6
lint: remove unnecessary conditional
Some checks failed
/ golint (push) Failing after 3m52s
2026-05-19 15:25:15 +00:00
1f7b4cede2
lint: remove embedded field that's unnecessary 2026-05-19 15:24:56 +00:00
12e9599c15
lint: don't capitalize error messages 2026-05-19 15:24:44 +00:00
8ac613000b
lint: remove redundant return 2026-05-19 15:24:32 +00:00
d43ee1c95f
Don't check uints for negative values
Some checks failed
/ golint (push) Failing after 3m55s
2026-05-19 15:14:36 +00:00