80 lines
2.3 KiB
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
|
|
}
|