summaryrefslogtreecommitdiff
path: root/internal/api/client/push/pushsubscriptionput.go
diff options
context:
space:
mode:
authorLibravatar Vyr Cossont <VyrCossont@users.noreply.github.com>2025-02-03 02:25:53 -0800
committerLibravatar GitHub <noreply@github.com>2025-02-03 10:25:53 +0000
commit27844b7da2567491661f9ddd2d4662f9f1b3ce40 (patch)
tree1832fe4ec4d3a0fbf6d01bcb5f39acf6885cc1f5 /internal/api/client/push/pushsubscriptionput.go
parent[chore]: Bump github.com/tdewolff/minify/v2 from 2.21.2 to 2.21.3 (#3727) (diff)
downloadgotosocial-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.go22
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
}