+
+import { switchMap } from 'rxjs/operators'
import { Component, OnDestroy, OnInit } from '@angular/core'
import { ActivatedRoute, Router } from '@angular/router'
-import { AuthService, LocalStorageService, Notifier, ScreenService, ServerService, UserService } from '@app/core'
+import { AuthService, LocalStorageService, Notifier, ScopedTokensService, ScreenService, ServerService, UserService } from '@app/core'
import { HooksService } from '@app/core/plugins/hooks.service'
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 { VideoSortField } from '@shared/models'
+import { FeedFormat, VideoSortField } from '@shared/models'
+import { environment } from '../../../environments/environment'
+import { copyToClipboard } from '../../../root-helpers/utils'
@Component({
selector: 'my-videos-user-subscriptions',
protected screenService: ScreenService,
protected storageService: LocalStorageService,
private userSubscription: UserSubscriptionService,
- private hooks: HooksService
+ private hooks: HooksService,
+ private videoService: VideoService,
+ private scopedTokensService: ScopedTokensService
) {
super()
this.titlePage = $localize`Videos from your subscriptions`
+
this.actions.push({
- routerLink: '/my-account/subscriptions',
+ routerLink: '/my-library/subscriptions',
label: $localize`Subscriptions`,
iconName: 'cog'
})
ngOnInit () {
super.ngOnInit()
+
+ const user = this.authService.getUser()
+ let feedUrl = environment.originServerUrl
+
+ this.authService.userInformationLoaded
+ .pipe(switchMap(() => this.scopedTokensService.getScopedTokens()))
+ .subscribe(
+ tokens => {
+ const feeds = this.videoService.getVideoSubscriptionFeedUrls(user.account.id, tokens.feedToken)
+ feedUrl = feedUrl + feeds.find(f => f.format === FeedFormat.RSS).url
+
+ this.actions.unshift({
+ label: $localize`Copy feed URL`,
+ iconName: 'syndication',
+ justIcon: true,
+ href: feedUrl,
+ click: e => {
+ e.preventDefault()
+ copyToClipboard(feedUrl)
+ this.activateCopiedMessage()
+ }
+ })
+ },
+
+ err => {
+ this.notifier.error(err.message)
+ }
+ )
}
ngOnDestroy () {
generateSyndicationList () {
// not implemented yet
}
+
+ activateCopiedMessage () {
+ this.notifier.success($localize`Feed URL copied`)
+ }
}