summaryrefslogtreecommitdiff
path: root/internal/typeutils
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/typeutils
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/typeutils')
-rw-r--r--internal/typeutils/frontendtointernal.go14
-rw-r--r--internal/typeutils/internaltoas_test.go4
-rw-r--r--internal/typeutils/internaltofrontend.go16
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 := &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,
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
}