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">
|
<div class="form-group">
|
||||||
<label for="support">Support</label>
|
<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
|
<my-markdown-textarea
|
||||||
id="support" formControlName="support" textareaWidth="500px" [previewColumn]="true" markdownType="enhanced"
|
id="support" formControlName="support" textareaWidth="500px" [previewColumn]="true" markdownType="enhanced"
|
||||||
[classes]="{ 'input-error': formErrors['support'] }"
|
[classes]="{ 'input-error': formErrors['support'] }"
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
.previews {
|
.previews {
|
||||||
max-height: 150px;
|
max-height: 150px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/deep/ {
|
/deep/ {
|
||||||
|
|
|
@ -17,7 +17,7 @@ function getParameterByName (name: string, url: string) {
|
||||||
return decodeURIComponent(results[2].replace(/\+/g, ' '))
|
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 => {
|
return new Promise(res => {
|
||||||
authService.userInformationLoaded
|
authService.userInformationLoaded
|
||||||
.subscribe(
|
.subscribe(
|
||||||
|
@ -28,7 +28,7 @@ function populateAsyncUserVideoChannels (authService: AuthService, channel: any[
|
||||||
const videoChannels = user.videoChannels
|
const videoChannels = user.videoChannels
|
||||||
if (Array.isArray(videoChannels) === false) return
|
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()
|
return res()
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ import {
|
||||||
VIDEO_TAGS
|
VIDEO_TAGS
|
||||||
} from '../../../shared/forms/form-validators/video'
|
} from '../../../shared/forms/form-validators/video'
|
||||||
import { VideoEdit } from '../../../shared/video/video-edit.model'
|
import { VideoEdit } from '../../../shared/video/video-edit.model'
|
||||||
|
import { map } from 'rxjs/operators'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'my-video-edit',
|
selector: 'my-video-edit',
|
||||||
|
@ -28,7 +29,7 @@ export class VideoEditComponent implements OnInit {
|
||||||
@Input() formErrors: { [ id: string ]: string } = {}
|
@Input() formErrors: { [ id: string ]: string } = {}
|
||||||
@Input() validationMessages: ValidatorMessage = {}
|
@Input() validationMessages: ValidatorMessage = {}
|
||||||
@Input() videoPrivacies = []
|
@Input() videoPrivacies = []
|
||||||
@Input() userVideoChannels = []
|
@Input() userVideoChannels: { id: number, label: string, support: string }[] = []
|
||||||
|
|
||||||
videoCategories = []
|
videoCategories = []
|
||||||
videoLicences = []
|
videoLicences = []
|
||||||
|
@ -84,6 +85,37 @@ export class VideoEditComponent implements OnInit {
|
||||||
this.form.addControl('thumbnailfile', new FormControl(''))
|
this.form.addControl('thumbnailfile', new FormControl(''))
|
||||||
this.form.addControl('previewfile', new FormControl(''))
|
this.form.addControl('previewfile', new FormControl(''))
|
||||||
this.form.addControl('support', new FormControl('', VIDEO_SUPPORT.VALIDATORS))
|
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 () {
|
ngOnInit () {
|
||||||
|
@ -93,4 +125,8 @@ export class VideoEditComponent implements OnInit {
|
||||||
this.videoLicences = this.serverService.getVideoLicences()
|
this.videoLicences = this.serverService.getVideoLicences()
|
||||||
this.videoLanguages = this.serverService.getVideoLanguages()
|
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 } = {}
|
formErrors: { [ id: string ]: string } = {}
|
||||||
validationMessages: ValidatorMessage = {}
|
validationMessages: ValidatorMessage = {}
|
||||||
|
|
||||||
userVideoChannels = []
|
userVideoChannels: { id: number, label: string, support: string }[] = []
|
||||||
userVideoQuotaUsed = 0
|
userVideoQuotaUsed = 0
|
||||||
videoPrivacies = []
|
videoPrivacies = []
|
||||||
firstStepPrivacyId = 0
|
firstStepPrivacyId = 0
|
||||||
|
|
|
@ -66,7 +66,7 @@ export class VideoUpdateComponent extends FormReactive implements OnInit {
|
||||||
.listAccountVideoChannels(video.account)
|
.listAccountVideoChannels(video.account)
|
||||||
.pipe(
|
.pipe(
|
||||||
map(result => result.data),
|
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 }))
|
map(videoChannels => ({ video, videoChannels }))
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue