diff --git a/client/package.json b/client/package.json index caec34e44..8a82a294e 100644 --- a/client/package.json +++ b/client/package.json @@ -61,7 +61,6 @@ "intl": "^1.2.4", "json-loader": "^0.5.4", "ng-router-loader": "^2.0.0", - "ng2-file-upload": "^1.1.4-2", "ngc-webpack": "3.2.2", "ngx-bootstrap": "1.9.1", "ngx-chips": "1.5.3", diff --git a/client/src/app/+admin/friends/friend-add/friend-add.component.ts b/client/src/app/+admin/friends/friend-add/friend-add.component.ts index e0b73dfa3..6580e1b88 100644 --- a/client/src/app/+admin/friends/friend-add/friend-add.component.ts +++ b/client/src/app/+admin/friends/friend-add/friend-add.component.ts @@ -98,7 +98,7 @@ export class FriendAddComponent implements OnInit { setTimeout(() => this.router.navigate([ '/admin/friends/list' ]), 1000) }, - err => this.notificationsService.error('Error', err) + err => this.notificationsService.error('Error', err.message) ) } ) diff --git a/client/src/app/+admin/friends/friend-list/friend-list.component.ts b/client/src/app/+admin/friends/friend-list/friend-list.component.ts index 6a8bd492c..4af39c47e 100644 --- a/client/src/app/+admin/friends/friend-list/friend-list.component.ts +++ b/client/src/app/+admin/friends/friend-list/friend-list.component.ts @@ -40,7 +40,7 @@ export class FriendListComponent implements OnInit { this.loadData() }, - err => this.notificationsService.error('Error', err) + err => this.notificationsService.error('Error', err.message) ) } ) @@ -59,7 +59,7 @@ export class FriendListComponent implements OnInit { this.loadData() }, - err => this.notificationsService.error('Error', err) + err => this.notificationsService.error('Error', err.message) ) } ) @@ -72,7 +72,7 @@ export class FriendListComponent implements OnInit { this.friends = resultList.data }, - err => this.notificationsService.error('Error', err) + err => this.notificationsService.error('Error', err.message) ) } } diff --git a/client/src/app/+admin/request-schedulers/request-schedulers-stats/request-schedulers-stats.component.ts b/client/src/app/+admin/request-schedulers/request-schedulers-stats/request-schedulers-stats.component.ts index 1edeb31fe..1654827ab 100644 --- a/client/src/app/+admin/request-schedulers/request-schedulers-stats/request-schedulers-stats.component.ts +++ b/client/src/app/+admin/request-schedulers/request-schedulers-stats/request-schedulers-stats.component.ts @@ -57,7 +57,7 @@ export class RequestSchedulersStatsComponent implements OnInit, OnDestroy { this.requestService.getStats().subscribe( stats => this.stats = stats, - err => this.notificationsService.error('Error', err) + err => this.notificationsService.error('Error', err.message) ) } diff --git a/client/src/app/+admin/users/user-list/user-list.component.ts b/client/src/app/+admin/users/user-list/user-list.component.ts index c3fa55825..73b5c0ce9 100644 --- a/client/src/app/+admin/users/user-list/user-list.component.ts +++ b/client/src/app/+admin/users/user-list/user-list.component.ts @@ -47,7 +47,7 @@ export class UserListComponent extends RestTable implements OnInit { this.loadData() }, - err => this.notificationsService.error('Error', err) + err => this.notificationsService.error('Error', err.message) ) } ) @@ -65,7 +65,7 @@ export class UserListComponent extends RestTable implements OnInit { this.totalRecords = resultList.total }, - err => this.notificationsService.error('Error', err) + err => this.notificationsService.error('Error', err.message) ) } } diff --git a/client/src/app/+admin/video-abuses/video-abuse-list/video-abuse-list.component.ts b/client/src/app/+admin/video-abuses/video-abuse-list/video-abuse-list.component.ts index 5a0131a81..92de11f0e 100644 --- a/client/src/app/+admin/video-abuses/video-abuse-list/video-abuse-list.component.ts +++ b/client/src/app/+admin/video-abuses/video-abuse-list/video-abuse-list.component.ts @@ -40,7 +40,7 @@ export class VideoAbuseListComponent extends RestTable implements OnInit { this.totalRecords = resultList.total }, - err => this.notificationsService.error('Error', err) + err => this.notificationsService.error('Error', err.message) ) } } diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts index 57bf64f69..ae86bc96f 100644 --- a/client/src/app/app.component.ts +++ b/client/src/app/app.component.ts @@ -31,8 +31,7 @@ export class AppComponent implements OnInit { private authService: AuthService, private configService: ConfigService, private userService: UserService, - private videoService: VideoService, - viewContainerRef: ViewContainerRef + private videoService: VideoService ) {} ngOnInit () { diff --git a/client/src/app/shared/forms/form-validators/video.ts b/client/src/app/shared/forms/form-validators/video.ts index 6542cf8f6..32b1f1c2e 100644 --- a/client/src/app/shared/forms/form-validators/video.ts +++ b/client/src/app/shared/forms/form-validators/video.ts @@ -44,3 +44,10 @@ export const VIDEO_TAGS = { 'maxlength': 'A tag should be less than 10 characters long.' } } + +export const VIDEO_FILE = { + VALIDATORS: [ Validators.required ], + MESSAGES: { + 'required': 'Video file is required.' + } +} diff --git a/client/src/app/shared/rest/rest-extractor.service.ts b/client/src/app/shared/rest/rest-extractor.service.ts index 32dad5c73..1f6222da8 100644 --- a/client/src/app/shared/rest/rest-extractor.service.ts +++ b/client/src/app/shared/rest/rest-extractor.service.ts @@ -40,19 +40,29 @@ export class RestExtractor { handleError (err: HttpErrorResponse) { let errorMessage + console.log(err) + if (err.error instanceof Error) { // A client-side or network error occurred. Handle it accordingly. errorMessage = err.error.message console.error('An error occurred:', errorMessage) } else if (err.status !== undefined) { - // The backend returned an unsuccessful response code. - // The response body may contain clues as to what went wrong, - errorMessage = err.error + const body = err.error + errorMessage = body.error console.error(`Backend returned code ${err.status}, body was: ${errorMessage}`) } else { errorMessage = err } - return Observable.throw(errorMessage) + const errorObj = { + message: errorMessage, + status: undefined + } + + if (err.status) { + errorObj.status = err.status + } + + return Observable.throw(errorObj) } } diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts index 118ce822d..a28ac322d 100644 --- a/client/src/app/shared/shared.module.ts +++ b/client/src/app/shared/shared.module.ts @@ -10,7 +10,6 @@ import { BsDropdownModule } from 'ngx-bootstrap/dropdown' import { ProgressbarModule } from 'ngx-bootstrap/progressbar' import { PaginationModule } from 'ngx-bootstrap/pagination' import { ModalModule } from 'ngx-bootstrap/modal' -import { FileUploadModule } from 'ng2-file-upload/ng2-file-upload' import { DataTableModule, SharedModule as PrimeSharedModule } from 'primeng/primeng' import { AUTH_INTERCEPTOR_PROVIDER } from './auth' @@ -32,8 +31,6 @@ import { VideoAbuseService } from './video-abuse' PaginationModule.forRoot(), ProgressbarModule.forRoot(), - FileUploadModule, - DataTableModule, PrimeSharedModule ], @@ -52,7 +49,6 @@ import { VideoAbuseService } from './video-abuse' HttpClientModule, BsDropdownModule, - FileUploadModule, ModalModule, PaginationModule, ProgressbarModule, diff --git a/client/src/app/videos/shared/video.service.ts b/client/src/app/videos/shared/video.service.ts index b6d2a0666..cfce4cb16 100644 --- a/client/src/app/videos/shared/video.service.ts +++ b/client/src/app/videos/shared/video.service.ts @@ -2,7 +2,7 @@ import { Injectable } from '@angular/core' import { Observable } from 'rxjs/Observable' import 'rxjs/add/operator/catch' import 'rxjs/add/operator/map' -import { HttpClient, HttpParams } from '@angular/common/http' +import { HttpClient, HttpParams, HttpRequest } from '@angular/common/http' import { Search } from '../../shared' import { SortField } from './sort-field.type' @@ -14,13 +14,14 @@ import { import { Video } from './video.model' import { VideoPagination } from './video-pagination.model' import { -UserVideoRate, -VideoRateType, -VideoUpdate, -VideoAbuseCreate, -UserVideoRateUpdate, -Video as VideoServerModel, -ResultList + VideoCreate, + UserVideoRate, + VideoRateType, + VideoUpdate, + VideoAbuseCreate, + UserVideoRateUpdate, + Video as VideoServerModel, + ResultList } from '../../../../../shared' @Injectable() @@ -73,6 +74,14 @@ export class VideoService { .catch(this.restExtractor.handleError) } + // uploadVideo (video: VideoCreate) { + uploadVideo (video: any) { + const req = new HttpRequest('POST', `${VideoService.BASE_VIDEO_URL}/upload`, video, { reportProgress: true }) + + return this.authHttp.request(req) + .catch(this.restExtractor.handleError) + } + getVideos (videoPagination: VideoPagination, sort: SortField) { const pagination = this.videoPaginationToRestPagination(videoPagination) diff --git a/client/src/app/videos/video-edit/video-add.component.html b/client/src/app/videos/video-edit/video-add.component.html index 7ad671ae7..cf8fc2b80 100644 --- a/client/src/app/videos/video-edit/video-add.component.html +++ b/client/src/app/videos/video-edit/video-add.component.html @@ -3,7 +3,7 @@