]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/models/server/custom-config.model.ts
Rename studio to editor
[github/Chocobozzz/PeerTube.git] / shared / models / server / custom-config.model.ts
index 20b261426c8c1f32fdbbc69b1c44e2a6a68d836f..ab83ed497d723c43599eee22a693443f0f25f04d 100644 (file)
@@ -1,4 +1,16 @@
 import { NSFWPolicyType } from '../videos/nsfw-policy.type'
+import { BroadcastMessageLevel } from './broadcast-message-level.type'
+
+export type ConfigResolutions = {
+  '144p': boolean
+  '240p': boolean
+  '360p': boolean
+  '480p': boolean
+  '720p': boolean
+  '1080p': boolean
+  '1440p': boolean
+  '2160p': boolean
+}
 
 export interface CustomConfig {
   instance: {
@@ -6,15 +18,33 @@ export interface CustomConfig {
     shortDescription: string
     description: string
     terms: string
+    codeOfConduct: string
+
+    creationReason: string
+    moderationInformation: string
+    administrator: string
+    maintenanceLifetime: string
+    businessModel: string
+    hardwareInformation: string
+
+    languages: string[]
+    categories: number[]
+
     isNSFW: boolean
-    defaultClientRoute: string
     defaultNSFWPolicy: NSFWPolicyType
+
+    defaultClientRoute: string
+
     customizations: {
       javascript?: string
       css?: string
     }
   }
 
+  theme: {
+    default: string
+  }
+
   services: {
     twitter: {
       username: string
@@ -22,6 +52,20 @@ export interface CustomConfig {
     }
   }
 
+  client: {
+    videos: {
+      miniature: {
+        preferAuthorDisplayName: boolean
+      }
+    }
+
+    menu: {
+      login: {
+        redirectOnSingleExternalAuth: boolean
+      }
+    }
+  }
+
   cache: {
     previews: {
       size: number
@@ -30,12 +74,17 @@ export interface CustomConfig {
     captions: {
       size: number
     }
+
+    torrents: {
+      size: number
+    }
   }
 
   signup: {
     enabled: boolean
     limit: number
     requiresEmailVerification: boolean
+    minimumAge: number
   }
 
   admin: {
@@ -51,30 +100,125 @@ export interface CustomConfig {
     videoQuotaDaily: number
   }
 
+  videoChannels: {
+    maxPerUser: number
+  }
+
   transcoding: {
     enabled: boolean
+
     allowAdditionalExtensions: boolean
+    allowAudioFiles: boolean
+
     threads: number
-    resolutions: {
-      '240p': boolean
-      '360p': boolean
-      '480p': boolean
-      '720p': boolean
-      '1080p': boolean
+    concurrency: number
+
+    profile: string
+
+    resolutions: ConfigResolutions & { '0p': boolean }
+
+    webtorrent: {
+      enabled: boolean
     }
+
     hls: {
       enabled: boolean
     }
   }
 
+  live: {
+    enabled: boolean
+
+    allowReplay: boolean
+
+    latencySetting: {
+      enabled: boolean
+    }
+
+    maxDuration: number
+    maxInstanceLives: number
+    maxUserLives: number
+
+    transcoding: {
+      enabled: boolean
+      threads: number
+      profile: string
+      resolutions: ConfigResolutions
+    }
+  }
+
+  videoStudio: {
+    enabled: boolean
+  }
+
   import: {
     videos: {
+      concurrency: number
+
       http: {
         enabled: boolean
-      },
+      }
       torrent: {
         enabled: boolean
       }
     }
   }
+
+  trending: {
+    videos: {
+      algorithms: {
+        enabled: string[]
+        default: string
+      }
+    }
+  }
+
+  autoBlacklist: {
+    videos: {
+      ofUsers: {
+        enabled: boolean
+      }
+    }
+  }
+
+  followers: {
+    instance: {
+      enabled: boolean
+      manualApproval: boolean
+    }
+  }
+
+  followings: {
+    instance: {
+      autoFollowBack: {
+        enabled: boolean
+      }
+
+      autoFollowIndex: {
+        enabled: boolean
+        indexUrl: string
+      }
+    }
+  }
+
+  broadcastMessage: {
+    enabled: boolean
+    message: string
+    level: BroadcastMessageLevel
+    dismissable: boolean
+  }
+
+  search: {
+    remoteUri: {
+      users: boolean
+      anonymous: boolean
+    }
+
+    searchIndex: {
+      enabled: boolean
+      url: string
+      disableLocalSearch: boolean
+      isDefaultSearch: boolean
+    }
+  }
 }