diff --git a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts
index 77febf179..4fb828082 100644
--- a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts
+++ b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.ts
@@ -5,9 +5,9 @@ import { AuthService } from '../../../core'
import { FormReactive, User, UserService } from '../../../shared'
import { I18n } from '@ngx-translate/i18n-polyfill'
import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service'
-import { Subject } from 'rxjs'
+import { forkJoin, Subject } from 'rxjs'
import { SelectItem } from 'primeng/api'
-import { switchMap } from 'rxjs/operators'
+import { first } from 'rxjs/operators'
@Component({
selector: 'my-account-video-settings',
@@ -39,30 +39,31 @@ export class MyAccountVideoSettingsComponent extends FormReactive implements OnI
videoLanguages: null
})
- this.serverService.videoLanguagesLoaded
- .pipe(switchMap(() => this.userInformationLoaded))
- .subscribe(() => {
- const languages = this.serverService.getVideoLanguages()
+ forkJoin([
+ this.serverService.videoLanguagesLoaded.pipe(first()),
+ this.userInformationLoaded.pipe(first())
+ ]).subscribe(() => {
+ const languages = this.serverService.getVideoLanguages()
- this.languageItems = [ { label: this.i18n('Unknown language'), value: '_unknown' } ]
- this.languageItems = this.languageItems
- .concat(languages.map(l => ({ label: l.label, value: l.id })))
+ this.languageItems = [ { label: this.i18n('Unknown language'), value: '_unknown' } ]
+ this.languageItems = this.languageItems
+ .concat(languages.map(l => ({ label: l.label, value: l.id })))
- const videoLanguages = this.user.videoLanguages
- ? this.user.videoLanguages
- : this.languageItems.map(l => l.value)
+ const videoLanguages = this.user.videoLanguages
+ ? this.user.videoLanguages
+ : this.languageItems.map(l => l.value)
- this.form.patchValue({
- nsfwPolicy: this.user.nsfwPolicy,
- webTorrentEnabled: this.user.webTorrentEnabled,
- autoPlayVideo: this.user.autoPlayVideo === true,
- videoLanguages
- })
- })
+ this.form.patchValue({
+ nsfwPolicy: this.user.nsfwPolicy,
+ webTorrentEnabled: this.user.webTorrentEnabled,
+ autoPlayVideo: this.user.autoPlayVideo === true,
+ videoLanguages
+ })
+ })
}
updateDetails () {
- const nsfwPolicy = this.form.value['nsfwPolicy']
+ const nsfwPolicy = this.form.value[ 'nsfwPolicy' ]
const webTorrentEnabled = this.form.value['webTorrentEnabled']
const autoPlayVideo = this.form.value['autoPlayVideo']
diff --git a/client/src/app/+my-account/my-account.module.ts b/client/src/app/+my-account/my-account.module.ts
index 571f46de9..6cf1499d3 100644
--- a/client/src/app/+my-account/my-account.module.ts
+++ b/client/src/app/+my-account/my-account.module.ts
@@ -37,7 +37,6 @@ import {
} from '@app/+my-account/my-account-video-playlists/my-account-video-playlist-elements.component'
import { DragDropModule } from '@angular/cdk/drag-drop'
import { MyAccountChangeEmailComponent } from '@app/+my-account/my-account-settings/my-account-change-email'
-import { MultiSelectModule } from 'primeng/multiselect'
import { MyAccountInterfaceSettingsComponent } from '@app/+my-account/my-account-settings/my-account-interface'
@NgModule({
@@ -48,8 +47,7 @@ import { MyAccountInterfaceSettingsComponent } from '@app/+my-account/my-account
SharedModule,
TableModule,
InputSwitchModule,
- DragDropModule,
- MultiSelectModule
+ DragDropModule
],
declarations: [
diff --git a/client/src/app/shared/shared.module.ts b/client/src/app/shared/shared.module.ts
index eb57a2fff..d71f6357b 100644
--- a/client/src/app/shared/shared.module.ts
+++ b/client/src/app/shared/shared.module.ts
@@ -6,10 +6,8 @@ import { RouterModule } from '@angular/router'
import { MarkdownTextareaComponent } from '@app/shared/forms/markdown-textarea.component'
import { HelpComponent } from '@app/shared/misc/help.component'
import { InfiniteScrollerDirective } from '@app/shared/video/infinite-scroller.directive'
-
import { BytesPipe, KeysPipe, NgPipesModule } from 'ngx-pipes'
import { SharedModule as PrimeSharedModule } from 'primeng/components/common/shared'
-
import { AUTH_INTERCEPTOR_PROVIDER } from './auth'
import { ButtonComponent } from './buttons/button.component'
import { DeleteButtonComponent } from './buttons/delete-button.component'
@@ -93,6 +91,7 @@ import { VideoDownloadComponent } from '@app/shared/video/modals/video-download.
import { VideoReportComponent } from '@app/shared/video/modals/video-report.component'
import { ClipboardModule } from 'ngx-clipboard'
import { FollowService } from '@app/shared/instance/follow.service'
+import { MultiSelectModule } from 'primeng/multiselect'
@NgModule({
imports: [
@@ -113,7 +112,8 @@ import { FollowService } from '@app/shared/instance/follow.service'
PrimeSharedModule,
InputMaskModule,
- NgPipesModule
+ NgPipesModule,
+ MultiSelectModule
],
declarations: [
@@ -186,6 +186,7 @@ import { FollowService } from '@app/shared/instance/follow.service'
InputMaskModule,
BytesPipe,
KeysPipe,
+ MultiSelectModule,
LoaderComponent,
SmallLoaderComponent,
diff --git a/config/default.yaml b/config/default.yaml
index 5a935fede..f84ecfcf9 100644
--- a/config/default.yaml
+++ b/config/default.yaml
@@ -238,7 +238,53 @@ instance:
short_description: 'PeerTube, a federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.'
description: 'Welcome to this PeerTube instance!' # Support markdown
terms: 'No terms for now.' # Support markdown
+ code_of_conduct: '' # Supports markdown
+
+ # Who moderates the instance? What is the policy regarding NSFW videos? Political videos? etc
+ moderation_information: '' # Supports markdown
+
+ # Who is behind the instance? A single person? A non profit?
+ administrator: ''
+
+ # How long do you plan to maintain this instance?
+ maintenance_lifetime: ''
+
+ # How will you pay the PeerTube instance server? With you own funds? With users donations? Advertising?
+ business_model: ''
+
+ # What are the main languages of your instance? To interact with your users for example
+ # Uncomment or add the languages you want
+ # List of supported languages: https://peertube.cpy.re/api/v1/videos/languages
+ languages:
+# - en
+# - es
+# - fr
+
+ # You can specify the main categories of your instance (dedicated to music, gaming or politics etc)
+ # Uncomment or add the category ids you want
+ # List of supported categories: https://peertube.cpy.re/api/v1/videos/categories
+ categories:
+# - 1 # Music
+# - 2 # Films
+# - 3 # Vehicles
+# - 4 # Art
+# - 5 # Sports
+# - 6 # Travels
+# - 7 # Gaming
+# - 8 # People
+# - 9 # Comedy
+# - 10 # Entertainment
+# - 11 # News & Politics
+# - 12 # How To
+# - 13 # Education
+# - 14 # Activism
+# - 15 # Science & Technology
+# - 16 # Animals
+# - 17 # Kids
+# - 18 # Food
+
default_client_route: '/videos/trending'
+
# Whether or not the instance is dedicated to NSFW content
# Enabling it will allow other administrators to know that you are mainly federating sensitive content
# Moreover, the NSFW checkbox on video upload will be automatically checked by default
@@ -246,6 +292,7 @@ instance:
# By default, "do_not_list" or "blur" or "display" NSFW videos
# Could be overridden per user with a setting
default_nsfw_policy: 'do_not_list'
+
customizations:
javascript: '' # Directly your JavaScript code (without