diff --git a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
index e01f5a18f..340fa91b5 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
+++ b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
@@ -256,6 +256,18 @@
+
+
+
+
+ Video playback starts automatically when opening a video (can be overridden by user's settings)
+
+
+
+
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
index 492c56842..e0f7bdd5d 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
+++ b/client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
@@ -219,7 +219,8 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit {
}
},
videoQuota: USER_VIDEO_QUOTA_VALIDATOR,
- videoQuotaDaily: USER_VIDEO_QUOTA_DAILY_VALIDATOR
+ videoQuotaDaily: USER_VIDEO_QUOTA_DAILY_VALIDATOR,
+ playbackAutoStart: null
},
videoChannels: {
maxPerUser: MAX_VIDEO_CHANNELS_PER_USER_VALIDATOR
diff --git a/client/src/app/core/users/user-local-storage.service.ts b/client/src/app/core/users/user-local-storage.service.ts
index 431a57343..9f8e1dc72 100644
--- a/client/src/app/core/users/user-local-storage.service.ts
+++ b/client/src/app/core/users/user-local-storage.service.ts
@@ -107,6 +107,7 @@ export class UserLocalStorageService {
const defaultNSFWPolicy = htmlConfig.instance.defaultNSFWPolicy
const defaultP2PEnabled = htmlConfig.defaults.p2p.webapp.enabled
+ const defaultPlaybackAutoStart = htmlConfig.user.playbackAutoStart
return {
nsfwPolicy: this.localStorageService.getItem(UserLocalStorageKeys.NSFW_POLICY) || defaultNSFWPolicy,
@@ -114,7 +115,7 @@ export class UserLocalStorageService {
theme: this.localStorageService.getItem(UserLocalStorageKeys.THEME) || 'instance-default',
videoLanguages,
- autoPlayVideo: getBoolOrDefault(this.localStorageService.getItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO), true),
+ autoPlayVideo: getBoolOrDefault(this.localStorageService.getItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO), defaultPlaybackAutoStart),
autoPlayNextVideo: getBoolOrDefault(this.localStorageService.getItem(UserLocalStorageKeys.AUTO_PLAY_NEXT_VIDEO), false),
autoPlayNextVideoPlaylist: getBoolOrDefault(this.localStorageService.getItem(UserLocalStorageKeys.AUTO_PLAY_VIDEO_PLAYLIST), true)
}
diff --git a/config/default.yaml b/config/default.yaml
index e4496c15a..0e11252dc 100644
--- a/config/default.yaml
+++ b/config/default.yaml
@@ -571,6 +571,9 @@ user:
default_channel_name: 'Main $1 channel' # The placeholder $1 is used to represent the user's username
+ # By default, playback starts automatically when opening a video for a new user or when anonymous
+ playback_auto_start: true
+
video_channels:
max_per_user: 20 # Allows each user to create up to 20 video channels.
diff --git a/packages/models/src/server/custom-config.model.ts b/packages/models/src/server/custom-config.model.ts
index 00190828d..65e4def7e 100644
--- a/packages/models/src/server/custom-config.model.ts
+++ b/packages/models/src/server/custom-config.model.ts
@@ -109,6 +109,7 @@ export interface CustomConfig {
videoQuota: number
videoQuotaDaily: number
defaultChannelName: string
+ playbackAutoStart: boolean
}
videoChannels: {
diff --git a/packages/models/src/server/server-config.model.ts b/packages/models/src/server/server-config.model.ts
index 9e7b451ba..35d13c3ab 100644
--- a/packages/models/src/server/server-config.model.ts
+++ b/packages/models/src/server/server-config.model.ts
@@ -285,6 +285,7 @@ export interface ServerConfig {
user: {
videoQuota: number
videoQuotaDaily: number
+ playbackAutoStart: boolean
}
videoChannels: {
diff --git a/packages/tests/src/api/server/config-defaults.ts b/packages/tests/src/api/server/config-defaults.ts
index 42b517ba2..d6b8eed2b 100644
--- a/packages/tests/src/api/server/config-defaults.ts
+++ b/packages/tests/src/api/server/config-defaults.ts
@@ -236,6 +236,7 @@ describe('Test config defaults', function () {
expect(config.user.videoQuota).to.equal(-1)
expect(config.user.videoQuotaDaily).to.equal(-1)
+ expect(config.user.playbackAutoStart).to.equal(true)
const user1Token = await server.users.generateUserAndToken('user1')
const user1 = await server.users.getMyInfo({ token: user1Token })
@@ -263,7 +264,8 @@ describe('Test config defaults', function () {
}
},
videoQuota : 5242881,
- videoQuotaDaily: 318742
+ videoQuotaDaily: 318742,
+ playbackAutoStart: false
},
signup: {
enabled: true,
@@ -285,6 +287,7 @@ describe('Test config defaults', function () {
expect(user.videosHistoryEnabled).to.be.false
expect(user.videoQuota).to.equal(5242881)
expect(user.videoQuotaDaily).to.equal(318742)
+ expect(user.autoPlayVideo).to.equal(false)
}
})
diff --git a/packages/tests/src/api/server/config.ts b/packages/tests/src/api/server/config.ts
index 9a0a26ba8..1ae97eb43 100644
--- a/packages/tests/src/api/server/config.ts
+++ b/packages/tests/src/api/server/config.ts
@@ -227,7 +227,8 @@ function buildNewCustomConfig (server: PeerTubeServer): CustomConfig {
},
videoQuota: 5242881,
videoQuotaDaily: 318742,
- defaultChannelName: 'Main $1 channel'
+ defaultChannelName: 'Main $1 channel',
+ playbackAutoStart: true
},
videoChannels: {
maxPerUser: 24
diff --git a/server/core/controllers/api/config.ts b/server/core/controllers/api/config.ts
index 4a6475f7e..ecc89fc21 100644
--- a/server/core/controllers/api/config.ts
+++ b/server/core/controllers/api/config.ts
@@ -313,7 +313,8 @@ function customConfig (): CustomConfig {
},
videoQuota: CONFIG.USER.VIDEO_QUOTA,
videoQuotaDaily: CONFIG.USER.VIDEO_QUOTA_DAILY,
- defaultChannelName: CONFIG.USER.DEFAULT_CHANNEL_NAME
+ defaultChannelName: CONFIG.USER.DEFAULT_CHANNEL_NAME,
+ playbackAutoStart: CONFIG.USER.PLAYBACK_AUTO_START
},
videoChannels: {
maxPerUser: CONFIG.VIDEO_CHANNELS.MAX_PER_USER
diff --git a/server/core/initializers/checker-before-init.ts b/server/core/initializers/checker-before-init.ts
index fb1a5c0c2..368e0cb7e 100644
--- a/server/core/initializers/checker-before-init.ts
+++ b/server/core/initializers/checker-before-init.ts
@@ -23,7 +23,7 @@ function checkMissedConfig () {
'open_telemetry.metrics.prometheus_exporter.hostname', 'open_telemetry.metrics.prometheus_exporter.port',
'open_telemetry.tracing.enabled', 'open_telemetry.tracing.jaeger_exporter.endpoint',
'open_telemetry.metrics.http_request_duration.enabled',
- 'user.history.videos.enabled', 'user.video_quota', 'user.video_quota_daily',
+ 'user.history.videos.enabled', 'user.video_quota', 'user.video_quota_daily', 'user.playback_auto_start',
'video_channels.max_per_user',
'csp.enabled', 'csp.report_only', 'csp.report_uri',
'security.frameguard.enabled', 'security.powered_by_header.enabled',
diff --git a/server/core/initializers/config.ts b/server/core/initializers/config.ts
index 73511b28d..789a4287e 100644
--- a/server/core/initializers/config.ts
+++ b/server/core/initializers/config.ts
@@ -425,7 +425,8 @@ const CONFIG = {
},
get VIDEO_QUOTA () { return parseBytes(config.get('user.video_quota')) },
get VIDEO_QUOTA_DAILY () { return parseBytes(config.get('user.video_quota_daily')) },
- get DEFAULT_CHANNEL_NAME () { return config.get('user.default_channel_name') }
+ get DEFAULT_CHANNEL_NAME () { return config.get('user.default_channel_name') },
+ get PLAYBACK_AUTO_START () { return config.has('user.playback_auto_start') ? config.get('user.playback_auto_start') : true }
},
VIDEO_CHANNELS: {
get MAX_PER_USER () { return config.get('video_channels.max_per_user') }
diff --git a/server/core/lib/server-config-manager.ts b/server/core/lib/server-config-manager.ts
index ac5818d2c..aaccd44e8 100644
--- a/server/core/lib/server-config-manager.ts
+++ b/server/core/lib/server-config-manager.ts
@@ -265,7 +265,8 @@ class ServerConfigManager {
},
user: {
videoQuota: CONFIG.USER.VIDEO_QUOTA,
- videoQuotaDaily: CONFIG.USER.VIDEO_QUOTA_DAILY
+ videoQuotaDaily: CONFIG.USER.VIDEO_QUOTA_DAILY,
+ playbackAutoStart: CONFIG.USER.PLAYBACK_AUTO_START
},
videoChannels: {
maxPerUser: CONFIG.VIDEO_CHANNELS.MAX_PER_USER
diff --git a/server/core/lib/user.ts b/server/core/lib/user.ts
index 39ec281a6..6039e4e79 100644
--- a/server/core/lib/user.ts
+++ b/server/core/lib/user.ts
@@ -65,7 +65,7 @@ function buildUser (options: {
p2pEnabled: CONFIG.DEFAULTS.P2P.WEBAPP.ENABLED,
videosHistoryEnabled: CONFIG.USER.HISTORY.VIDEOS.ENABLED,
- autoPlayVideo: true,
+ autoPlayVideo: CONFIG.USER.PLAYBACK_AUTO_START,
role,
emailVerified,