add quarantine videos feature (#1637)
[oweals/peertube.git] / client / src / app / shared / users / user-notifications.component.html
1 <div *ngIf="componentPagination.totalItems === 0" class="no-notification" i18n>You don't have notifications.</div>
2
3 <div class="notifications" myInfiniteScroller [autoInit]="true" (nearOfBottom)="onNearOfBottom()">
4   <div *ngFor="let notification of notifications" class="notification" [ngClass]="{ unread: !notification.read }" (click)="markAsRead(notification)">
5
6     <ng-container [ngSwitch]="notification.type">
7       <ng-container i18n *ngSwitchCase="UserNotificationType.NEW_VIDEO_FROM_SUBSCRIPTION">
8         <img alt="" aria-labelledby="avatar" class="avatar" [src]="notification.video.channel.avatarUrl" />
9
10         <div class="message">
11           {{ notification.video.channel.displayName }} published a <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl">new video</a>
12         </div>
13       </ng-container>
14
15       <ng-container i18n *ngSwitchCase="UserNotificationType.UNBLACKLIST_ON_MY_VIDEO">
16         <my-global-icon iconName="undo"></my-global-icon>
17
18         <div class="message">
19           Your video <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl">{{ notification.video.name }}</a> has been unblacklisted
20         </div>
21       </ng-container>
22
23       <ng-container i18n *ngSwitchCase="UserNotificationType.BLACKLIST_ON_MY_VIDEO">
24         <my-global-icon iconName="no"></my-global-icon>
25
26         <div class="message">
27           Your video <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl">{{ notification.videoBlacklist.video.name }}</a> has been blacklisted
28         </div>
29       </ng-container>
30
31       <ng-container i18n *ngSwitchCase="UserNotificationType.NEW_VIDEO_ABUSE_FOR_MODERATORS">
32         <my-global-icon iconName="alert"></my-global-icon>
33
34         <div class="message">
35           <a (click)="markAsRead(notification)" [routerLink]="notification.videoAbuseUrl">A new video abuse</a> has been created on video <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl">{{ notification.videoAbuse.video.name }}</a>
36         </div>
37       </ng-container>
38
39       <ng-container i18n *ngSwitchCase="UserNotificationType.VIDEO_AUTO_BLACKLIST_FOR_MODERATORS">
40         <my-global-icon iconName="no"></my-global-icon>
41
42         <div class="message">
43           The recently added video <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl">{{ notification.video.name }}</a> has been <a (click)="markAsRead(notification)" [routerLink]="notification.videoAutoBlacklistUrl">auto-blacklisted</a>
44         </div>
45       </ng-container>
46
47       <ng-container i18n *ngSwitchCase="UserNotificationType.NEW_COMMENT_ON_MY_VIDEO">
48         <img alt="" aria-labelledby="avatar" class="avatar" [src]="notification.comment.account.avatarUrl" />
49
50         <div class="message">
51           <a (click)="markAsRead(notification)" [routerLink]="notification.accountUrl">{{ notification.comment.account.displayName }}</a> commented your video <a (click)="markAsRead(notification)" [routerLink]="notification.commentUrl">{{ notification.comment.video.name }}</a>
52         </div>
53       </ng-container>
54
55       <ng-container i18n *ngSwitchCase="UserNotificationType.MY_VIDEO_PUBLISHED">
56         <my-global-icon iconName="sparkle"></my-global-icon>
57
58         <div class="message">
59           Your video <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl">{{ notification.video.name }}</a> has been published
60         </div>
61       </ng-container>
62
63       <ng-container i18n *ngSwitchCase="UserNotificationType.MY_VIDEO_IMPORT_SUCCESS">
64         <my-global-icon iconName="cloud-download"></my-global-icon>
65
66         <div class="message">
67           <a (click)="markAsRead(notification)" [routerLink]="notification.videoUrl || notification.videoImportUrl">Your video import</a> {{ notification.videoImportIdentifier }} succeeded
68         </div>
69       </ng-container>
70
71       <ng-container i18n *ngSwitchCase="UserNotificationType.MY_VIDEO_IMPORT_ERROR">
72         <my-global-icon iconName="cloud-error"></my-global-icon>
73
74         <div class="message">
75           <a (click)="markAsRead(notification)" [routerLink]="notification.videoImportUrl">Your video import</a> {{ notification.videoImportIdentifier }} failed
76         </div>
77       </ng-container>
78
79       <ng-container i18n *ngSwitchCase="UserNotificationType.NEW_USER_REGISTRATION">
80         <my-global-icon iconName="user-add"></my-global-icon>
81
82         <div class="message">
83           User <a (click)="markAsRead(notification)" [routerLink]="notification.accountUrl">{{ notification.account.name }} registered</a> on your instance
84         </div>
85       </ng-container>
86
87       <ng-container i18n *ngSwitchCase="UserNotificationType.NEW_FOLLOW">
88         <img alt="" aria-labelledby="avatar" class="avatar" [src]="notification.actorFollow.follower.avatarUrl" />
89
90         <div class="message">
91           <a (click)="markAsRead(notification)" [routerLink]="notification.accountUrl">{{ notification.actorFollow.follower.displayName }}</a> is following
92
93           <ng-container *ngIf="notification.actorFollow.following.type === 'channel'">your channel {{ notification.actorFollow.following.displayName }}</ng-container>
94           <ng-container *ngIf="notification.actorFollow.following.type === 'account'">your account</ng-container>
95         </div>
96       </ng-container>
97
98       <ng-container i18n *ngSwitchCase="UserNotificationType.COMMENT_MENTION">
99         <img alt="" aria-labelledby="avatar" class="avatar" [src]="notification.comment.account.avatarUrl" />
100
101         <div class="message">
102           <a (click)="markAsRead(notification)" [routerLink]="notification.accountUrl">{{ notification.comment.account.displayName }}</a> mentioned you on <a (click)="markAsRead(notification)" [routerLink]="notification.commentUrl">video {{ notification.comment.video.name }}</a>
103         </div>
104       </ng-container>
105     </ng-container>
106
107     <div class="from-date">{{ notification.createdAt | myFromNow }}</div>
108   </div>
109 </div>