gotosocial/internal/db/bundb
Vyr Cossont 5b765d734e
[feature] Push notifications (#3587)
* Update push subscription API model to be Mastodon 4.0 compatible

* Add webpush-go dependency

# Conflicts:
#	go.sum

* Single-row table for storing instance's VAPID key pair

* Generate VAPID key pair during startup

* Add VAPID public key to instance info API

* Return VAPID public key when registering an app

* Store Web Push subscriptions in DB

* Add Web Push sender (similar to email sender)

* Add no-op push senders to most processor tests

* Test Web Push notifications from workers

* Delete Web Push subscriptions when account is deleted

* Implement push subscription API

* Linter fixes

* Update Swagger

* Fix enum to int migration

* Fix GetVAPIDKeyPair

* Create web push subscriptions table with indexes

* Log Web Push server error messages

* Send instance URL as Web Push JWT subject

* Accept any 2xx code as a success

* Fix malformed VAPID sub claim

* Use packed notification flags

* Remove unused date columns

* Add notification type for update notifications

Not used yet

* Make GetVAPIDKeyPair idempotent

and remove PutVAPIDKeyPair

* Post-rebase fixes

* go mod tidy

* Special-case 400 errors other than 408/429

Most client errors should remove the subscription.

* Improve titles, trim body to reasonable length

* Disallow cleartext HTTP for Web Push servers

* Fix lint

* Remove redundant index on unique column

Also removes redundant unique and notnull tags on ID column since these are implied by pk

* Make realsender.go more readable

* Use Tobi's style for wrapping errors

* Restore treating all 5xx codes as temporary problems

* Always load target account settings

* Stub `policy` and `standard`

* webpush.Sender: take type converter as ctor param

* Move webpush.MockSender and noopSender into testrig
2025-01-23 16:47:30 -08:00
..
migrations [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
account.go [chore] better dns validation (#3644) 2025-01-14 14:23:18 +00:00
account_test.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
admin.go [bugfix] Deref stats async, serve stub collections if handshaking (#2990) 2024-06-11 11:54:59 +02:00
admin_test.go [experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863) 2024-05-27 17:46:15 +02:00
advancedmigration.go [feature] Conversations API (#3013) 2024-07-23 20:44:31 +01:00
application.go [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
application_test.go [bugfix] fix get all tokens (#2841) 2024-04-16 13:25:47 +02:00
basic.go [feature] Add healthcheck endpoints /livez and /readyz (#2783) 2024-03-25 17:05:14 +00:00
basic_test.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
bundb.go [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
bundb_test.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
bundbnew_test.go
conversation.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
conversation_test.go [feature] Conversations API (#3013) 2024-07-23 20:44:31 +01:00
domain.go [chore] better dns validation (#3644) 2025-01-14 14:23:18 +00:00
domain_test.go [bugfix] fix higher-level explicit domain rules causing issues with lower-level domain blocking (#2513) 2024-01-09 13:12:43 +00:00
domainpermissiondraft.go [chore] better dns validation (#3644) 2025-01-14 14:23:18 +00:00
domainpermissiondraft_test.go [feature] Add domain permission drafts and excludes (#3547) 2024-11-21 13:09:58 +00:00
domainpermissionexclude.go [chore] better dns validation (#3644) 2025-01-14 14:23:18 +00:00
domainpermissionexclude_test.go [feature] Add domain permission drafts and excludes (#3547) 2024-11-21 13:09:58 +00:00
domainpermissionsubscription.go [feature] Create/update/remove domain permission subscriptions (#3623) 2025-01-05 13:20:33 +01:00
domainpermissionsubscription_test.go [feature] Create/update/remove domain permission subscriptions (#3623) 2025-01-05 13:20:33 +01:00
drivers.go [experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863) 2024-05-27 17:46:15 +02:00
emoji.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
emoji_test.go [bugfix] Fix Postgres emoji delete, emoji category change (#2570) 2024-01-29 14:57:22 +00:00
errors_test.go
filter.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
filter_test.go [bugfix] Fix filter title unique constraint (#3458) 2024-10-19 11:04:07 +02:00
filterkeyword.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
filterkeyword_test.go [feature] Filters v1 (#2594) 2024-03-06 11:15:58 +01:00
filterstatus.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
filterstatus_test.go [feature] Filters v1 (#2594) 2024-03-06 11:15:58 +01:00
headerfilter.go [feature/performance] sqlite pragma optimize on close (#2596) 2024-02-07 14:43:27 +00:00
headerfilter_test.go [feature] request blocking by http headers (#2409) 2023-12-18 14:18:25 +00:00
hook.go [chore] ensure consistent caller name fetching regardless of compiler inlining (#3323) 2024-09-20 13:30:33 +00:00
instance.go [chore] better dns validation (#3644) 2025-01-14 14:23:18 +00:00
instance_test.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
interaction.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
interaction_test.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
list.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
list_test.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
marker.go [chore] renames the GTS caches to DB caches (#3127) 2024-07-24 10:41:43 +02:00
markers_test.go
media.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
media_test.go [feature] Media attachment placeholders (#2331) 2023-11-10 19:29:26 +01:00
mention.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
mention_test.go
move.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
move_test.go [feature/chore] Add Move database functions + cache (#2647) 2024-03-06 11:18:57 +01:00
notification.go [bugfix] notification types missing from link header (#3571) 2024-11-25 15:33:21 +00:00
notification_test.go [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
poll.go [chore] replace statuses.updated_at column with statuses.edited_at (#3636) 2025-01-08 11:29:23 +01:00
poll_test.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
relationship.go [feature] Allow users to export data via the settings panel (#3140) 2024-07-31 15:03:34 +01:00
relationship_block.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
relationship_follow.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
relationship_follow_req.go [performance] convert enum strings to ints (#3558) 2024-11-25 14:48:59 +01:00
relationship_mute.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
relationship_note.go [chore] renames the GTS caches to DB caches (#3127) 2024-07-24 10:41:43 +02:00
relationship_test.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
report.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
report_test.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
rule.go [chore] renames the GTS caches to DB caches (#3127) 2024-07-24 10:41:43 +02:00
rule_test.go
search.go [feature] Add from: search operator and account_id query param (#2943) 2024-05-31 12:57:42 +02:00
search_test.go [feature] Add from: search operator and account_id query param (#2943) 2024-05-31 12:57:42 +02:00
session.go [feature/performance] sqlite pragma optimize on close (#2596) 2024-02-07 14:43:27 +00:00
session_test.go
sinbinstatus.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
status.go [feature] add support for clients editing statuses and fetching status revision history (#3628) 2024-12-23 17:54:44 +00:00
status_test.go [feature/frontend] Add player for audio files; use thumbnail for poster (#3099) 2024-07-15 10:47:57 +01:00
statusbookmark.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
statusbookmark_test.go [feature] do not uncache status / emoji media if attached status is bookmarked (#2956) 2024-06-06 11:44:43 +01:00
statusedit.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
statusedit_test.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
statusfave.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
statusfave_test.go [chore/docs] Replace specific year range of copyright notice (#2520) 2024-01-13 16:33:53 +01:00
tag.go [performance] minimise log field allocations (#3529) 2024-11-11 15:45:19 +00:00
tag_test.go [experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863) 2024-05-27 17:46:15 +02:00
thread.go [chore] renames the GTS caches to DB caches (#3127) 2024-07-24 10:41:43 +02:00
thread_test.go
timeline.go [feature] add support for receiving federated status edits (#3597) 2024-12-05 13:35:07 +00:00
timeline_test.go [chore] replace statuses.updated_at column with statuses.edited_at (#3636) 2025-01-08 11:29:23 +01:00
tombstone.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
upsert.go [feature/performance] Store account stats in separate table (#2831) 2024-04-16 13:10:13 +02:00
user.go [performance] cache more database calls, reduce required database calls overall (#3290) 2024-09-16 16:46:09 +00:00
user_test.go
util.go [bugfix] Account timeline: exclude self-replies that mention other accounts (#2670) 2024-02-27 18:18:40 +01:00
webpush.go [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
webpush_test.go [feature] Push notifications (#3587) 2025-01-23 16:47:30 -08:00
workertask.go [feature] persist worker queues to db (#3042) 2024-07-30 13:58:31 +02:00