status-go/protocol/messenger_activity_center.go

80 lines
2.3 KiB
Go

package protocol
import (
"github.com/status-im/status-go/eth-node/types"
)
func (m *Messenger) UnreadActivityCenterNotificationsCount() (uint64, error) {
return m.persistence.UnreadActivityCenterNotificationsCount()
}
func (m *Messenger) MarkAllActivityCenterNotificationsRead() error {
return m.persistence.MarkAllActivityCenterNotificationsRead()
}
func (m *Messenger) MarkActivityCenterNotificationsRead(ids []types.HexBytes) error {
return m.persistence.MarkActivityCenterNotificationsRead(ids)
}
func (m *Messenger) processAcceptedActivityCenterNotifications(notifications []*ActivityCenterNotification) (*MessengerResponse, error) {
response := &MessengerResponse{}
var chats []*Chat
for _, notification := range notifications {
if notification.ChatID != "" {
chat, ok := m.allChats.Load(notification.ChatID)
if !ok {
// This should not really happen, but ignore just in case it was deleted in the meantime
m.logger.Warn("chat not found")
continue
}
chat.Active = true
chats = append(chats, chat)
response.AddChat(chat)
}
}
if len(chats) != 0 {
err := m.saveChats(chats)
if err != nil {
return nil, err
}
}
return response, nil
}
func (m *Messenger) AcceptAllActivityCenterNotifications() (*MessengerResponse, error) {
notifications, err := m.persistence.AcceptAllActivityCenterNotifications()
if err != nil {
return nil, err
}
return m.processAcceptedActivityCenterNotifications(notifications)
}
func (m *Messenger) AcceptActivityCenterNotifications(ids []types.HexBytes) (*MessengerResponse, error) {
notifications, err := m.persistence.AcceptActivityCenterNotifications(ids)
if err != nil {
return nil, err
}
return m.processAcceptedActivityCenterNotifications(notifications)
}
func (m *Messenger) DismissAllActivityCenterNotifications() error {
return m.persistence.DismissAllActivityCenterNotifications()
}
func (m *Messenger) DismissActivityCenterNotifications(ids []types.HexBytes) error {
return m.persistence.DismissActivityCenterNotifications(ids)
}
func (m *Messenger) ActivityCenterNotifications(cursor string, limit uint64) (*ActivityCenterPaginationResponse, error) {
cursor, notifications, err := m.persistence.ActivityCenterNotifications(cursor, limit)
if err != nil {
return nil, err
}
return &ActivityCenterPaginationResponse{
Cursor: cursor,
Notifications: notifications,
}, nil
}