🐛 Fix notified draft post
This commit is contained in:
parent
6f7a2de41e
commit
068fffc1fd
@ -501,6 +501,54 @@ func EnsurePostCategoriesAndTags(item models.Post) (models.Post, error) {
|
|||||||
return item, nil
|
return item, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NotifyReplying(item models.Post, user models.Publisher) error {
|
||||||
|
content, ok := item.Body["content"].(string)
|
||||||
|
if !ok {
|
||||||
|
content = "Posted a post"
|
||||||
|
}
|
||||||
|
var title *string
|
||||||
|
title, _ = item.Body["title"].(*string)
|
||||||
|
item.Publisher = user
|
||||||
|
if err := NotifyUserSubscription(user, item, content, title); err != nil {
|
||||||
|
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by user...")
|
||||||
|
}
|
||||||
|
for _, tag := range item.Tags {
|
||||||
|
if err := NotifyTagSubscription(tag, user, item, content, title); err != nil {
|
||||||
|
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by tag...")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, category := range item.Categories {
|
||||||
|
if err := NotifyCategorySubscription(category, user, item, content, title); err != nil {
|
||||||
|
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by category...")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func NotifySubscribers(item models.Post, user models.Publisher) error {
|
||||||
|
content, ok := item.Body["content"].(string)
|
||||||
|
if !ok {
|
||||||
|
content = "Posted a post"
|
||||||
|
}
|
||||||
|
var title *string
|
||||||
|
title, _ = item.Body["title"].(*string)
|
||||||
|
item.Publisher = user
|
||||||
|
if err := NotifyUserSubscription(user, item, content, title); err != nil {
|
||||||
|
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by user...")
|
||||||
|
}
|
||||||
|
for _, tag := range item.Tags {
|
||||||
|
if err := NotifyTagSubscription(tag, user, item, content, title); err != nil {
|
||||||
|
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by tag...")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, category := range item.Categories {
|
||||||
|
if err := NotifyCategorySubscription(category, user, item, content, title); err != nil {
|
||||||
|
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by category...")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func NewPost(user models.Publisher, item models.Post) (models.Post, error) {
|
func NewPost(user models.Publisher, item models.Post) (models.Post, error) {
|
||||||
if item.Alias != nil && len(*item.Alias) == 0 {
|
if item.Alias != nil && len(*item.Alias) == 0 {
|
||||||
item.Alias = nil
|
item.Alias = nil
|
||||||
@ -543,60 +591,12 @@ func NewPost(user models.Publisher, item models.Post) (models.Post, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Notify the original poster its post has been replied
|
// Notify the original poster its post has been replied
|
||||||
if item.ReplyID != nil {
|
if item.ReplyID != nil && !item.IsDraft {
|
||||||
content, ok := item.Body["content"].(string)
|
go NotifyReplying(item, user)
|
||||||
if !ok {
|
|
||||||
content = "Posted a post"
|
|
||||||
} else {
|
|
||||||
content = TruncatePostContentShort(content)
|
|
||||||
}
|
|
||||||
|
|
||||||
var op models.Post
|
|
||||||
if err := database.C.
|
|
||||||
Where("id = ?", item.ReplyID).
|
|
||||||
Preload("Publisher").
|
|
||||||
First(&op).Error; err == nil {
|
|
||||||
if op.Publisher.AccountID != nil && op.Publisher.ID != user.ID {
|
|
||||||
log.Debug().Uint("user", *op.Publisher.AccountID).Msg("Notifying the original poster their post got replied...")
|
|
||||||
err = NotifyPosterAccount(
|
|
||||||
op.Publisher,
|
|
||||||
op,
|
|
||||||
"Post got replied",
|
|
||||||
fmt.Sprintf("%s (%s) replied you: %s", user.Nick, user.Name, content),
|
|
||||||
"interactive.reply",
|
|
||||||
fmt.Sprintf("%s replied your post #%d", user.Nick, *item.ReplyID),
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Error().Err(err).Msg("An error occurred when notifying user...")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notify the subscriptions
|
// Notify the subscriptions
|
||||||
if item.ReplyID == nil {
|
if item.ReplyID == nil && !item.IsDraft {
|
||||||
content, ok := item.Body["content"].(string)
|
go NotifySubscribers(item, user)
|
||||||
if !ok {
|
|
||||||
content = "Posted a post"
|
|
||||||
}
|
|
||||||
var title *string
|
|
||||||
title, _ = item.Body["title"].(*string)
|
|
||||||
go func() {
|
|
||||||
item.Publisher = user
|
|
||||||
if err := NotifyUserSubscription(user, item, content, title); err != nil {
|
|
||||||
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by user...")
|
|
||||||
}
|
|
||||||
for _, tag := range item.Tags {
|
|
||||||
if err := NotifyTagSubscription(tag, user, item, content, title); err != nil {
|
|
||||||
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by tag...")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for _, category := range item.Categories {
|
|
||||||
if err := NotifyCategorySubscription(category, user, item, content, title); err != nil {
|
|
||||||
log.Error().Err(err).Msg("An error occurred when notifying subscriptions user by category...")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Debug().Dur("elapsed", time.Since(start)).Msg("The post is posted.")
|
log.Debug().Dur("elapsed", time.Since(start)).Msg("The post is posted.")
|
||||||
@ -645,6 +645,17 @@ func EditPost(item models.Post, og models.Post) (models.Post, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Msg("An error occurred when updating post attachment meta...")
|
log.Error().Err(err).Msg("An error occurred when updating post attachment meta...")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if og.IsDraft && !item.IsDraft {
|
||||||
|
// Notify the original poster its post has been replied
|
||||||
|
if item.ReplyID != nil {
|
||||||
|
go NotifyReplying(item, item.Publisher)
|
||||||
|
}
|
||||||
|
// Notify the subscriptions
|
||||||
|
if item.ReplyID == nil {
|
||||||
|
go NotifySubscribers(item, item.Publisher)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return item, err
|
return item, err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user