diff options
author | Chocobozzz <me@florianbigard.com> | 2018-04-17 10:35:08 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-04-17 10:35:08 +0200 |
commit | cc1561f9f7b33d739d66b23bacae23ea49f2fa12 (patch) | |
tree | 4ba9e905eaff4c80e9412b1ccf344c81c8c41ea8 /client/src/app/shared/video | |
parent | e6f627975bebd00d396d11442e582d80856bc6bd (diff) | |
download | PeerTube-cc1561f9f7b33d739d66b23bacae23ea49f2fa12.tar.gz PeerTube-cc1561f9f7b33d739d66b23bacae23ea49f2fa12.tar.zst PeerTube-cc1561f9f7b33d739d66b23bacae23ea49f2fa12.zip |
Simplify client syndications
Diffstat (limited to 'client/src/app/shared/video')
5 files changed, 47 insertions, 44 deletions
diff --git a/client/src/app/shared/video/abstract-video-list.scss b/client/src/app/shared/video/abstract-video-list.scss index b75907dc9..913fcfe22 100644 --- a/client/src/app/shared/video/abstract-video-list.scss +++ b/client/src/app/shared/video/abstract-video-list.scss | |||
@@ -8,9 +8,12 @@ | |||
8 | } | 8 | } |
9 | } | 9 | } |
10 | 10 | ||
11 | .title-page.title-page-single { | ||
12 | margin-right: 5px; | ||
13 | } | ||
14 | |||
11 | my-video-feed { | 15 | my-video-feed { |
12 | display: inline-block; | 16 | display: inline-block; |
13 | margin-left: -45px; | ||
14 | } | 17 | } |
15 | 18 | ||
16 | @media screen and (max-width: 500px) { | 19 | @media screen and (max-width: 500px) { |
diff --git a/client/src/app/shared/video/abstract-video-list.ts b/client/src/app/shared/video/abstract-video-list.ts index 024834dfc..c1c07e628 100644 --- a/client/src/app/shared/video/abstract-video-list.ts +++ b/client/src/app/shared/video/abstract-video-list.ts | |||
@@ -3,7 +3,6 @@ import { ActivatedRoute, Router } from '@angular/router' | |||
3 | import { isInMobileView } from '@app/shared/misc/utils' | 3 | import { isInMobileView } from '@app/shared/misc/utils' |
4 | import { InfiniteScrollerDirective } from '@app/shared/video/infinite-scroller.directive' | 4 | import { InfiniteScrollerDirective } from '@app/shared/video/infinite-scroller.directive' |
5 | import { NotificationsService } from 'angular2-notifications' | 5 | import { NotificationsService } from 'angular2-notifications' |
6 | import { PopoverModule } from 'ngx-bootstrap/popover' | ||
7 | import 'rxjs/add/operator/debounceTime' | 6 | import 'rxjs/add/operator/debounceTime' |
8 | import { Observable } from 'rxjs/Observable' | 7 | import { Observable } from 'rxjs/Observable' |
9 | import { fromEvent } from 'rxjs/observable/fromEvent' | 8 | import { fromEvent } from 'rxjs/observable/fromEvent' |
@@ -12,8 +11,6 @@ import { AuthService } from '../../core/auth' | |||
12 | import { ComponentPagination } from '../rest/component-pagination.model' | 11 | import { ComponentPagination } from '../rest/component-pagination.model' |
13 | import { SortField } from './sort-field.type' | 12 | import { SortField } from './sort-field.type' |
14 | import { Video } from './video.model' | 13 | import { Video } from './video.model' |
15 | import { FeedFormat } from '../../../../../shared' | ||
16 | import { VideoFeedComponent } from '@app/shared/video/video-feed.component' | ||
17 | 14 | ||
18 | export abstract class AbstractVideoList implements OnInit, OnDestroy { | 15 | export abstract class AbstractVideoList implements OnInit, OnDestroy { |
19 | private static LINES_PER_PAGE = 4 | 16 | private static LINES_PER_PAGE = 4 |
@@ -28,7 +25,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy { | |||
28 | } | 25 | } |
29 | sort: SortField = '-createdAt' | 26 | sort: SortField = '-createdAt' |
30 | defaultSort: SortField = '-createdAt' | 27 | defaultSort: SortField = '-createdAt' |
31 | syndicationItems = {} | 28 | syndicationItems = [] |
32 | 29 | ||
33 | loadOnInit = true | 30 | loadOnInit = true |
34 | pageHeight: number | 31 | pageHeight: number |
diff --git a/client/src/app/shared/video/video-feed.component.html b/client/src/app/shared/video/video-feed.component.html index 7733ef221..5ef13e1ed 100644 --- a/client/src/app/shared/video/video-feed.component.html +++ b/client/src/app/shared/video/video-feed.component.html | |||
@@ -1,14 +1,13 @@ | |||
1 | <div class="video-feed"> | 1 | <div class="video-feed"> |
2 | <span *ngIf="(syndicationItems | myObjectLength) >= 1" class="icon icon-syndication" | 2 | <span *ngIf="syndicationItems.length !== 0" class="icon icon-syndication" |
3 | [popover]="feedsList" | 3 | [popover]="feedsList" |
4 | placement="bottom" | 4 | placement="bottom" |
5 | [outsideClick]="true"> | 5 | [outsideClick]="true"> |
6 | </span> | 6 | </span> |
7 | 7 | ||
8 | <ng-template #feedsList> | 8 | <ng-template #feedsList> |
9 | <div *ngFor="let key of syndicationItems | keys"> | 9 | <div *ngFor="let item of syndicationItems"> |
10 | <a [href]="syndicationItems[key]">{{ key }}</a> | 10 | <a [href]="item.url" target="_blank" rel="noopener noreferrer">{{ item.label }}</a> |
11 | </div> | 11 | </div> |
12 | </ng-template> | 12 | </ng-template> |
13 | </div> | 13 | </div> \ No newline at end of file |
14 | \ No newline at end of file | ||
diff --git a/client/src/app/shared/video/video-feed.component.ts b/client/src/app/shared/video/video-feed.component.ts index 41257ca99..6922153c0 100644 --- a/client/src/app/shared/video/video-feed.component.ts +++ b/client/src/app/shared/video/video-feed.component.ts | |||
@@ -1,14 +1,10 @@ | |||
1 | import { Component, Input, OnChanges, SimpleChanges } from '@angular/core' | 1 | import { Component, Input } from '@angular/core' |
2 | 2 | ||
3 | @Component({ | 3 | @Component({ |
4 | selector: 'my-video-feed', | 4 | selector: 'my-video-feed', |
5 | styleUrls: [ './video-feed.component.scss' ], | 5 | styleUrls: [ './video-feed.component.scss' ], |
6 | templateUrl: './video-feed.component.html' | 6 | templateUrl: './video-feed.component.html' |
7 | }) | 7 | }) |
8 | export class VideoFeedComponent implements OnChanges { | 8 | export class VideoFeedComponent { |
9 | @Input() syndicationItems | 9 | @Input() syndicationItems |
10 | |||
11 | ngOnChanges (changes: SimpleChanges) { | ||
12 | this.syndicationItems = changes.syndicationItems.currentValue | ||
13 | } | ||
14 | } | 10 | } |
diff --git a/client/src/app/shared/video/video.service.ts b/client/src/app/shared/video/video.service.ts index 009155410..4c19c3765 100644 --- a/client/src/app/shared/video/video.service.ts +++ b/client/src/app/shared/video/video.service.ts | |||
@@ -117,45 +117,53 @@ export class VideoService { | |||
117 | .catch((res) => this.restExtractor.handleError(res)) | 117 | .catch((res) => this.restExtractor.handleError(res)) |
118 | } | 118 | } |
119 | 119 | ||
120 | baseFeed () { | 120 | buildBaseFeedUrls () { |
121 | const feed = {} | 121 | const feeds = [ |
122 | 122 | { | |
123 | for (let item in FeedFormat) { | 123 | label: 'rss 2.0', |
124 | feed[FeedFormat[item]] = VideoService.BASE_FEEDS_URL + item.toLowerCase() | 124 | url: VideoService.BASE_FEEDS_URL + FeedFormat.RSS.toLowerCase() |
125 | } | 125 | }, |
126 | 126 | { | |
127 | return feed | 127 | label: 'atom 1.0', |
128 | } | 128 | url: VideoService.BASE_FEEDS_URL + FeedFormat.ATOM.toLowerCase() |
129 | 129 | }, | |
130 | getFeed ( | 130 | { |
131 | filter?: VideoFilter | 131 | label: 'json 1.0', |
132 | ) { | 132 | url: VideoService.BASE_FEEDS_URL + FeedFormat.JSON.toLowerCase() |
133 | } | ||
134 | ] | ||
135 | |||
136 | return feeds | ||
137 | } | ||
138 | |||
139 | getVideoFeedUrls (filter?: VideoFilter) { | ||
133 | let params = this.restService.addRestGetParams(new HttpParams()) | 140 | let params = this.restService.addRestGetParams(new HttpParams()) |
134 | const feed = this.baseFeed() | 141 | const feeds = this.buildBaseFeedUrls() |
135 | 142 | ||
136 | if (filter) { | 143 | if (filter) params = params.set('filter', filter) |
137 | params = params.set('filter', filter) | 144 | |
138 | } | 145 | if (params.keys().length !== 0) { |
139 | for (let item in feed) { | 146 | for (let item of feeds) { |
140 | feed[item] = feed[item] + ((params.toString().length === 0) ? '' : '?') + params.toString() | 147 | item.url += `?${params.toString()}` |
148 | } | ||
141 | } | 149 | } |
142 | 150 | ||
143 | return feed | 151 | return feeds |
144 | } | 152 | } |
145 | 153 | ||
146 | getAccountFeed ( | 154 | getAccountFeedUrls (accountId: number) { |
147 | accountId: number, | ||
148 | host?: string | ||
149 | ) { | ||
150 | let params = this.restService.addRestGetParams(new HttpParams()) | 155 | let params = this.restService.addRestGetParams(new HttpParams()) |
151 | const feed = this.baseFeed() | 156 | const feeds = this.buildBaseFeedUrls() |
152 | 157 | ||
153 | params = params.set('accountId', accountId.toString()) | 158 | params = params.set('accountId', accountId.toString()) |
154 | for (let item in feed) { | 159 | |
155 | feed[item] = feed[item] + ((params.toString().length === 0) ? '' : '?') + params.toString() | 160 | if (params.keys().length !== 0) { |
161 | for (let item of feeds) { | ||
162 | item.url += `?${params.toString()}` | ||
163 | } | ||
156 | } | 164 | } |
157 | 165 | ||
158 | return feed | 166 | return feeds |
159 | } | 167 | } |
160 | 168 | ||
161 | searchVideos ( | 169 | searchVideos ( |