1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
import { FollowState } from '../actors'
import { AbuseState } from '../moderation'
import { PluginType } from '../plugins'
export const enum 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_EDITION_FINISHED = 19
}
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
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
}
abuse?: {
id: number
state: AbuseState
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
latestVersion: string
}
peertube?: {
latestVersion: string
}
createdAt: string
updatedAt: string
}
|