]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/+videos/video-list/video-user-subscriptions.component.ts
allow private syndication feeds via a user feedToken
[github/Chocobozzz/PeerTube.git] / client / src / app / +videos / video-list / video-user-subscriptions.component.ts
index 41ad9b27791d082012ae1fedef72cbc74d42c4ce..10031d6cc26d7c3e6f36fbaf4ca760a3136ef46b 100644 (file)
@@ -6,8 +6,9 @@ import { immutableAssign } from '@app/helpers'
 import { VideoService } from '@app/shared/shared-main'
 import { UserSubscriptionService } from '@app/shared/shared-user-subscription'
 import { AbstractVideoList, OwnerDisplayType } from '@app/shared/shared-video-miniature'
-import { I18n } from '@ngx-translate/i18n-polyfill'
-import { VideoSortField } from '@shared/models'
+import { VideoSortField, FeedFormat } from '@shared/models'
+import { copyToClipboard } from '../../../root-helpers/utils'
+import { environment } from '../../../environments/environment'
 
 @Component({
   selector: 'my-videos-user-subscriptions',
@@ -21,7 +22,6 @@ export class VideoUserSubscriptionsComponent extends AbstractVideoList implement
   groupByDate = true
 
   constructor (
-    protected i18n: I18n,
     protected router: Router,
     protected serverService: ServerService,
     protected route: ActivatedRoute,
@@ -31,21 +31,36 @@ export class VideoUserSubscriptionsComponent extends AbstractVideoList implement
     protected screenService: ScreenService,
     protected storageService: LocalStorageService,
     private userSubscription: UserSubscriptionService,
-    private videoService: VideoService,
-    private hooks: HooksService
+    private hooks: HooksService,
+    private videoService: VideoService
   ) {
     super()
 
-    this.titlePage = i18n('Videos from your subscriptions')
+    this.titlePage = $localize`Videos from your subscriptions`
+
     this.actions.push({
-      routerLink: '/my-account/subscriptions',
-      label: i18n('Subscriptions'),
+      routerLink: '/my-library/subscriptions',
+      label: $localize`Subscriptions`,
       iconName: 'cog'
     })
   }
 
   ngOnInit () {
     super.ngOnInit()
+
+    const user = this.authService.getUser()
+    let feedUrl = environment.embedUrl
+    this.videoService.getVideoSubscriptionFeedUrls(user.account.id)
+                     .then((feeds: any) => feedUrl = feedUrl + feeds.find((f: any) => f.format === FeedFormat.RSS).url)
+    this.actions.unshift({
+      label: $localize`Feed`,
+      iconName: 'syndication',
+      justIcon: true,
+      click: () => {
+        copyToClipboard(feedUrl)
+        this.activateCopiedMessage()
+      }
+    })
   }
 
   ngOnDestroy () {
@@ -72,4 +87,8 @@ export class VideoUserSubscriptionsComponent extends AbstractVideoList implement
   generateSyndicationList () {
     // not implemented yet
   }
+
+  activateCopiedMessage () {
+    this.notifier.success($localize`Feed URL copied`)
+  }
 }