fix the things for messages

This commit is contained in:
Andre Medeiros 2021-10-17 10:47:43 -04:00
parent 62796df6de
commit 42243def97

View file

@ -139,16 +139,40 @@ func (snc *stuckNotificationsConsumer) Consume(delivery rmq.Delivery) {
"thing#id": account.LastMessageID,
}).Debug("fetching last thing")
things, err := rac.AboutInfo(account.LastMessageID)
kind := account.LastMessageID[:2]
var things *reddit.ListingResponse
if kind == "t4" {
snc.logger.WithFields(logrus.Fields{
"account#username": account.NormalizedUsername(),
"thing#id": account.LastMessageID,
}).Debug("checking last thing via inbox")
things, err = rac.MessageInbox()
if err != nil {
snc.logger.WithFields(logrus.Fields{
"err": err,
}).Error("failed to fetch last thing via inbox")
return
}
} else {
things, err = rac.AboutInfo(account.LastMessageID)
if err != nil {
snc.logger.WithFields(logrus.Fields{
"err": err,
}).Error("failed to fetch last thing")
return
}
}
lastAlertedAt := 0.0
if things.Count > 1 {
for _, thing := range things.Children {
if thing.FullName() != account.LastMessageID {
continue
}
if things.Count == 1 {
thing := things.Children[0]
if thing.Author != "[deleted]" {
snc.logger.WithFields(logrus.Fields{
"account#username": account.NormalizedUsername(),
@ -156,6 +180,9 @@ func (snc *stuckNotificationsConsumer) Consume(delivery rmq.Delivery) {
}).Debug("thing exists, returning")
return
}
lastAlertedAt = thing.CreatedAt
}
}
snc.logger.WithFields(logrus.Fields{
@ -163,6 +190,7 @@ func (snc *stuckNotificationsConsumer) Consume(delivery rmq.Delivery) {
"thing#id": account.LastMessageID,
}).Info("thing got deleted, resetting")
if kind != "t4" {
things, err = rac.MessageInbox()
if err != nil {
snc.logger.WithFields(logrus.Fields{
@ -171,10 +199,14 @@ func (snc *stuckNotificationsConsumer) Consume(delivery rmq.Delivery) {
}).Error("failed to get message inbox")
return
}
}
account.LastMessageID = ""
if things.Count > 0 {
account.LastMessageID = things.Children[0].FullName()
for _, thing := range things.Children {
if lastAlertedAt > thing.CreatedAt {
break
}
account.LastMessageID = thing.FullName()
}
if err := snc.accountRepo.Update(ctx, &account); err != nil {