import { HttpStatusCode , ResultList , UserNotification , UserNotificationSetting } from '@shared/models' ; import { AbstractCommand , OverrideCommandOptions } from '../shared' ; export class NotificationsCommand extends AbstractCommand { updateMySettings ( options ) { const path = '/api/v1/users/me/notification-settings' ; return this . putBodyRequest ( { ... options , path , fields : options . settings , implicitToken : true , defaultExpectedStatus : HttpStatusCode . NO_CONTENT_204 } ) ; } list ( options ) { const { start , count , unread , sort = '-createdAt' } = options ; const path = '/api/v1/users/me/notifications' ; return this . getRequestBody < ResultList < UserNotification > > ( { ... options , path , query : { start , count , sort , unread } , implicitToken : true , defaultExpectedStatus : HttpStatusCode . OK_200 } ) ; } markAsRead ( options ) { const { ids } = options ; const path = '/api/v1/users/me/notifications/read' ; return this . postBodyRequest ( { ... options , path , fields : { ids } , implicitToken : true , defaultExpectedStatus : HttpStatusCode . NO_CONTENT_204 } ) ; } markAsReadAll ( options ) { const path = '/api/v1/users/me/notifications/read-all' ; return this . postBodyRequest ( { ... options , path , implicitToken : true , defaultExpectedStatus : HttpStatusCode . NO_CONTENT_204 } ) ; } async getLatest ( options = { } ) { const { total , data } = await this . list ( { ... options , start : 0 , count : 1 , sort : '-createdAt' } ) ; if ( total === 0 ) return undefined ; return data [ 0 ] ; } }