mirror of
https://github.com/christianselig/apollo-backend
synced 2024-11-25 21:27:42 +00:00
Fix notification payloads
This commit is contained in:
parent
a3b9e1a0ac
commit
65f671c96c
3 changed files with 60 additions and 1 deletions
|
@ -370,7 +370,7 @@ func (c *Consumer) Consume(delivery rmq.Delivery) {
|
||||||
for _, msg := range msgs.MessageListing.Messages {
|
for _, msg := range msgs.MessageListing.Messages {
|
||||||
notification := &apns2.Notification{}
|
notification := &apns2.Notification{}
|
||||||
notification.Topic = "com.christianselig.Apollo"
|
notification.Topic = "com.christianselig.Apollo"
|
||||||
notification.Payload = payload.NewPayload().AlertTitle(msg.Subject).AlertBody(msg.Body)
|
notification.Payload = payloadFromMessage(&msg)
|
||||||
|
|
||||||
for _, device := range devices {
|
for _, device := range devices {
|
||||||
notification.DeviceToken = device.APNSToken
|
notification.DeviceToken = device.APNSToken
|
||||||
|
@ -404,6 +404,53 @@ func (c *Consumer) Consume(delivery rmq.Delivery) {
|
||||||
}).Debug("finishing job")
|
}).Debug("finishing job")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func payloadFromMessage(msg *reddit.MessageData) *payload.Payload {
|
||||||
|
postBody := msg.Body
|
||||||
|
if len(postBody) > 2000 {
|
||||||
|
postBody = msg.Body[:2000]
|
||||||
|
}
|
||||||
|
|
||||||
|
postTitle := msg.LinkTitle
|
||||||
|
if postTitle == "" {
|
||||||
|
postTitle = msg.Subject
|
||||||
|
}
|
||||||
|
if len(postTitle) > 75 {
|
||||||
|
postTitle = fmt.Sprintf("%s…", postTitle[0:75])
|
||||||
|
}
|
||||||
|
|
||||||
|
payload := payload.NewPayload().Sound("traloop.wav").AlertBody(postBody).Custom("author", msg.Author).Custom("parent_id", msg.ParentID).AlertSummaryArg(msg.Author).MutableContent()
|
||||||
|
|
||||||
|
switch {
|
||||||
|
case (msg.Kind == "t1" && msg.Type == "username_mention"):
|
||||||
|
title := fmt.Sprintf(`Mention in “%s”`, postTitle)
|
||||||
|
payload = payload.AlertTitle(title).Custom("type", "username")
|
||||||
|
|
||||||
|
pType, _ := reddit.SplitID(msg.ParentID)
|
||||||
|
if pType == "t1" {
|
||||||
|
payload = payload.Category("inbox-username-mention-context")
|
||||||
|
} else {
|
||||||
|
payload = payload.Category("inbox-username-mention-no-context")
|
||||||
|
}
|
||||||
|
|
||||||
|
payload = payload.Custom("subject", "comment").ThreadID("comment")
|
||||||
|
break
|
||||||
|
case (msg.Kind == "t1" && msg.Type == "post_reply"):
|
||||||
|
title := fmt.Sprintf(`%s to “%s”`, msg.Author, postTitle)
|
||||||
|
payload = payload.AlertTitle(title).Custom("type", "post").Category("inbox-post-reply").Custom("subject", "comment").ThreadID("comment")
|
||||||
|
break
|
||||||
|
case (msg.Kind == "t1" && msg.Type == "comment_reply"):
|
||||||
|
title := fmt.Sprintf(`%s in “%s”`, msg.Author, postTitle)
|
||||||
|
payload = payload.AlertTitle(title).Custom("type", "comment").Category("inbox-comment-reply").Custom("subject", "comment").ThreadID("comment")
|
||||||
|
break
|
||||||
|
case (msg.Kind == "t4"):
|
||||||
|
title := fmt.Sprintf(`Message from %s`, msg.Author)
|
||||||
|
payload = payload.AlertTitle(title).AlertSubtitle(postTitle).Custom("type", "private-message").Category("inbox-private-message")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
return payload
|
||||||
|
}
|
||||||
|
|
||||||
func logErrors(errChan <-chan error) {
|
func logErrors(errChan <-chan error) {
|
||||||
for err := range errChan {
|
for err := range errChan {
|
||||||
log.Print("error: ", err)
|
log.Print("error: ", err)
|
||||||
|
|
|
@ -25,6 +25,14 @@ type Client struct {
|
||||||
statsd *statsd.Client
|
statsd *statsd.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SplitID(id string) (string, string) {
|
||||||
|
if parts := strings.Split(id, "_"); len(parts) == 2 {
|
||||||
|
return parts[0], parts[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", ""
|
||||||
|
}
|
||||||
|
|
||||||
func NewClient(id, secret string, statsd *statsd.Client) *Client {
|
func NewClient(id, secret string, statsd *statsd.Client) *Client {
|
||||||
tracer := &httptrace.ClientTrace{
|
tracer := &httptrace.ClientTrace{
|
||||||
GotConn: func(info httptrace.GotConnInfo) {
|
GotConn: func(info httptrace.GotConnInfo) {
|
||||||
|
|
|
@ -5,10 +5,14 @@ import "fmt"
|
||||||
type Message struct {
|
type Message struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
Kind string `json:"kind"`
|
Kind string `json:"kind"`
|
||||||
|
Type string `json:"type"`
|
||||||
Author string `json:"author"`
|
Author string `json:"author"`
|
||||||
Subject string `json:"subject"`
|
Subject string `json:"subject"`
|
||||||
Body string `json:"body"`
|
Body string `json:"body"`
|
||||||
CreatedAt float64 `json:"created_utc"`
|
CreatedAt float64 `json:"created_utc"`
|
||||||
|
Context string `json:"context"`
|
||||||
|
ParentID string `json:"parent_id"`
|
||||||
|
LinkTitle string `json:"link_title"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type MessageData struct {
|
type MessageData struct {
|
||||||
|
|
Loading…
Reference in a new issue