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
|
import { FollowState } from '../actors'
import { AbuseState } from '../moderation'
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
}
export interface VideoInfo {
id: number
uuid: string
name: string
}
export interface ActorInfo {
id: number
displayName: string
name: string
host: string
avatar?: {
path: string
}
}
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: {
id: number
uuid: string
name: string
}
}
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
}
}
createdAt: string
updatedAt: string
}
|