feat: add API to mark activity center messages as unread
This commit is contained in:
parent
6724cf4c75
commit
df30c06163
|
@ -382,6 +382,20 @@ func (db sqlitePersistence) MarkActivityCenterNotificationsRead(ids []types.HexB
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (db sqlitePersistence) MarkActivityCenterNotificationsUnread(ids []types.HexBytes) error {
|
||||||
|
|
||||||
|
idsArgs := make([]interface{}, 0, len(ids))
|
||||||
|
for _, id := range ids {
|
||||||
|
idsArgs = append(idsArgs, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
inVector := strings.Repeat("?, ", len(ids)-1) + "?"
|
||||||
|
query := "UPDATE activity_center_notifications SET read = 0 WHERE id IN (" + inVector + ")" // nolint: gosec
|
||||||
|
_, err := db.db.Exec(query, idsArgs...)
|
||||||
|
return err
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (db sqlitePersistence) UnreadActivityCenterNotificationsCount() (uint64, error) {
|
func (db sqlitePersistence) UnreadActivityCenterNotificationsCount() (uint64, error) {
|
||||||
var count uint64
|
var count uint64
|
||||||
err := db.db.QueryRow(`SELECT COUNT(1) FROM activity_center_notifications WHERE NOT read AND NOT dismissed AND NOT accepted`).Scan(&count)
|
err := db.db.QueryRow(`SELECT COUNT(1) FROM activity_center_notifications WHERE NOT read AND NOT dismissed AND NOT accepted`).Scan(&count)
|
||||||
|
|
|
@ -16,6 +16,10 @@ func (m *Messenger) MarkActivityCenterNotificationsRead(ids []types.HexBytes) er
|
||||||
return m.persistence.MarkActivityCenterNotificationsRead(ids)
|
return m.persistence.MarkActivityCenterNotificationsRead(ids)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Messenger) MarkActivityCenterNotificationsUnread(ids []types.HexBytes) error {
|
||||||
|
return m.persistence.MarkActivityCenterNotificationsUnread(ids)
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Messenger) processAcceptedActivityCenterNotifications(notifications []*ActivityCenterNotification) (*MessengerResponse, error) {
|
func (m *Messenger) processAcceptedActivityCenterNotifications(notifications []*ActivityCenterNotification) (*MessengerResponse, error) {
|
||||||
response := &MessengerResponse{}
|
response := &MessengerResponse{}
|
||||||
var chats []*Chat
|
var chats []*Chat
|
||||||
|
|
|
@ -1214,6 +1214,12 @@ func TestActivityCenterPersistence(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, uint64(1), count)
|
require.Equal(t, uint64(1), count)
|
||||||
|
|
||||||
|
// Mark first one as unread
|
||||||
|
require.NoError(t, p.MarkActivityCenterNotificationsUnread([]types.HexBytes{nID1}))
|
||||||
|
count, err = p.UnreadActivityCenterNotificationsCount()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, uint64(2), count)
|
||||||
|
|
||||||
// Mark all read
|
// Mark all read
|
||||||
require.NoError(t, p.MarkAllActivityCenterNotificationsRead())
|
require.NoError(t, p.MarkAllActivityCenterNotificationsRead())
|
||||||
_, notifications, err = p.ActivityCenterNotifications(cursor, 2)
|
_, notifications, err = p.ActivityCenterNotifications(cursor, 2)
|
||||||
|
|
|
@ -875,6 +875,10 @@ func (api *PublicAPI) MarkActivityCenterNotificationsRead(ids []types.HexBytes)
|
||||||
return api.service.messenger.MarkActivityCenterNotificationsRead(ids)
|
return api.service.messenger.MarkActivityCenterNotificationsRead(ids)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (api *PublicAPI) MarkActivityCenterNotificationsUnread(ids []types.HexBytes) error {
|
||||||
|
return api.service.messenger.MarkActivityCenterNotificationsUnread(ids)
|
||||||
|
}
|
||||||
|
|
||||||
func (api *PublicAPI) AcceptAllActivityCenterNotifications() (*protocol.MessengerResponse, error) {
|
func (api *PublicAPI) AcceptAllActivityCenterNotifications() (*protocol.MessengerResponse, error) {
|
||||||
return api.service.messenger.AcceptAllActivityCenterNotifications()
|
return api.service.messenger.AcceptAllActivityCenterNotifications()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue