🐛 Tryin' to fix notifications issue

This commit is contained in:
LittleSheep 2024-09-20 21:55:25 +08:00
parent 3031f61ea4
commit ba32925b58
3 changed files with 25 additions and 9 deletions

View File

@ -116,6 +116,7 @@ func (v *Server) NotifyAllUser(_ context.Context, in *proto.NotifyRequest) (*pro
Picture: in.Picture,
IsRealtime: in.GetIsRealtime(),
IsForcePush: in.GetIsForcePush(),
Account: user,
AccountID: user.ID,
}

View File

@ -67,6 +67,26 @@ func NewNotification(notification models.Notification) error {
}
func NewNotificationBatch(notifications []models.Notification) error {
if len(notifications) == 0 {
return nil
}
notifiable := CheckNotificationNotifiableBatch(lo.Map(notifications, func(item models.Notification, index int) models.Account {
return item.Account
}), notifications[0].Topic)
accountIdx := lo.Map(
lo.Filter(notifications, func(item models.Notification, index int) bool {
return notifiable[index]
}),
func(item models.Notification, index int) uint {
return item.AccountID
},
)
if len(accountIdx) == 0 {
return nil
}
if err := database.C.CreateInBatches(notifications, 1000).Error; err != nil {
return err
}

View File

@ -47,10 +47,8 @@ func CheckNotificationNotifiable(account models.Account, topic string) bool {
return false
}
if val, ok := notification.Config[topic]; ok {
if status, ok := val.(bool); !ok || status {
return true
} else if !status {
return false
if status, ok := val.(bool); ok {
return status
}
}
return true
@ -67,11 +65,8 @@ func CheckNotificationNotifiableBatch(accounts []models.Account, topic string) [
var notifiable []bool
for _, notification := range notifications {
if val, ok := notification.Config[topic]; ok {
if status, ok := val.(bool); !ok || status {
notifiable = append(notifiable, true)
continue
} else if !status {
notifiable = append(notifiable, false)
if status, ok := val.(bool); ok {
notifiable = append(notifiable, status)
continue
}
}