diff options
author | Chocobozzz <me@florianbigard.com> | 2018-08-21 16:18:59 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-08-27 09:41:54 +0200 |
commit | 22a16e36f6526887ed8f5e5d3c9f9e5da0b4a8cd (patch) | |
tree | 93c53e0619f966bd9ff1bb698c411277a9447a41 /client/src/app/videos | |
parent | 99492dbc0d87ef54d0dab7d8d44f8d0de5722bdd (diff) | |
download | PeerTube-22a16e36f6526887ed8f5e5d3c9f9e5da0b4a8cd.tar.gz PeerTube-22a16e36f6526887ed8f5e5d3c9f9e5da0b4a8cd.tar.zst PeerTube-22a16e36f6526887ed8f5e5d3c9f9e5da0b4a8cd.zip |
Add local user subscriptions
Diffstat (limited to 'client/src/app/videos')
5 files changed, 87 insertions, 15 deletions
diff --git a/client/src/app/videos/+video-watch/video-watch.component.html b/client/src/app/videos/+video-watch/video-watch.component.html index c275258ef..8a49e3566 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.html +++ b/client/src/app/videos/+video-watch/video-watch.component.html | |||
@@ -42,16 +42,17 @@ | |||
42 | 42 | ||
43 | <img [src]="video.videoChannelAvatarUrl" alt="Video channel avatar" /> | 43 | <img [src]="video.videoChannelAvatarUrl" alt="Video channel avatar" /> |
44 | </a> | 44 | </a> |
45 | <!-- Here will be the subscribe button --> | 45 | |
46 | <my-subscribe-button [videoChannel]="video.channel"></my-subscribe-button> | ||
46 | </div> | 47 | </div> |
47 | 48 | ||
48 | <div class="video-info-by"> | 49 | <div class="video-info-by"> |
49 | <a [routerLink]="[ '/accounts', video.by ]" i18n-title title="Go to the account page"> | 50 | <a [routerLink]="[ '/accounts', video.byAccount ]" i18n-title title="Go to the account page"> |
50 | <span i18n>By {{ video.by }}</span> | 51 | <span i18n>By {{ video.byAccount }}</span> |
51 | <img [src]="video.accountAvatarUrl" alt="Account avatar" /> | 52 | <img [src]="video.accountAvatarUrl" alt="Account avatar" /> |
52 | </a> | 53 | </a> |
53 | 54 | ||
54 | <my-help helpType="custom" i18n-customHtml customHtml="You can subscribe to this account via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@{{video.account.name}}@{{video.account.host}}</strong> and subscribe there. Subscription as a PeerTube user is being worked on in <a href='https://github.com/Chocobozzz/PeerTube/issues/470'>#470</a>."></my-help> | 55 | <my-help helpType="custom" i18n-customHtml customHtml="You can subscribe to this account via any ActivityPub-capable fediverse instance. For instance with Mastodon or Pleroma you can type in the search box <strong>@{{video.account.name}}@{{video.account.host}}</strong> and subscribe there."></my-help> |
55 | </div> | 56 | </div> |
56 | </div> | 57 | </div> |
57 | 58 | ||
diff --git a/client/src/app/videos/+video-watch/video-watch.component.scss b/client/src/app/videos/+video-watch/video-watch.component.scss index 1354de32e..5bf2f485a 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.scss +++ b/client/src/app/videos/+video-watch/video-watch.component.scss | |||
@@ -125,6 +125,14 @@ | |||
125 | margin: -2px 2px 0 5px; | 125 | margin: -2px 2px 0 5px; |
126 | } | 126 | } |
127 | } | 127 | } |
128 | |||
129 | my-subscribe-button { | ||
130 | /deep/ span[role=button] { | ||
131 | font-size: 13px !important; | ||
132 | } | ||
133 | |||
134 | margin-left: 5px; | ||
135 | } | ||
128 | } | 136 | } |
129 | 137 | ||
130 | .video-info-by { | 138 | .video-info-by { |
@@ -369,7 +377,10 @@ | |||
369 | 377 | ||
370 | .video-miniature-information { | 378 | .video-miniature-information { |
371 | flex-grow: 1; | 379 | flex-grow: 1; |
372 | margin-left: 10px; | 380 | } |
381 | |||
382 | .video-thumbnail { | ||
383 | margin-right: 10px | ||
373 | } | 384 | } |
374 | } | 385 | } |
375 | } | 386 | } |
@@ -502,10 +513,6 @@ | |||
502 | .other-videos { | 513 | .other-videos { |
503 | /deep/ .video-miniature { | 514 | /deep/ .video-miniature { |
504 | flex-direction: column; | 515 | flex-direction: column; |
505 | |||
506 | .video-miniature-information { | ||
507 | margin-left: 0 !important; | ||
508 | } | ||
509 | } | 516 | } |
510 | } | 517 | } |
511 | 518 | ||
diff --git a/client/src/app/videos/video-list/video-user-subscriptions.component.ts b/client/src/app/videos/video-list/video-user-subscriptions.component.ts new file mode 100644 index 000000000..6e8959c54 --- /dev/null +++ b/client/src/app/videos/video-list/video-user-subscriptions.component.ts | |||
@@ -0,0 +1,57 @@ | |||
1 | import { Component, OnDestroy, OnInit } from '@angular/core' | ||
2 | import { ActivatedRoute, Router } from '@angular/router' | ||
3 | import { immutableAssign } from '@app/shared/misc/utils' | ||
4 | import { Location } from '@angular/common' | ||
5 | import { NotificationsService } from 'angular2-notifications' | ||
6 | import { AuthService } from '../../core/auth' | ||
7 | import { AbstractVideoList } from '../../shared/video/abstract-video-list' | ||
8 | import { VideoSortField } from '../../shared/video/sort-field.type' | ||
9 | import { VideoService } from '../../shared/video/video.service' | ||
10 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
11 | import { ScreenService } from '@app/shared/misc/screen.service' | ||
12 | import { OwnerDisplayType } from '@app/shared/video/video-miniature.component' | ||
13 | |||
14 | @Component({ | ||
15 | selector: 'my-videos-user-subscriptions', | ||
16 | styleUrls: [ '../../shared/video/abstract-video-list.scss' ], | ||
17 | templateUrl: '../../shared/video/abstract-video-list.html' | ||
18 | }) | ||
19 | export class VideoUserSubscriptionsComponent extends AbstractVideoList implements OnInit, OnDestroy { | ||
20 | titlePage: string | ||
21 | currentRoute = '/videos/subscriptions' | ||
22 | sort = '-publishedAt' as VideoSortField | ||
23 | ownerDisplayType: OwnerDisplayType = 'auto' | ||
24 | |||
25 | constructor ( | ||
26 | protected router: Router, | ||
27 | protected route: ActivatedRoute, | ||
28 | protected notificationsService: NotificationsService, | ||
29 | protected authService: AuthService, | ||
30 | protected location: Location, | ||
31 | protected i18n: I18n, | ||
32 | protected screenService: ScreenService, | ||
33 | private videoService: VideoService | ||
34 | ) { | ||
35 | super() | ||
36 | |||
37 | this.titlePage = i18n('Videos from your subscriptions') | ||
38 | } | ||
39 | |||
40 | ngOnInit () { | ||
41 | super.ngOnInit() | ||
42 | } | ||
43 | |||
44 | ngOnDestroy () { | ||
45 | super.ngOnDestroy() | ||
46 | } | ||
47 | |||
48 | getVideosObservable (page: number) { | ||
49 | const newPagination = immutableAssign(this.pagination, { currentPage: page }) | ||
50 | |||
51 | return this.videoService.getUserSubscriptionVideos(newPagination, this.sort) | ||
52 | } | ||
53 | |||
54 | generateSyndicationList () { | ||
55 | // not implemented yet | ||
56 | } | ||
57 | } | ||
diff --git a/client/src/app/videos/videos-routing.module.ts b/client/src/app/videos/videos-routing.module.ts index 538a43c6d..18ed52570 100644 --- a/client/src/app/videos/videos-routing.module.ts +++ b/client/src/app/videos/videos-routing.module.ts | |||
@@ -5,6 +5,7 @@ import { MetaGuard } from '@ngx-meta/core' | |||
5 | import { VideoRecentlyAddedComponent } from './video-list/video-recently-added.component' | 5 | import { VideoRecentlyAddedComponent } from './video-list/video-recently-added.component' |
6 | import { VideoTrendingComponent } from './video-list/video-trending.component' | 6 | import { VideoTrendingComponent } from './video-list/video-trending.component' |
7 | import { VideosComponent } from './videos.component' | 7 | import { VideosComponent } from './videos.component' |
8 | import { VideoUserSubscriptionsComponent } from '@app/videos/video-list/video-user-subscriptions.component' | ||
8 | 9 | ||
9 | const videosRoutes: Routes = [ | 10 | const videosRoutes: Routes = [ |
10 | { | 11 | { |
@@ -13,11 +14,6 @@ const videosRoutes: Routes = [ | |||
13 | canActivateChild: [ MetaGuard ], | 14 | canActivateChild: [ MetaGuard ], |
14 | children: [ | 15 | children: [ |
15 | { | 16 | { |
16 | path: 'list', | ||
17 | pathMatch: 'full', | ||
18 | redirectTo: 'recently-added' | ||
19 | }, | ||
20 | { | ||
21 | path: 'trending', | 17 | path: 'trending', |
22 | component: VideoTrendingComponent, | 18 | component: VideoTrendingComponent, |
23 | data: { | 19 | data: { |
@@ -36,6 +32,15 @@ const videosRoutes: Routes = [ | |||
36 | } | 32 | } |
37 | }, | 33 | }, |
38 | { | 34 | { |
35 | path: 'subscriptions', | ||
36 | component: VideoUserSubscriptionsComponent, | ||
37 | data: { | ||
38 | meta: { | ||
39 | title: 'Subscriptions' | ||
40 | } | ||
41 | } | ||
42 | }, | ||
43 | { | ||
39 | path: 'local', | 44 | path: 'local', |
40 | component: VideoLocalComponent, | 45 | component: VideoLocalComponent, |
41 | data: { | 46 | data: { |
diff --git a/client/src/app/videos/videos.module.ts b/client/src/app/videos/videos.module.ts index c38257e08..3c3877273 100644 --- a/client/src/app/videos/videos.module.ts +++ b/client/src/app/videos/videos.module.ts | |||
@@ -5,6 +5,7 @@ import { VideoRecentlyAddedComponent } from './video-list/video-recently-added.c | |||
5 | import { VideoTrendingComponent } from './video-list/video-trending.component' | 5 | import { VideoTrendingComponent } from './video-list/video-trending.component' |
6 | import { VideosRoutingModule } from './videos-routing.module' | 6 | import { VideosRoutingModule } from './videos-routing.module' |
7 | import { VideosComponent } from './videos.component' | 7 | import { VideosComponent } from './videos.component' |
8 | import { VideoUserSubscriptionsComponent } from '@app/videos/video-list/video-user-subscriptions.component' | ||
8 | 9 | ||
9 | @NgModule({ | 10 | @NgModule({ |
10 | imports: [ | 11 | imports: [ |
@@ -17,7 +18,8 @@ import { VideosComponent } from './videos.component' | |||
17 | 18 | ||
18 | VideoTrendingComponent, | 19 | VideoTrendingComponent, |
19 | VideoRecentlyAddedComponent, | 20 | VideoRecentlyAddedComponent, |
20 | VideoLocalComponent | 21 | VideoLocalComponent, |
22 | VideoUserSubscriptionsComponent | ||
21 | ], | 23 | ], |
22 | 24 | ||
23 | exports: [ | 25 | exports: [ |