diff --git a/VERSION b/VERSION index 484129bc4..c672d9c21 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.114.2 +0.114.3 diff --git a/protocol/activity_center_persistence.go b/protocol/activity_center_persistence.go index 2e2a5eac6..81a48f716 100644 --- a/protocol/activity_center_persistence.go +++ b/protocol/activity_center_persistence.go @@ -285,11 +285,12 @@ func (db sqlitePersistence) unmarshalActivityCenterNotificationRows(rows *sql.Ro } -type activityCenterQueryParamsRead uint +type ActivityCenterQueryParamsRead uint const ( - activityCenterQueryParamsReadRead = iota + 1 - activityCenterQueryParamsReadUnread + ActivityCenterQueryParamsReadRead = iota + 1 + ActivityCenterQueryParamsReadUnread + ActivityCenterQueryParamsReadAll ) type activityCenterQueryParams struct { @@ -298,7 +299,7 @@ type activityCenterQueryParams struct { ids []types.HexBytes chatID string author string - read activityCenterQueryParamsRead + read ActivityCenterQueryParamsRead activityCenterType ActivityCenterType } @@ -331,9 +332,9 @@ func (db sqlitePersistence) buildActivityCenterQuery(tx *sql.Tx, params activity } switch read { - case activityCenterQueryParamsReadRead: + case ActivityCenterQueryParamsReadRead: readWhere = "AND a.read = 1" - case activityCenterQueryParamsReadUnread: + case ActivityCenterQueryParamsReadUnread: readWhere = "AND NOT(a.read)" } @@ -508,7 +509,7 @@ func (db sqlitePersistence) UnreadActivityCenterNotifications(cursor string, lim activityCenterType: activityType, cursor: cursor, limit: limit, - read: activityCenterQueryParamsReadUnread, + read: ActivityCenterQueryParamsReadUnread, } return db.activityCenterNotifications(params) @@ -519,7 +520,18 @@ func (db sqlitePersistence) ReadActivityCenterNotifications(cursor string, limit activityCenterType: activityType, cursor: cursor, limit: limit, - read: activityCenterQueryParamsReadRead, + read: ActivityCenterQueryParamsReadRead, + } + + return db.activityCenterNotifications(params) +} + +func (db sqlitePersistence) ActivityCenterNotificationsBy(cursor string, limit uint64, activityType ActivityCenterType, readType ActivityCenterQueryParamsRead) (string, []*ActivityCenterNotification, error) { + params := activityCenterQueryParams{ + activityCenterType: activityType, + cursor: cursor, + limit: limit, + read: readType, } return db.activityCenterNotifications(params) diff --git a/protocol/messenger_activity_center.go b/protocol/messenger_activity_center.go index 46da7e1c0..75bda8fd8 100644 --- a/protocol/messenger_activity_center.go +++ b/protocol/messenger_activity_center.go @@ -267,6 +267,18 @@ func (m *Messenger) UnreadActivityCenterNotifications(cursor string, limit uint6 }, nil } +func (m *Messenger) ActivityCenterNotificationsBy(cursor string, limit uint64, activityType ActivityCenterType, readType ActivityCenterQueryParamsRead) (*ActivityCenterPaginationResponse, error) { + cursor, notifications, err := m.persistence.ActivityCenterNotificationsBy(cursor, limit, activityType, readType) + if err != nil { + return nil, err + } + + return &ActivityCenterPaginationResponse{ + Cursor: cursor, + Notifications: notifications, + }, nil +} + func (m *Messenger) handleActivityCenterRead(state *ReceivedMessageState, message protobuf.SyncActivityCenterRead) error { resp, err := m.MarkActivityCenterNotificationsRead(context.TODO(), toHexBytes(message.Ids), false) diff --git a/services/ext/api.go b/services/ext/api.go index 0c4a2b3f8..e5ffe639c 100644 --- a/services/ext/api.go +++ b/services/ext/api.go @@ -1085,6 +1085,10 @@ func (api *PublicAPI) UnreadActivityCenterNotifications(cursor string, limit uin return api.service.messenger.UnreadActivityCenterNotifications(cursor, limit, activityType) } +func (api *PublicAPI) ActivityCenterNotificationsBy(cursor string, limit uint64, activityType protocol.ActivityCenterType, readType protocol.ActivityCenterQueryParamsRead) (*protocol.ActivityCenterPaginationResponse, error) { + return api.service.messenger.ActivityCenterNotificationsBy(cursor, limit, activityType, readType) +} + func (api *PublicAPI) RequestAllHistoricMessages() (*protocol.MessengerResponse, error) { return api.service.messenger.RequestAllHistoricMessages() }