fix p2p topic canonicalization and stale subscriptions
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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)}}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user