fix p2p topic canonicalization and stale subscriptions

This commit is contained in:
richjohnrambo
2026-09-12 00:08:30 +08:00
parent f1dfffcfb5
commit a9a4970d9f
9 changed files with 148 additions and 66 deletions
+2 -10
View File
@@ -143,18 +143,10 @@ func PrepareV1Notifications(rcpt *push.Receipt, config *configType) ([]*fcmv1.Me
for uid, devList := range devices {
topic := rcpt.Payload.Topic
userData := data
tcat := t.GetTopicCat(topic)
if rcpt.To[uid].Delivered > 0 || tcat == t.TopicCatP2P {
if rcpt.To[uid].Delivered > 0 {
userData = clonePayload(data)
// Fix topic name for P2P pushes.
if tcat == t.TopicCatP2P {
topic, _ = t.P2PNameForUser(uid, topic)
userData["topic"] = topic
}
// Silence the push for user who have received the data interactively.
if rcpt.To[uid].Delivered > 0 {
userData["silent"] = "true"
}
userData["silent"] = "true"
}
for i := range devList {
-6
View File
@@ -352,12 +352,6 @@ func preparePayloads(rcpt *push.Receipt, config *configType) ([]*jpushPayload, [
}
userData := cloneData(data)
topic := rcpt.Payload.Topic
if t.GetTopicCat(topic) == t.TopicCatP2P {
if alias, err := t.P2PNameForUser(uid, topic); err == nil {
topic = alias
userData["topic"] = alias
}
}
var audience map[string][]string
if useAlias {
audience = map[string][]string{"alias": {aliasForUid(uid)}}
+2 -3
View File
@@ -100,9 +100,8 @@ func TestPreparePayloadsUsesAliasAndNormalizesP2PTopic(t *testing.T) {
if got := payload.Audience["alias"][0]; got != aliasForUid(callee) {
t.Fatalf("unexpected alias: %s", got)
}
userTopic, _ := types.P2PNameForUser(callee, topic)
if got := payload.Notification.Android.Extras["topic"]; got != userTopic {
t.Fatalf("topic was not normalized for callee: got %s want %s", got, userTopic)
if got := payload.Notification.Android.Extras["topic"]; got != topic {
t.Fatalf("topic was not kept canonical for callee: got %s want %s", got, topic)
}
if payload.Notification.IOS.Badge != "3" {
t.Fatalf("unexpected badge: %s", payload.Notification.IOS.Badge)