Notify is back!

This commit is contained in:
2024-03-31 21:46:59 +08:00
parent 6e98029eb4
commit 36bb84e48c
6 changed files with 63 additions and 16 deletions

View File

@ -1,11 +1,11 @@
package services
import (
"context"
"git.solsynth.dev/hydrogen/identity/pkg/grpc/proto"
"git.solsynth.dev/hydrogen/interactive/pkg/database"
"git.solsynth.dev/hydrogen/interactive/pkg/grpc"
"git.solsynth.dev/hydrogen/interactive/pkg/models"
"context"
"github.com/spf13/viper"
"time"
)
@ -34,7 +34,7 @@ func GetAccountFollowed(user models.Account, target models.Account) (models.Acco
return relationship, err == nil
}
func NotifyAccount(user models.Account, subject, content string, links ...*proto.NotifyLink) error {
func NotifyAccount(user models.Account, subject, content string, realtime bool, links ...*proto.NotifyLink) error {
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
@ -45,6 +45,7 @@ func NotifyAccount(user models.Account, subject, content string, links ...*proto
Content: content,
Links: links,
RecipientId: uint64(user.ID),
IsRealtime: realtime,
IsImportant: false,
})

View File

@ -2,6 +2,8 @@ package services
import (
"fmt"
"git.solsynth.dev/hydrogen/identity/pkg/grpc/proto"
"github.com/rs/zerolog/log"
"time"
"git.solsynth.dev/hydrogen/interactive/pkg/database"
@ -80,3 +82,22 @@ func (v *PostTypeContext) CountComment(id uint) (int64, error) {
return count, nil
}
func CommentNotify(this models.PostInterface, original models.Feed, columnName, tableName string) {
var op models.Feed
if err := database.C.Where(columnName+"_id = ?", original.ID).Preload("Author").Table(tableName).First(&op).Error; err == nil {
if op.Author.ID != this.GetAuthor().ID {
postUrl := fmt.Sprintf("https://%s/posts/%d", viper.GetString("domain"), this.GetID())
err := NotifyAccount(
op.Author,
fmt.Sprintf("%s commented you", this.GetAuthor().Name),
fmt.Sprintf("%s commented your post. Check it out!", this.GetAuthor().Name),
false,
&proto.NotifyLink{Label: "Related post", Url: postUrl},
)
if err != nil {
log.Error().Err(err).Msg("An error occurred when notifying user...")
}
}
}
}

View File

@ -321,6 +321,7 @@ func NewPost[T models.PostInterface](item T) (T, error) {
op.Author,
fmt.Sprintf("%s replied you", item.GetAuthor().Name),
fmt.Sprintf("%s replied your post. Check it out!", item.GetAuthor().Name),
false,
&proto.NotifyLink{Label: "Related post", Url: postUrl},
)
if err != nil {
@ -345,7 +346,8 @@ func NewPost[T models.PostInterface](item T) (T, error) {
err := NotifyAccount(
account,
fmt.Sprintf("%s just posted a post", item.GetAuthor().Name),
"Account you followed post a brand new post. Check it out!",
"Someone you followed post a brand new post. Check it out!",
false,
&proto.NotifyLink{Label: "Related post", Url: postUrl},
)
if err != nil {