diff options
author | 2025-02-03 02:25:53 -0800 | |
---|---|---|
committer | 2025-02-03 10:25:53 +0000 | |
commit | 27844b7da2567491661f9ddd2d4662f9f1b3ce40 (patch) | |
tree | 1832fe4ec4d3a0fbf6d01bcb5f39acf6885cc1f5 /internal/api/client/push/pushsubscriptionput.go | |
parent | [chore]: Bump github.com/tdewolff/minify/v2 from 2.21.2 to 2.21.3 (#3727) (diff) | |
download | gotosocial-27844b7da2567491661f9ddd2d4662f9f1b3ce40.tar.xz |
[feature] Implement Web Push notification policy (#3721)
* Web Push: add policy column to subscriptions
* Web Push: add policy to API
* Web Push: test notification policy
* go-fmt unrelated file (how did this get thru?)
Diffstat (limited to 'internal/api/client/push/pushsubscriptionput.go')
-rw-r--r-- | internal/api/client/push/pushsubscriptionput.go | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/internal/api/client/push/pushsubscriptionput.go b/internal/api/client/push/pushsubscriptionput.go index 06575f4ee..4d1c5765e 100644 --- a/internal/api/client/push/pushsubscriptionput.go +++ b/internal/api/client/push/pushsubscriptionput.go @@ -25,6 +25,7 @@ import ( apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util" "github.com/superseriousbusiness/gotosocial/internal/gtserror" "github.com/superseriousbusiness/gotosocial/internal/oauth" + "github.com/superseriousbusiness/gotosocial/internal/util" ) // PushSubscriptionPUTHandler swagger:operation PUT /api/v1/push/subscription pushSubscriptionPut @@ -122,6 +123,17 @@ import ( // type: boolean // default: false // description: Receive a push notification when a boost is pending? +// - +// name: data[policy] +// in: formData +// type: string +// enum: +// - all +// - followed +// - follower +// - none +// default: all +// description: Which accounts to receive push notifications from. // // security: // - OAuth2 Bearer: @@ -181,7 +193,8 @@ func (m *Module) PushSubscriptionPUTHandler(c *gin.Context) { apiutil.JSON(c, http.StatusOK, apiSubscription) } -// validateNormalizeUpdate copies form fields to their canonical JSON equivalents. +// validateNormalizeUpdate copies form fields to their canonical JSON equivalents +// and sets defaults for fields that have them. func validateNormalizeUpdate(request *apimodel.WebPushSubscriptionUpdateRequest) error { if request.Data == nil { request.Data = &apimodel.WebPushSubscriptionRequestData{} @@ -228,5 +241,12 @@ func validateNormalizeUpdate(request *apimodel.WebPushSubscriptionUpdateRequest) request.Data.Alerts.Reblog = *request.DataAlertsPendingReblog } + if request.DataPolicy != nil { + request.Data.Policy = request.DataPolicy + } + if request.Data.Policy == nil { + request.Data.Policy = util.Ptr(apimodel.WebPushNotificationPolicyAll) + } + return nil } |