mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-05 02:39:33 +02:00
Introduce notifications command
This commit is contained in:
parent
9293139fde
commit
dd0ebb7151
17 changed files with 272 additions and 274 deletions
87
shared/extra-utils/users/notifications-command.ts
Normal file
87
shared/extra-utils/users/notifications-command.ts
Normal file
|
@ -0,0 +1,87 @@
|
|||
import { ResultList } from '@shared/models'
|
||||
import { HttpStatusCode } from '../../core-utils/miscs/http-error-codes'
|
||||
import { UserNotification, UserNotificationSetting } from '../../models/users'
|
||||
import { AbstractCommand, OverrideCommandOptions } from '../shared'
|
||||
|
||||
export class NotificationsCommand extends AbstractCommand {
|
||||
|
||||
updateMySettings (options: OverrideCommandOptions & {
|
||||
settings: UserNotificationSetting
|
||||
}) {
|
||||
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: OverrideCommandOptions & {
|
||||
start?: number
|
||||
count?: number
|
||||
unread?: boolean
|
||||
sort?: string
|
||||
}) {
|
||||
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: OverrideCommandOptions & {
|
||||
ids: number[]
|
||||
}) {
|
||||
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: OverrideCommandOptions) {
|
||||
const path = '/api/v1/users/me/notifications/read-all'
|
||||
|
||||
return this.postBodyRequest({
|
||||
...options,
|
||||
|
||||
path,
|
||||
implicitToken: true,
|
||||
defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
|
||||
})
|
||||
}
|
||||
|
||||
async getLastest (options: OverrideCommandOptions = {}) {
|
||||
const { total, data } = await this.list({
|
||||
...options,
|
||||
start: 0,
|
||||
count: 1,
|
||||
sort: '-createdAt'
|
||||
})
|
||||
|
||||
if (total === 0) return undefined
|
||||
|
||||
return data[0]
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue