mirror of https://github.com/Chocobozzz/PeerTube
Video support field inherits channel support field
parent
407eab9c95
commit
74af5145f2
|
@ -28,7 +28,10 @@
|
|||
|
||||
<div class="form-group">
|
||||
<label for="support">Support</label>
|
||||
<my-help helpType="markdownEnhanced" preHtml="Short text to tell people how they can support your channel (membership platform...)."></my-help>
|
||||
<my-help
|
||||
helpType="markdownEnhanced" preHtml="Short text to tell people how they can support your channel (membership platform...).<br /><br />
|
||||
When you will upload a video in this channel, the video support field will be automatically filled by this text."
|
||||
></my-help>
|
||||
<my-markdown-textarea
|
||||
id="support" formControlName="support" textareaWidth="500px" [previewColumn]="true" markdownType="enhanced"
|
||||
[classes]="{ 'input-error': formErrors['support'] }"
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
.previews {
|
||||
max-height: 150px;
|
||||
overflow-y: auto;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
/deep/ {
|
||||
|
|
|
@ -17,7 +17,7 @@ function getParameterByName (name: string, url: string) {
|
|||
return decodeURIComponent(results[2].replace(/\+/g, ' '))
|
||||
}
|
||||
|
||||
function populateAsyncUserVideoChannels (authService: AuthService, channel: any[]) {
|
||||
function populateAsyncUserVideoChannels (authService: AuthService, channel: { id: number, label: string, support: string }[]) {
|
||||
return new Promise(res => {
|
||||
authService.userInformationLoaded
|
||||
.subscribe(
|
||||
|
@ -28,7 +28,7 @@ function populateAsyncUserVideoChannels (authService: AuthService, channel: any[
|
|||
const videoChannels = user.videoChannels
|
||||
if (Array.isArray(videoChannels) === false) return
|
||||
|
||||
videoChannels.forEach(c => channel.push({ id: c.id, label: c.displayName }))
|
||||
videoChannels.forEach(c => channel.push({ id: c.id, label: c.displayName, support: c.support }))
|
||||
|
||||
return res()
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import {
|
|||
VIDEO_TAGS
|
||||
} from '../../../shared/forms/form-validators/video'
|
||||
import { VideoEdit } from '../../../shared/video/video-edit.model'
|
||||
import { map } from 'rxjs/operators'
|
||||
|
||||
@Component({
|
||||
selector: 'my-video-edit',
|
||||
|
@ -28,7 +29,7 @@ export class VideoEditComponent implements OnInit {
|
|||
@Input() formErrors: { [ id: string ]: string } = {}
|
||||
@Input() validationMessages: ValidatorMessage = {}
|
||||
@Input() videoPrivacies = []
|
||||
@Input() userVideoChannels = []
|
||||
@Input() userVideoChannels: { id: number, label: string, support: string }[] = []
|
||||
|
||||
videoCategories = []
|
||||
videoLicences = []
|
||||
|
@ -84,6 +85,37 @@ export class VideoEditComponent implements OnInit {
|
|||
this.form.addControl('thumbnailfile', new FormControl(''))
|
||||
this.form.addControl('previewfile', new FormControl(''))
|
||||
this.form.addControl('support', new FormControl('', VIDEO_SUPPORT.VALIDATORS))
|
||||
|
||||
// We will update the "support" field depending on the channel
|
||||
this.form.controls['channelId']
|
||||
.valueChanges
|
||||
.pipe(map(res => parseInt(res.toString(), 10)))
|
||||
.subscribe(
|
||||
newChannelId => {
|
||||
const oldChannelId = parseInt(this.form.value['channelId'], 10)
|
||||
const currentSupport = this.form.value['support']
|
||||
|
||||
// Not initialized yet
|
||||
if (isNaN(newChannelId)) return
|
||||
const newChannel = this.userVideoChannels.find(c => c.id === newChannelId)
|
||||
|
||||
// First time we set the channel?
|
||||
if (isNaN(oldChannelId)) return this.updateSupportField(newChannel.support)
|
||||
const oldChannel = this.userVideoChannels.find(c => c.id === oldChannelId)
|
||||
|
||||
if (!newChannel || !oldChannel) {
|
||||
console.error('Cannot find new or old channel.')
|
||||
return
|
||||
}
|
||||
|
||||
// If the current support text is not the same than the old channel, the user updated it.
|
||||
// We don't want the user to lose his text, so stop here
|
||||
if (currentSupport && currentSupport !== oldChannel.support) return
|
||||
|
||||
// Update the support text with our new channel
|
||||
this.updateSupportField(newChannel.support)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
ngOnInit () {
|
||||
|
@ -93,4 +125,8 @@ export class VideoEditComponent implements OnInit {
|
|||
this.videoLicences = this.serverService.getVideoLicences()
|
||||
this.videoLanguages = this.serverService.getVideoLanguages()
|
||||
}
|
||||
|
||||
private updateSupportField (support: string) {
|
||||
return this.form.patchValue({ support: support || '' })
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ export class VideoAddComponent extends FormReactive implements OnInit, OnDestroy
|
|||
formErrors: { [ id: string ]: string } = {}
|
||||
validationMessages: ValidatorMessage = {}
|
||||
|
||||
userVideoChannels = []
|
||||
userVideoChannels: { id: number, label: string, support: string }[] = []
|
||||
userVideoQuotaUsed = 0
|
||||
videoPrivacies = []
|
||||
firstStepPrivacyId = 0
|
||||
|
|
|
@ -66,7 +66,7 @@ export class VideoUpdateComponent extends FormReactive implements OnInit {
|
|||
.listAccountVideoChannels(video.account)
|
||||
.pipe(
|
||||
map(result => result.data),
|
||||
map(videoChannels => videoChannels.map(c => ({ id: c.id, label: c.displayName }))),
|
||||
map(videoChannels => videoChannels.map(c => ({ id: c.id, label: c.displayName, support: c.support }))),
|
||||
map(videoChannels => ({ video, videoChannels }))
|
||||
)
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue