1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-03 01:39:37 +02:00
Peertube/packages/models/src/users/user-notification.model.ts
Chocobozzz 29329d6c45 Implement auto tag on comments and videos
* Comments and videos can be automatically tagged using core rules or
   watched word lists
 * These tags can be used to automatically filter videos and comments
 * Introduce a new video comment policy where comments must be approved
   first
 * Comments may have to be approved if the user auto block them using
   core rules or watched word lists
 * Implement FEP-5624 to federate reply control policies
2024-05-29 15:03:14 +02:00

143 lines
2.3 KiB
TypeScript

import { FollowState } from '../actors/index.js'
import { AbuseStateType } from '../moderation/index.js'
import { PluginType_Type } from '../plugins/index.js'
export const UserNotificationType = {
NEW_VIDEO_FROM_SUBSCRIPTION: 1,
NEW_COMMENT_ON_MY_VIDEO: 2,
NEW_ABUSE_FOR_MODERATORS: 3,
BLACKLIST_ON_MY_VIDEO: 4,
UNBLACKLIST_ON_MY_VIDEO: 5,
MY_VIDEO_PUBLISHED: 6,
MY_VIDEO_IMPORT_SUCCESS: 7,
MY_VIDEO_IMPORT_ERROR: 8,
NEW_USER_REGISTRATION: 9,
NEW_FOLLOW: 10,
COMMENT_MENTION: 11,
VIDEO_AUTO_BLACKLIST_FOR_MODERATORS: 12,
NEW_INSTANCE_FOLLOWER: 13,
AUTO_INSTANCE_FOLLOWING: 14,
ABUSE_STATE_CHANGE: 15,
ABUSE_NEW_MESSAGE: 16,
NEW_PLUGIN_VERSION: 17,
NEW_PEERTUBE_VERSION: 18,
MY_VIDEO_STUDIO_EDITION_FINISHED: 19,
NEW_USER_REGISTRATION_REQUEST: 20,
NEW_LIVE_FROM_SUBSCRIPTION: 21
} as const
export type UserNotificationType_Type = typeof UserNotificationType[keyof typeof UserNotificationType]
export interface VideoInfo {
id: number
uuid: string
shortUUID: string
name: string
}
export interface AvatarInfo {
width: number
path: string
}
export interface ActorInfo {
id: number
displayName: string
name: string
host: string
avatars: AvatarInfo[]
avatar: AvatarInfo
}
export interface UserNotification {
id: number
type: UserNotificationType_Type
read: boolean
video?: VideoInfo & {
channel: ActorInfo
}
videoImport?: {
id: number
video?: VideoInfo
torrentName?: string
magnetUri?: string
targetUrl?: string
}
comment?: {
id: number
threadId: number
account: ActorInfo
video: VideoInfo
heldForReview: boolean
}
abuse?: {
id: number
state: AbuseStateType
video?: VideoInfo
comment?: {
threadId: number
video: VideoInfo
}
account?: ActorInfo
}
videoBlacklist?: {
id: number
video: VideoInfo
}
account?: ActorInfo
actorFollow?: {
id: number
follower: ActorInfo
state: FollowState
following: {
type: 'account' | 'channel' | 'instance'
name: string
displayName: string
host: string
}
}
plugin?: {
name: string
type: PluginType_Type
latestVersion: string
}
peertube?: {
latestVersion: string
}
registration?: {
id: number
username: string
}
createdAt: string
updatedAt: string
}