import { Subscription } from 'rxjs'
import { HttpErrorResponse } from '@angular/common/http'
-import { Component, OnDestroy, OnInit } from '@angular/core'
-import { ActivatedRoute, Router } from '@angular/router'
-import { AuthService, Notifier, RedirectService, ServerService } from '@app/core'
+import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core'
+import { ActivatedRoute } from '@angular/router'
+import { AuthService, HooksService, Notifier, RedirectService, ServerService } from '@app/core'
import { genericUploadErrorHandler } from '@app/helpers'
import {
VIDEO_CHANNEL_DESCRIPTION_VALIDATOR,
VIDEO_CHANNEL_DISPLAY_NAME_VALIDATOR,
VIDEO_CHANNEL_SUPPORT_VALIDATOR
} from '@app/shared/form-validators/video-channel-validators'
-import { FormValidatorService } from '@app/shared/shared-forms'
+import { FormReactiveService } from '@app/shared/shared-forms'
import { VideoChannel, VideoChannelService } from '@app/shared/shared-main'
import { HTMLServerConfig, VideoChannelUpdate } from '@shared/models'
import { VideoChannelEdit } from './video-channel-edit'
+import { shallowCopy } from '@shared/core-utils'
@Component({
selector: 'my-video-channel-update',
templateUrl: './video-channel-edit.component.html',
styleUrls: [ './video-channel-edit.component.scss' ]
})
-export class VideoChannelUpdateComponent extends VideoChannelEdit implements OnInit, OnDestroy {
+export class VideoChannelUpdateComponent extends VideoChannelEdit implements OnInit, AfterViewInit, OnDestroy {
error: string
videoChannel: VideoChannel
private serverConfig: HTMLServerConfig
constructor (
- protected formValidatorService: FormValidatorService,
+ protected formReactiveService: FormReactiveService,
private authService: AuthService,
private notifier: Notifier,
- private router: Router,
private route: ActivatedRoute,
private videoChannelService: VideoChannelService,
private serverService: ServerService,
- private redirectService: RedirectService
+ private redirectService: RedirectService,
+ private hooks: HooksService
) {
super()
}
this.buildForm({
'display-name': VIDEO_CHANNEL_DISPLAY_NAME_VALIDATOR,
- description: VIDEO_CHANNEL_DESCRIPTION_VALIDATOR,
- support: VIDEO_CHANNEL_SUPPORT_VALIDATOR,
- bulkVideosSupportUpdate: null
+ 'description': VIDEO_CHANNEL_DESCRIPTION_VALIDATOR,
+ 'support': VIDEO_CHANNEL_SUPPORT_VALIDATOR,
+ 'bulkVideosSupportUpdate': null
})
this.paramsSub = this.route.params.subscribe(routeParams => {
next: videoChannelToUpdate => {
this.videoChannel = videoChannelToUpdate
+ this.hooks.runAction('action:video-channel-update.video-channel.loaded', 'video-channel', { videoChannel: this.videoChannel })
+
this.oldSupportField = videoChannelToUpdate.support
this.form.patchValue({
'display-name': videoChannelToUpdate.displayName,
- description: videoChannelToUpdate.description,
- support: videoChannelToUpdate.support
+ 'description': videoChannelToUpdate.description,
+ 'support': videoChannelToUpdate.support
})
},
})
}
+ ngAfterViewInit () {
+ this.hooks.runAction('action:video-channel-update.init', 'video-channel')
+ }
+
ngOnDestroy () {
if (this.paramsSub) this.paramsSub.unsubscribe()
}
this.notifier.success($localize`Video channel ${videoChannelUpdate.displayName} updated.`)
- this.redirectService.redirectToPreviousRoute([ '/c', this.videoChannel.name ])
+ this.redirectService.redirectToPreviousRoute('/c/' + this.videoChannel.name)
},
error: err => {
this.notifier.success($localize`Avatar changed.`)
this.videoChannel.updateAvatar(data.avatars)
+
+ // So my-actor-avatar component detects changes
+ this.videoChannel = shallowCopy(this.videoChannel)
},
error: (err: HttpErrorResponse) => genericUploadErrorHandler({
this.notifier.success($localize`Avatar deleted.`)
this.videoChannel.resetAvatar()
+
+ // So my-actor-avatar component detects changes
+ this.videoChannel = shallowCopy(this.videoChannel)
},
error: err => this.notifier.error(err.message)