[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?)
This commit is contained in:
Vyr Cossont 2025-02-03 02:25:53 -08:00 committed by GitHub
commit 27844b7da2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 340 additions and 35 deletions

View file

@ -231,3 +231,17 @@ func APIInteractionPolicyToInteractionPolicy(
},
}, nil
}
func APIWebPushNotificationPolicyToWebPushNotificationPolicy(policy apimodel.WebPushNotificationPolicy) gtsmodel.WebPushNotificationPolicy {
switch policy {
case apimodel.WebPushNotificationPolicyAll:
return gtsmodel.WebPushNotificationPolicyAll
case apimodel.WebPushNotificationPolicyFollowed:
return gtsmodel.WebPushNotificationPolicyFollowed
case apimodel.WebPushNotificationPolicyFollower:
return gtsmodel.WebPushNotificationPolicyFollower
case apimodel.WebPushNotificationPolicyNone:
return gtsmodel.WebPushNotificationPolicyNone
}
return 0
}

View file

@ -1235,9 +1235,9 @@ func (suite *InternalToASTestSuite) TestInteractionReqToASAcceptAnnounce() {
req := &gtsmodel.InteractionRequest{
ID: "01J1AKMZ8JE5NW0ZSFTRC1JJNE",
CreatedAt: testrig.TimeMustParse("2022-06-09T13:12:00Z"),
StatusID: "01JJYCVKCXB9JTQD1XW2KB8MT3",
StatusID: "01JJYCVKCXB9JTQD1XW2KB8MT3",
Status: &gtsmodel.Status{URI: "http://localhost:8080/users/the_mighty_zork/statuses/01JJYCVKCXB9JTQD1XW2KB8MT3"},
TargetAccountID: acceptingAccount.ID,
TargetAccountID: acceptingAccount.ID,
TargetAccount: acceptingAccount,
InteractingAccountID: interactingAccount.ID,
InteractingAccount: interactingAccount,

View file

@ -3019,6 +3019,20 @@ func (c *Converter) InteractionReqToAPIInteractionReq(
}, nil
}
func webPushNotificationPolicyToAPIWebPushNotificationPolicy(policy gtsmodel.WebPushNotificationPolicy) apimodel.WebPushNotificationPolicy {
switch policy {
case gtsmodel.WebPushNotificationPolicyAll:
return apimodel.WebPushNotificationPolicyAll
case gtsmodel.WebPushNotificationPolicyFollowed:
return apimodel.WebPushNotificationPolicyFollowed
case gtsmodel.WebPushNotificationPolicyFollower:
return apimodel.WebPushNotificationPolicyFollower
case gtsmodel.WebPushNotificationPolicyNone:
return apimodel.WebPushNotificationPolicyNone
}
return ""
}
func (c *Converter) WebPushSubscriptionToAPIWebPushSubscription(
ctx context.Context,
subscription *gtsmodel.WebPushSubscription,
@ -3047,7 +3061,7 @@ func (c *Converter) WebPushSubscriptionToAPIWebPushSubscription(
PendingReply: subscription.NotificationFlags.Get(gtsmodel.NotificationPendingReply),
PendingReblog: subscription.NotificationFlags.Get(gtsmodel.NotificationPendingReblog),
},
Policy: apimodel.WebPushNotificationPolicyAll,
Policy: webPushNotificationPolicyToAPIWebPushNotificationPolicy(subscription.Policy),
Standard: true,
}, nil
}