aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/models/users/user-notification.model.ts
blob: a2621fb5bc7c050712baba91688e072f23b11320 (plain) (blame)
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
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
}

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
}