diff options
author | 2025-02-03 02:25:53 -0800 | |
---|---|---|
committer | 2025-02-03 10:25:53 +0000 | |
commit | 27844b7da2567491661f9ddd2d4662f9f1b3ce40 (patch) | |
tree | 1832fe4ec4d3a0fbf6d01bcb5f39acf6885cc1f5 /internal/typeutils | |
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/typeutils')
-rw-r--r-- | internal/typeutils/frontendtointernal.go | 14 | ||||
-rw-r--r-- | internal/typeutils/internaltoas_test.go | 4 | ||||
-rw-r--r-- | internal/typeutils/internaltofrontend.go | 16 |
3 files changed, 31 insertions, 3 deletions
diff --git a/internal/typeutils/frontendtointernal.go b/internal/typeutils/frontendtointernal.go index 82957ee05..b341aa6ae 100644 --- a/internal/typeutils/frontendtointernal.go +++ b/internal/typeutils/frontendtointernal.go @@ -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 +} diff --git a/internal/typeutils/internaltoas_test.go b/internal/typeutils/internaltoas_test.go index ce949d577..9eeaa3c0d 100644 --- a/internal/typeutils/internaltoas_test.go +++ b/internal/typeutils/internaltoas_test.go @@ -1235,9 +1235,9 @@ func (suite *InternalToASTestSuite) TestInteractionReqToASAcceptAnnounce() { req := >smodel.InteractionRequest{ ID: "01J1AKMZ8JE5NW0ZSFTRC1JJNE", CreatedAt: testrig.TimeMustParse("2022-06-09T13:12:00Z"), - StatusID: "01JJYCVKCXB9JTQD1XW2KB8MT3", + StatusID: "01JJYCVKCXB9JTQD1XW2KB8MT3", Status: >smodel.Status{URI: "http://localhost:8080/users/the_mighty_zork/statuses/01JJYCVKCXB9JTQD1XW2KB8MT3"}, - TargetAccountID: acceptingAccount.ID, + TargetAccountID: acceptingAccount.ID, TargetAccount: acceptingAccount, InteractingAccountID: interactingAccount.ID, InteractingAccount: interactingAccount, diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go index 487e8434e..d966c054c 100644 --- a/internal/typeutils/internaltofrontend.go +++ b/internal/typeutils/internaltofrontend.go @@ -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 } |