From 7b87d2d5141d0eb48db2a3fd162208d6a79b2035 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 17 Apr 2018 10:56:27 +0200 Subject: Handle sort in rss --- client/src/app/shared/video/abstract-video-list.ts | 8 ++--- client/src/app/shared/video/sort-field.type.ts | 2 +- client/src/app/shared/video/video.service.ts | 39 +++++++++------------- .../+video-watch/comment/video-comment.service.ts | 4 +-- .../comment/video-comments.component.ts | 4 +-- .../app/videos/video-list/video-local.component.ts | 13 ++++---- .../video-list/video-recently-added.component.ts | 8 ++--- .../videos/video-list/video-trending.component.ts | 6 ++-- 8 files changed, 36 insertions(+), 48 deletions(-) (limited to 'client/src/app') diff --git a/client/src/app/shared/video/abstract-video-list.ts b/client/src/app/shared/video/abstract-video-list.ts index c1c07e628..7f2cf2d7e 100644 --- a/client/src/app/shared/video/abstract-video-list.ts +++ b/client/src/app/shared/video/abstract-video-list.ts @@ -9,7 +9,7 @@ import { fromEvent } from 'rxjs/observable/fromEvent' import { Subscription } from 'rxjs/Subscription' import { AuthService } from '../../core/auth' import { ComponentPagination } from '../rest/component-pagination.model' -import { SortField } from './sort-field.type' +import { VideoSortField } from './sort-field.type' import { Video } from './video.model' export abstract class AbstractVideoList implements OnInit, OnDestroy { @@ -23,8 +23,8 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy { itemsPerPage: 10, totalItems: null } - sort: SortField = '-createdAt' - defaultSort: SortField = '-createdAt' + sort: VideoSortField = '-createdAt' + defaultSort: VideoSortField = '-createdAt' syndicationItems = [] loadOnInit = true @@ -154,7 +154,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy { } protected loadRouteParams (routeParams: { [ key: string ]: any }) { - this.sort = routeParams['sort'] as SortField || this.defaultSort + this.sort = routeParams['sort'] as VideoSortField || this.defaultSort if (routeParams['page'] !== undefined) { this.pagination.currentPage = parseInt(routeParams['page'], 10) diff --git a/client/src/app/shared/video/sort-field.type.ts b/client/src/app/shared/video/sort-field.type.ts index 776f360f8..2a3ae4ddd 100644 --- a/client/src/app/shared/video/sort-field.type.ts +++ b/client/src/app/shared/video/sort-field.type.ts @@ -1,4 +1,4 @@ -export type SortField = 'name' | '-name' +export type VideoSortField = 'name' | '-name' | 'duration' | '-duration' | 'createdAt' | '-createdAt' | 'views' | '-views' diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts index 4c19c3765..ef8babd55 100644 --- a/client/src/app/shared/video/video.service.ts +++ b/client/src/app/shared/video/video.service.ts @@ -16,7 +16,7 @@ import { ComponentPagination } from '../rest/component-pagination.model' import { RestExtractor } from '../rest/rest-extractor.service' import { RestService } from '../rest/rest.service' import { UserService } from '../users/user.service' -import { SortField } from './sort-field.type' +import { VideoSortField } from './sort-field.type' import { VideoDetails } from './video-details.model' import { VideoEdit } from './video-edit.model' import { Video } from './video.model' @@ -86,7 +86,7 @@ export class VideoService { .catch(this.restExtractor.handleError) } - getMyVideos (videoPagination: ComponentPagination, sort: SortField): Observable<{ videos: Video[], totalVideos: number}> { + getMyVideos (videoPagination: ComponentPagination, sort: VideoSortField): Observable<{ videos: Video[], totalVideos: number}> { const pagination = this.restService.componentPaginationToRestPagination(videoPagination) let params = new HttpParams() @@ -99,7 +99,7 @@ export class VideoService { getVideos ( videoPagination: ComponentPagination, - sort: SortField, + sort: VideoSortField, filter?: VideoFilter ): Observable<{ videos: Video[], totalVideos: number}> { const pagination = this.restService.componentPaginationToRestPagination(videoPagination) @@ -117,7 +117,7 @@ export class VideoService { .catch((res) => this.restExtractor.handleError(res)) } - buildBaseFeedUrls () { + buildBaseFeedUrls (params: HttpParams) { const feeds = [ { label: 'rss 2.0', @@ -133,43 +133,34 @@ export class VideoService { } ] + if (params && params.keys().length !== 0) { + for (const feed of feeds) { + feed.url += '?' + params.toString() + } + } + return feeds } - getVideoFeedUrls (filter?: VideoFilter) { - let params = this.restService.addRestGetParams(new HttpParams()) - const feeds = this.buildBaseFeedUrls() + getVideoFeedUrls (sort: VideoSortField, filter?: VideoFilter) { + let params = this.restService.addRestGetParams(new HttpParams(), undefined, sort) if (filter) params = params.set('filter', filter) - if (params.keys().length !== 0) { - for (let item of feeds) { - item.url += `?${params.toString()}` - } - } - - return feeds + return this.buildBaseFeedUrls(params) } getAccountFeedUrls (accountId: number) { let params = this.restService.addRestGetParams(new HttpParams()) - const feeds = this.buildBaseFeedUrls() - params = params.set('accountId', accountId.toString()) - if (params.keys().length !== 0) { - for (let item of feeds) { - item.url += `?${params.toString()}` - } - } - - return feeds + return this.buildBaseFeedUrls(params) } searchVideos ( search: string, videoPagination: ComponentPagination, - sort: SortField + sort: VideoSortField ): Observable<{ videos: Video[], totalVideos: number}> { const url = VideoService.BASE_VIDEO_URL + 'search' diff --git a/client/src/app/videos/+video-watch/comment/video-comment.service.ts b/client/src/app/videos/+video-watch/comment/video-comment.service.ts index 470af1230..0bf7696fe 100644 --- a/client/src/app/videos/+video-watch/comment/video-comment.service.ts +++ b/client/src/app/videos/+video-watch/comment/video-comment.service.ts @@ -14,7 +14,7 @@ import { import { environment } from '../../../../environments/environment' import { RestExtractor, RestService } from '../../../shared/rest' import { ComponentPagination } from '../../../shared/rest/component-pagination.model' -import { SortField } from '../../../shared/video/sort-field.type' +import { VideoSortField } from '../../../shared/video/sort-field.type' import { VideoComment } from './video-comment.model' @Injectable() @@ -48,7 +48,7 @@ export class VideoCommentService { getVideoCommentThreads ( videoId: number | string, componentPagination: ComponentPagination, - sort: SortField + sort: VideoSortField ): Observable<{ comments: VideoComment[], totalComments: number}> { const pagination = this.restService.componentPaginationToRestPagination(componentPagination) diff --git a/client/src/app/videos/+video-watch/comment/video-comments.component.ts b/client/src/app/videos/+video-watch/comment/video-comments.component.ts index 711a01ba0..a77a6e9f3 100644 --- a/client/src/app/videos/+video-watch/comment/video-comments.component.ts +++ b/client/src/app/videos/+video-watch/comment/video-comments.component.ts @@ -7,7 +7,7 @@ import { VideoCommentThreadTree } from '../../../../../../shared/models/videos/v import { AuthService } from '../../../core/auth' import { ComponentPagination } from '../../../shared/rest/component-pagination.model' import { User } from '../../../shared/users' -import { SortField } from '../../../shared/video/sort-field.type' +import { VideoSortField } from '../../../shared/video/sort-field.type' import { VideoDetails } from '../../../shared/video/video-details.model' import { VideoComment } from './video-comment.model' import { VideoCommentService } from './video-comment.service' @@ -23,7 +23,7 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy { comments: VideoComment[] = [] highlightedThread: VideoComment - sort: SortField = '-createdAt' + sort: VideoSortField = '-createdAt' componentPagination: ComponentPagination = { currentPage: 1, itemsPerPage: 10, diff --git a/client/src/app/videos/video-list/video-local.component.ts b/client/src/app/videos/video-list/video-local.component.ts index 90eb96afe..de6552875 100644 --- a/client/src/app/videos/video-list/video-local.component.ts +++ b/client/src/app/videos/video-list/video-local.component.ts @@ -3,12 +3,10 @@ import { ActivatedRoute, Router } from '@angular/router' import { immutableAssign } from '@app/shared/misc/utils' import { NotificationsService } from 'angular2-notifications' import { AuthService } from '../../core/auth' -import { PopoverModule } from 'ngx-bootstrap/popover' import { AbstractVideoList } from '../../shared/video/abstract-video-list' -import { SortField } from '../../shared/video/sort-field.type' +import { VideoSortField } from '../../shared/video/sort-field.type' import { VideoService } from '../../shared/video/video.service' -import { FeedFormat } from '../../../../../shared/models/feeds/feed-format.enum' -import * as url from 'url' +import { VideoFilter } from '../../../../../shared/models/videos/video-query.type' @Component({ selector: 'my-videos-local', @@ -18,7 +16,8 @@ import * as url from 'url' export class VideoLocalComponent extends AbstractVideoList implements OnInit, OnDestroy { titlePage = 'Local videos' currentRoute = '/videos/local' - sort = '-createdAt' as SortField + sort = '-createdAt' as VideoSortField + filter: VideoFilter = 'local' constructor (protected router: Router, protected route: ActivatedRoute, @@ -41,10 +40,10 @@ export class VideoLocalComponent extends AbstractVideoList implements OnInit, On getVideosObservable (page: number) { const newPagination = immutableAssign(this.pagination, { currentPage: page }) - return this.videoService.getVideos(newPagination, this.sort, 'local') + return this.videoService.getVideos(newPagination, this.sort, this.filter) } generateSyndicationList () { - this.syndicationItems = this.videoService.getVideoFeedUrls('local') + this.syndicationItems = this.videoService.getVideoFeedUrls(this.sort, this.filter) } } diff --git a/client/src/app/videos/video-list/video-recently-added.component.ts b/client/src/app/videos/video-list/video-recently-added.component.ts index 3b8108b00..cca35d0f5 100644 --- a/client/src/app/videos/video-list/video-recently-added.component.ts +++ b/client/src/app/videos/video-list/video-recently-added.component.ts @@ -4,10 +4,8 @@ import { immutableAssign } from '@app/shared/misc/utils' import { NotificationsService } from 'angular2-notifications' import { AuthService } from '../../core/auth' import { AbstractVideoList } from '../../shared/video/abstract-video-list' -import { SortField } from '../../shared/video/sort-field.type' +import { VideoSortField } from '../../shared/video/sort-field.type' import { VideoService } from '../../shared/video/video.service' -import { FeedFormat } from '../../../../../shared/models/feeds/feed-format.enum' -import * as url from 'url' @Component({ selector: 'my-videos-recently-added', @@ -17,7 +15,7 @@ import * as url from 'url' export class VideoRecentlyAddedComponent extends AbstractVideoList implements OnInit, OnDestroy { titlePage = 'Recently added' currentRoute = '/videos/recently-added' - sort: SortField = '-createdAt' + sort: VideoSortField = '-createdAt' constructor (protected router: Router, protected route: ActivatedRoute, @@ -44,6 +42,6 @@ export class VideoRecentlyAddedComponent extends AbstractVideoList implements On } generateSyndicationList () { - this.syndicationItems = this.videoService.getVideoFeedUrls() + this.syndicationItems = this.videoService.getVideoFeedUrls(this.sort) } } diff --git a/client/src/app/videos/video-list/video-trending.component.ts b/client/src/app/videos/video-list/video-trending.component.ts index 6358ef91f..0c9e28216 100644 --- a/client/src/app/videos/video-list/video-trending.component.ts +++ b/client/src/app/videos/video-list/video-trending.component.ts @@ -4,7 +4,7 @@ import { immutableAssign } from '@app/shared/misc/utils' import { NotificationsService } from 'angular2-notifications' import { AuthService } from '../../core/auth' import { AbstractVideoList } from '../../shared/video/abstract-video-list' -import { SortField } from '../../shared/video/sort-field.type' +import { VideoSortField } from '../../shared/video/sort-field.type' import { VideoService } from '../../shared/video/video.service' @Component({ @@ -15,7 +15,7 @@ import { VideoService } from '../../shared/video/video.service' export class VideoTrendingComponent extends AbstractVideoList implements OnInit, OnDestroy { titlePage = 'Trending' currentRoute = '/videos/trending' - defaultSort: SortField = '-views' + defaultSort: VideoSortField = '-views' constructor (protected router: Router, protected route: ActivatedRoute, @@ -41,6 +41,6 @@ export class VideoTrendingComponent extends AbstractVideoList implements OnInit, } generateSyndicationList () { - this.syndicationItems = this.videoService.getVideoFeedUrls() + this.syndicationItems = this.videoService.getVideoFeedUrls(this.sort) } } -- cgit v1.2.3