import { Component, Input, OnInit } from '@angular/core'
+import { Router } from '@angular/router'
import { AuthService } from '@app/core'
-import { RestExtractor } from '@app/shared/rest'
-import { RedirectService } from '@app/core/routing/redirect.service'
import { UserSubscriptionService } from '@app/shared/user-subscription/user-subscription.service'
import { VideoChannel } from '@app/shared/video-channel/video-channel.model'
import { NotificationsService } from 'angular2-notifications'
export class SubscribeButtonComponent implements OnInit {
@Input() videoChannel: VideoChannel
@Input() displayFollowers = false
+ @Input() size: 'small' | 'normal' = 'normal'
subscribed: boolean
constructor (
private authService: AuthService,
- private restExtractor: RestExtractor,
- private redirectService: RedirectService,
+ private router: Router,
private notificationsService: NotificationsService,
private userSubscriptionService: UserSubscriptionService,
private i18n: I18n
return this.videoChannel.name + '@' + this.videoChannel.host
}
+ get uriAccount () {
+ return this.videoChannel.ownerAccount.name + '@' + this.videoChannel.host
+ }
+
ngOnInit () {
- this.userSubscriptionService.isSubscriptionExists(this.uri)
- .subscribe(
- exists => this.subscribed = exists,
+ if (this.isUserLoggedIn()) {
+ this.userSubscriptionService.isSubscriptionExists(this.uri)
+ .subscribe(
+ res => this.subscribed = res[this.uri],
- err => this.notificationsService.error(this.i18n('Error'), err.message)
- )
+ err => this.notificationsService.error(this.i18n('Error'), err.message)
+ )
+ }
}
subscribe () {
+ if (this.isUserLoggedIn()) {
+ this.localSubscribe()
+ } else {
+ this.gotoLogin()
+ }
+ }
+
+ localSubscribe () {
this.userSubscriptionService.addSubscription(this.uri)
.subscribe(
() => {
}
unsubscribe () {
+ if (this.isUserLoggedIn()) {
+ this.localUnsubscribe()
+ }
+ }
+
+ localUnsubscribe () {
this.userSubscriptionService.deleteSubscription(this.uri)
.subscribe(
() => {
err => this.notificationsService.error(this.i18n('Error'), err.message)
)
}
+
+ isUserLoggedIn () {
+ return this.authService.isLoggedIn()
+ }
+
+ gotoLogin () {
+ this.router.navigate([ '/login' ])
+ }
+
+ rssOpen () {
+ window.open('')
+ }
}