From 35bf0c83c80f59ca79f4b84fac8700f17adeb22d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 10 Oct 2017 10:02:18 +0200 Subject: Video blacklist refractoring --- client/src/app/+admin/admin-routing.module.ts | 4 +- client/src/app/+admin/admin.component.ts | 1 - client/src/app/+admin/admin.module.ts | 9 ++- .../blacklist-list/blacklist-list.component.html | 26 --------- .../blacklist-list/blacklist-list.component.ts | 65 ---------------------- .../app/+admin/blacklist/blacklist-list/index.ts | 1 - .../app/+admin/blacklist/blacklist.component.ts | 8 --- .../src/app/+admin/blacklist/blacklist.routes.ts | 27 --------- client/src/app/+admin/blacklist/index.ts | 4 -- .../+admin/blacklist/shared/blacklist.service.ts | 44 --------------- client/src/app/+admin/blacklist/shared/index.ts | 1 - client/src/app/+admin/video-blacklist/index.ts | 3 + .../video-blacklist/video-blacklist-list/index.ts | 1 + .../video-blacklist-list.component.html | 26 +++++++++ .../video-blacklist-list.component.ts | 64 +++++++++++++++++++++ .../video-blacklist/video-blacklist.component.ts | 7 +++ .../video-blacklist/video-blacklist.routes.ts | 27 +++++++++ client/src/app/app.component.ts | 2 +- client/src/app/core/menu/menu-admin.component.html | 2 +- client/src/app/shared/index.ts | 1 + client/src/app/shared/shared.module.ts | 2 + client/src/app/shared/video-blacklist/index.ts | 1 + .../video-blacklist/video-blacklist.service.ts | 50 +++++++++++++++++ .../videos/+video-watch/video-watch.component.ts | 19 ++++--- client/src/app/videos/shared/video.service.ts | 6 -- 25 files changed, 200 insertions(+), 201 deletions(-) delete mode 100644 client/src/app/+admin/blacklist/blacklist-list/blacklist-list.component.html delete mode 100644 client/src/app/+admin/blacklist/blacklist-list/blacklist-list.component.ts delete mode 100644 client/src/app/+admin/blacklist/blacklist-list/index.ts delete mode 100644 client/src/app/+admin/blacklist/blacklist.component.ts delete mode 100644 client/src/app/+admin/blacklist/blacklist.routes.ts delete mode 100644 client/src/app/+admin/blacklist/index.ts delete mode 100644 client/src/app/+admin/blacklist/shared/blacklist.service.ts delete mode 100644 client/src/app/+admin/blacklist/shared/index.ts create mode 100644 client/src/app/+admin/video-blacklist/index.ts create mode 100644 client/src/app/+admin/video-blacklist/video-blacklist-list/index.ts create mode 100644 client/src/app/+admin/video-blacklist/video-blacklist-list/video-blacklist-list.component.html create mode 100644 client/src/app/+admin/video-blacklist/video-blacklist-list/video-blacklist-list.component.ts create mode 100644 client/src/app/+admin/video-blacklist/video-blacklist.component.ts create mode 100644 client/src/app/+admin/video-blacklist/video-blacklist.routes.ts create mode 100644 client/src/app/shared/video-blacklist/index.ts create mode 100644 client/src/app/shared/video-blacklist/video-blacklist.service.ts (limited to 'client') diff --git a/client/src/app/+admin/admin-routing.module.ts b/client/src/app/+admin/admin-routing.module.ts index 0cd3e54c2..c3e4895ac 100644 --- a/client/src/app/+admin/admin-routing.module.ts +++ b/client/src/app/+admin/admin-routing.module.ts @@ -9,7 +9,7 @@ import { RequestSchedulersRoutes } from './request-schedulers' import { UsersRoutes } from './users' import { VideoAbusesRoutes } from './video-abuses' import { AdminGuard } from './admin-guard.service' -import { BlacklistRoutes } from './blacklist' +import { VideoBlacklistRoutes } from './video-blacklist' const adminRoutes: Routes = [ { @@ -27,7 +27,7 @@ const adminRoutes: Routes = [ ...RequestSchedulersRoutes, ...UsersRoutes, ...VideoAbusesRoutes, - ...BlacklistRoutes + ...VideoBlacklistRoutes ] } ] diff --git a/client/src/app/+admin/admin.component.ts b/client/src/app/+admin/admin.component.ts index 93ec216bf..ecd62ee61 100644 --- a/client/src/app/+admin/admin.component.ts +++ b/client/src/app/+admin/admin.component.ts @@ -3,6 +3,5 @@ import { Component } from '@angular/core' @Component({ template: '' }) - export class AdminComponent { } diff --git a/client/src/app/+admin/admin.module.ts b/client/src/app/+admin/admin.module.ts index c2dd60774..f29c501b0 100644 --- a/client/src/app/+admin/admin.module.ts +++ b/client/src/app/+admin/admin.module.ts @@ -6,7 +6,7 @@ import { FriendsComponent, FriendAddComponent, FriendListComponent, FriendServic import { RequestSchedulersComponent, RequestSchedulersStatsComponent, RequestSchedulersService } from './request-schedulers' import { UsersComponent, UserAddComponent, UserUpdateComponent, UserListComponent, UserService } from './users' import { VideoAbusesComponent, VideoAbuseListComponent } from './video-abuses' -import { BlacklistComponent, BlacklistListComponent, BlacklistService } from './blacklist' +import { VideoBlacklistComponent, VideoBlacklistListComponent } from './video-blacklist' import { SharedModule } from '../shared' import { AdminGuard } from './admin-guard.service' @@ -31,8 +31,8 @@ import { AdminGuard } from './admin-guard.service' UserUpdateComponent, UserListComponent, - BlacklistComponent, - BlacklistListComponent, + VideoBlacklistComponent, + VideoBlacklistListComponent, VideoAbusesComponent, VideoAbuseListComponent @@ -46,8 +46,7 @@ import { AdminGuard } from './admin-guard.service' FriendService, RequestSchedulersService, UserService, - AdminGuard, - BlacklistService + AdminGuard ] }) export class AdminModule { } diff --git a/client/src/app/+admin/blacklist/blacklist-list/blacklist-list.component.html b/client/src/app/+admin/blacklist/blacklist-list/blacklist-list.component.html deleted file mode 100644 index 5d4636ee9..000000000 --- a/client/src/app/+admin/blacklist/blacklist-list/blacklist-list.component.html +++ /dev/null @@ -1,26 +0,0 @@ -
-
-

Blacklisted videos

- - - - - - - - - - - - - - - - - - -
-
diff --git a/client/src/app/+admin/blacklist/blacklist-list/blacklist-list.component.ts b/client/src/app/+admin/blacklist/blacklist-list/blacklist-list.component.ts deleted file mode 100644 index b308054ed..000000000 --- a/client/src/app/+admin/blacklist/blacklist-list/blacklist-list.component.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Component, OnInit } from '@angular/core' -import { SortMeta } from 'primeng/components/common/sortmeta' - -import { NotificationsService } from 'angular2-notifications' - -import { ConfirmService } from '../../../core' -import { RestTable, RestPagination } from '../../../shared' -import { BlacklistService } from '../shared' -import { BlacklistedVideo } from '../../../../../../shared' - -@Component({ - selector: 'my-blacklist-list', - templateUrl: './blacklist-list.component.html', - styleUrls: [] -}) -export class BlacklistListComponent extends RestTable implements OnInit { - blacklist: BlacklistedVideo[] = [] - totalRecords = 0 - rowsPerPage = 10 - sort: SortMeta = { field: 'id', order: 1 } - pagination: RestPagination = { count: this.rowsPerPage, start: 0 } - - constructor ( - private notificationsService: NotificationsService, - private confirmService: ConfirmService, - private blacklistService: BlacklistService - ) { - super() - } - - ngOnInit () { - this.loadData() - } - - removeVideoFromBlacklist (entry: BlacklistedVideo) { - const confirmMessage = 'Do you really want to remove this video from the blacklist ? It will be available again in the video list.' - - this.confirmService.confirm(confirmMessage, 'Remove').subscribe( - res => { - if (res === false) return - - this.blacklistService.removeVideoFromBlacklist(entry).subscribe( - status => { - this.notificationsService.success('Success', `Video ${entry.name} removed from the blacklist.`) - this.loadData() - }, - - err => this.notificationsService.error('Error', err.message) - ) - } - ) - } - - protected loadData () { - this.blacklistService.getBlacklist(this.pagination, this.sort) - .subscribe( - resultList => { - this.blacklist = resultList.data - this.totalRecords = resultList.total - }, - - err => this.notificationsService.error('Error', err.message) - ) - } -} diff --git a/client/src/app/+admin/blacklist/blacklist-list/index.ts b/client/src/app/+admin/blacklist/blacklist-list/index.ts deleted file mode 100644 index 45f60a2b9..000000000 --- a/client/src/app/+admin/blacklist/blacklist-list/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './blacklist-list.component' diff --git a/client/src/app/+admin/blacklist/blacklist.component.ts b/client/src/app/+admin/blacklist/blacklist.component.ts deleted file mode 100644 index ce8fe4298..000000000 --- a/client/src/app/+admin/blacklist/blacklist.component.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Component } from '@angular/core' - -@Component({ - template: '' -}) - -export class BlacklistComponent { -} diff --git a/client/src/app/+admin/blacklist/blacklist.routes.ts b/client/src/app/+admin/blacklist/blacklist.routes.ts deleted file mode 100644 index 780347ca8..000000000 --- a/client/src/app/+admin/blacklist/blacklist.routes.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Routes } from '@angular/router' - -import { BlacklistComponent } from './blacklist.component' -import { BlacklistListComponent } from './blacklist-list' - -export const BlacklistRoutes: Routes = [ - { - path: 'blacklist', - component: BlacklistComponent, - children: [ - { - path: '', - redirectTo: 'list', - pathMatch: 'full' - }, - { - path: 'list', - component: BlacklistListComponent, - data: { - meta: { - title: 'Blacklisted videos' - } - } - } - ] - } -] diff --git a/client/src/app/+admin/blacklist/index.ts b/client/src/app/+admin/blacklist/index.ts deleted file mode 100644 index 675dc1263..000000000 --- a/client/src/app/+admin/blacklist/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './shared' -export * from './blacklist-list' -export * from './blacklist.component' -export * from './blacklist.routes' diff --git a/client/src/app/+admin/blacklist/shared/blacklist.service.ts b/client/src/app/+admin/blacklist/shared/blacklist.service.ts deleted file mode 100644 index ee2bf82e9..000000000 --- a/client/src/app/+admin/blacklist/shared/blacklist.service.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Injectable } from '@angular/core' -import { HttpClient, HttpParams } from '@angular/common/http' -import { Observable } from 'rxjs/Observable' -import 'rxjs/add/operator/catch' -import 'rxjs/add/operator/map' - -import { SortMeta } from 'primeng/components/common/sortmeta' - -import { RestExtractor, RestPagination, RestService } from '../../../shared' -import { Utils } from '../../../shared' -import { BlacklistedVideo, ResultList } from '../../../../../../shared' - -@Injectable() -export class BlacklistService { - private static BASE_BLACKLISTS_URL = API_URL + '/api/v1/blacklist/' - - constructor ( - private authHttp: HttpClient, - private restService: RestService, - private restExtractor: RestExtractor - ) {} - - getBlacklist (pagination: RestPagination, sort: SortMeta): Observable> { - let params = new HttpParams() - params = this.restService.addRestGetParams(params, pagination, sort) - - return this.authHttp.get>(BlacklistService.BASE_BLACKLISTS_URL, { params }) - .map(res => this.restExtractor.convertResultListDateToHuman(res)) - .map(res => this.restExtractor.applyToResultListData(res, this.formatBlacklistedVideo.bind(this))) - .catch(res => this.restExtractor.handleError(res)) - } - - removeVideoFromBlacklist (entry: BlacklistedVideo) { - return this.authHttp.delete(BlacklistService.BASE_BLACKLISTS_URL + entry.id) - .map(this.restExtractor.extractDataBool) - .catch(res => this.restExtractor.handleError(res)) - } - - private formatBlacklistedVideo (blacklistedVideo: BlacklistedVideo) { - return Object.assign(blacklistedVideo, { - createdAt: Utils.dateToHuman(blacklistedVideo.createdAt) - }) - } -} diff --git a/client/src/app/+admin/blacklist/shared/index.ts b/client/src/app/+admin/blacklist/shared/index.ts deleted file mode 100644 index ad22e2d51..000000000 --- a/client/src/app/+admin/blacklist/shared/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './blacklist.service' diff --git a/client/src/app/+admin/video-blacklist/index.ts b/client/src/app/+admin/video-blacklist/index.ts new file mode 100644 index 000000000..a5451e2e1 --- /dev/null +++ b/client/src/app/+admin/video-blacklist/index.ts @@ -0,0 +1,3 @@ +export * from './video-blacklist-list' +export * from './video-blacklist.component' +export * from './video-blacklist.routes' diff --git a/client/src/app/+admin/video-blacklist/video-blacklist-list/index.ts b/client/src/app/+admin/video-blacklist/video-blacklist-list/index.ts new file mode 100644 index 000000000..4daf64187 --- /dev/null +++ b/client/src/app/+admin/video-blacklist/video-blacklist-list/index.ts @@ -0,0 +1 @@ +export * from './video-blacklist-list.component' diff --git a/client/src/app/+admin/video-blacklist/video-blacklist-list/video-blacklist-list.component.html b/client/src/app/+admin/video-blacklist/video-blacklist-list/video-blacklist-list.component.html new file mode 100644 index 000000000..05d116798 --- /dev/null +++ b/client/src/app/+admin/video-blacklist/video-blacklist-list/video-blacklist-list.component.html @@ -0,0 +1,26 @@ +
+
+

Blacklisted videos

+ + + + + + + + + + + + + + + + + + +
+
diff --git a/client/src/app/+admin/video-blacklist/video-blacklist-list/video-blacklist-list.component.ts b/client/src/app/+admin/video-blacklist/video-blacklist-list/video-blacklist-list.component.ts new file mode 100644 index 000000000..56024b247 --- /dev/null +++ b/client/src/app/+admin/video-blacklist/video-blacklist-list/video-blacklist-list.component.ts @@ -0,0 +1,64 @@ +import { Component, OnInit } from '@angular/core' +import { SortMeta } from 'primeng/components/common/sortmeta' + +import { NotificationsService } from 'angular2-notifications' + +import { ConfirmService } from '../../../core' +import { VideoBlacklistService, RestTable, RestPagination } from '../../../shared' +import { BlacklistedVideo } from '../../../../../../shared' + +@Component({ + selector: 'my-video-blacklist-list', + templateUrl: './video-blacklist-list.component.html', + styleUrls: [] +}) +export class VideoBlacklistListComponent extends RestTable implements OnInit { + blacklist: BlacklistedVideo[] = [] + totalRecords = 0 + rowsPerPage = 10 + sort: SortMeta = { field: 'id', order: 1 } + pagination: RestPagination = { count: this.rowsPerPage, start: 0 } + + constructor ( + private notificationsService: NotificationsService, + private confirmService: ConfirmService, + private videoBlacklistService: VideoBlacklistService + ) { + super() + } + + ngOnInit () { + this.loadData() + } + + removeVideoFromBlacklist (entry: BlacklistedVideo) { + const confirmMessage = 'Do you really want to remove this video from the blacklist ? It will be available again in the video list.' + + this.confirmService.confirm(confirmMessage, 'Remove').subscribe( + res => { + if (res === false) return + + this.videoBlacklistService.removeVideoFromBlacklist(entry.videoId).subscribe( + status => { + this.notificationsService.success('Success', `Video ${entry.name} removed from the blacklist.`) + this.loadData() + }, + + err => this.notificationsService.error('Error', err.message) + ) + } + ) + } + + protected loadData () { + this.videoBlacklistService.listBlacklist(this.pagination, this.sort) + .subscribe( + resultList => { + this.blacklist = resultList.data + this.totalRecords = resultList.total + }, + + err => this.notificationsService.error('Error', err.message) + ) + } +} diff --git a/client/src/app/+admin/video-blacklist/video-blacklist.component.ts b/client/src/app/+admin/video-blacklist/video-blacklist.component.ts new file mode 100644 index 000000000..24b8c98f8 --- /dev/null +++ b/client/src/app/+admin/video-blacklist/video-blacklist.component.ts @@ -0,0 +1,7 @@ +import { Component } from '@angular/core' + +@Component({ + template: '' +}) +export class VideoBlacklistComponent { +} diff --git a/client/src/app/+admin/video-blacklist/video-blacklist.routes.ts b/client/src/app/+admin/video-blacklist/video-blacklist.routes.ts new file mode 100644 index 000000000..682b6f8bd --- /dev/null +++ b/client/src/app/+admin/video-blacklist/video-blacklist.routes.ts @@ -0,0 +1,27 @@ +import { Routes } from '@angular/router' + +import { VideoBlacklistComponent } from './video-blacklist.component' +import { VideoBlacklistListComponent } from './video-blacklist-list' + +export const VideoBlacklistRoutes: Routes = [ + { + path: 'video-blacklist', + component: VideoBlacklistComponent, + children: [ + { + path: '', + redirectTo: 'list', + pathMatch: 'full' + }, + { + path: 'list', + component: VideoBlacklistListComponent, + data: { + meta: { + title: 'Blacklisted videos' + } + } + } + ] + } +] diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts index 68719f73d..7d890e72a 100644 --- a/client/src/app/app.component.ts +++ b/client/src/app/app.component.ts @@ -11,7 +11,7 @@ import { UserService } from './shared' }) export class AppComponent implements OnInit { notificationOptions = { - timeOut: 3000, + timeOut: 5000, lastOnBottom: true, clickToClose: true, maxLength: 0, diff --git a/client/src/app/core/menu/menu-admin.component.html b/client/src/app/core/menu/menu-admin.component.html index f512a4e67..edacdee6d 100644 --- a/client/src/app/core/menu/menu-admin.component.html +++ b/client/src/app/core/menu/menu-admin.component.html @@ -20,7 +20,7 @@ Video abuses - + Video blacklist diff --git a/client/src/app/shared/index.ts b/client/src/app/shared/index.ts index 212645c51..79bf5ef43 100644 --- a/client/src/app/shared/index.ts +++ b/client/src/app/shared/index.ts @@ -4,5 +4,6 @@ export * from './rest' export * from './search' export * from './users' export * from './video-abuse' +export * from './video-blacklist' export * from './shared.module' export * from './utils' diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts index 56da62fc4..47f651590 100644 --- a/client/src/app/shared/shared.module.ts +++ b/client/src/app/shared/shared.module.ts @@ -18,6 +18,7 @@ import { RestExtractor, RestService } from './rest' import { SearchComponent, SearchService } from './search' import { UserService } from './users' import { VideoAbuseService } from './video-abuse' +import { VideoBlacklistService } from './video-blacklist' @NgModule({ imports: [ @@ -67,6 +68,7 @@ import { VideoAbuseService } from './video-abuse' RestService, SearchService, VideoAbuseService, + VideoBlacklistService, UserService ] }) diff --git a/client/src/app/shared/video-blacklist/index.ts b/client/src/app/shared/video-blacklist/index.ts new file mode 100644 index 000000000..bfb026441 --- /dev/null +++ b/client/src/app/shared/video-blacklist/index.ts @@ -0,0 +1 @@ +export * from './video-blacklist.service' diff --git a/client/src/app/shared/video-blacklist/video-blacklist.service.ts b/client/src/app/shared/video-blacklist/video-blacklist.service.ts new file mode 100644 index 000000000..17373d52e --- /dev/null +++ b/client/src/app/shared/video-blacklist/video-blacklist.service.ts @@ -0,0 +1,50 @@ +import { Injectable } from '@angular/core' +import { HttpClient, HttpParams } from '@angular/common/http' +import { Observable } from 'rxjs/Observable' +import 'rxjs/add/operator/catch' +import 'rxjs/add/operator/map' + +import { SortMeta } from 'primeng/components/common/sortmeta' + +import { RestExtractor, RestPagination, RestService } from '../rest' +import { Utils } from '../utils' +import { BlacklistedVideo, ResultList } from '../../../../../shared' + +@Injectable() +export class VideoBlacklistService { + private static BASE_VIDEOS_URL = API_URL + '/api/v1/videos/' + + constructor ( + private authHttp: HttpClient, + private restService: RestService, + private restExtractor: RestExtractor + ) {} + + listBlacklist (pagination: RestPagination, sort: SortMeta): Observable> { + let params = new HttpParams() + params = this.restService.addRestGetParams(params, pagination, sort) + + return this.authHttp.get>(VideoBlacklistService.BASE_VIDEOS_URL + 'blacklist', { params }) + .map(res => this.restExtractor.convertResultListDateToHuman(res)) + .map(res => this.restExtractor.applyToResultListData(res, this.formatBlacklistedVideo.bind(this))) + .catch(res => this.restExtractor.handleError(res)) + } + + removeVideoFromBlacklist (videoId: number) { + return this.authHttp.delete(VideoBlacklistService.BASE_VIDEOS_URL + videoId + '/blacklist') + .map(this.restExtractor.extractDataBool) + .catch(res => this.restExtractor.handleError(res)) + } + + blacklistVideo (videoId: number) { + return this.authHttp.post(VideoBlacklistService.BASE_VIDEOS_URL + videoId + '/blacklist', {}) + .map(this.restExtractor.extractDataBool) + .catch(res => this.restExtractor.handleError(res)) + } + + private formatBlacklistedVideo (blacklistedVideo: BlacklistedVideo) { + return Object.assign(blacklistedVideo, { + createdAt: Utils.dateToHuman(blacklistedVideo.createdAt) + }) + } +} diff --git a/client/src/app/videos/+video-watch/video-watch.component.ts b/client/src/app/videos/+video-watch/video-watch.component.ts index 874dd5997..bd98e877c 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.ts +++ b/client/src/app/videos/+video-watch/video-watch.component.ts @@ -14,7 +14,7 @@ import { VideoMagnetComponent } from './video-magnet.component' import { VideoShareComponent } from './video-share.component' import { VideoReportComponent } from './video-report.component' import { Video, VideoService } from '../shared' -import { WebTorrentService } from './webtorrent.service' +import { VideoBlacklistService } from '../../shared' import { UserVideoRateType, VideoRateType } from '../../../../../shared' @Component({ @@ -45,6 +45,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { private route: ActivatedRoute, private router: Router, private videoService: VideoService, + private videoBlacklistService: VideoBlacklistService, private confirmService: ConfirmService, private metaService: MetaService, private authService: AuthService, @@ -137,15 +138,15 @@ export class VideoWatchComponent implements OnInit, OnDestroy { res => { if (res === false) return - this.videoService.blacklistVideo(this.video.id) - .subscribe( - status => { - this.notificationsService.success('Success', `Video ${this.video.name} had been blacklisted.`) - this.router.navigate(['/videos/list']) - }, + this.videoBlacklistService.blacklistVideo(this.video.id) + .subscribe( + status => { + this.notificationsService.success('Success', `Video ${this.video.name} had been blacklisted.`) + this.router.navigate(['/videos/list']) + }, - error => this.notificationsService.error('Error', error.text) - ) + error => this.notificationsService.error('Error', error.text) + ) } ) } diff --git a/client/src/app/videos/shared/video.service.ts b/client/src/app/videos/shared/video.service.ts index 037c20416..fe7f9108d 100644 --- a/client/src/app/videos/shared/video.service.ts +++ b/client/src/app/videos/shared/video.service.ts @@ -122,12 +122,6 @@ export class VideoService { .catch(res => this.restExtractor.handleError(res)) } - blacklistVideo (id: number) { - return this.authHttp.post(VideoService.BASE_VIDEO_URL + id + '/blacklist', {}) - .map(this.restExtractor.extractDataBool) - .catch(res => this.restExtractor.handleError(res)) - } - private videoPaginationToRestPagination (videoPagination: VideoPagination) { const start: number = (videoPagination.currentPage - 1) * videoPagination.itemsPerPage const count: number = videoPagination.itemsPerPage -- cgit v1.2.3