diff options
13 files changed, 47 insertions, 58 deletions
diff --git a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html index adbb97f00..50f798c79 100644 --- a/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html +++ b/client/src/app/+my-account/my-account-settings/my-account-video-settings/my-account-video-settings.component.html | |||
@@ -16,18 +16,22 @@ | |||
16 | </div> | 16 | </div> |
17 | 17 | ||
18 | <div class="form-group"> | 18 | <div class="form-group"> |
19 | <label i18n for="webTorrentPolicy">Policy regarding P2P technologies</label> | 19 | <label i18n for="webTorrentEnabled">Policy regarding P2P technologies</label> |
20 | 20 | ||
21 | <div class="peertube-select-container"> | 21 | <div class="peertube-select-container"> |
22 | <select id="webTorrentPolicy" formControlName="webTorrentPolicy"> | 22 | <select id="webTorrentEnabled" formControlName="webTorrentEnabled"> |
23 | <option i18n value="enable">Enable WebTorrent</option> | 23 | <option i18n value="enable">Enable WebTorrent</option> |
24 | <option i18n value="disable">Disable WebTorrent globally</option> | 24 | <option i18n value="disable">Disable WebTorrent</option> |
25 | <option i18n value="disable_on_mobile" disabled>Disable WebTorrent on mobile devices (not yet available)</option> | ||
26 | </select> | 25 | </select> |
27 | </div> | 26 | </div> |
28 | </div> | 27 | </div> |
29 | 28 | ||
30 | <my-peertube-checkbox | 29 | <my-peertube-checkbox |
30 | inputName="webTorrentEnabled" formControlName="webTorrentEnabled" | ||
31 | i18n-labelText labelText="Use WebTorrent to exchange parts of the video with others" | ||
32 | ></my-peertube-checkbox> | ||
33 | |||
34 | <my-peertube-checkbox | ||
31 | inputName="autoPlayVideo" formControlName="autoPlayVideo" | 35 | inputName="autoPlayVideo" formControlName="autoPlayVideo" |
32 | i18n-labelText labelText="Automatically plays video" | 36 | i18n-labelText labelText="Automatically plays video" |
33 | ></my-peertube-checkbox> | 37 | ></my-peertube-checkbox> |
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 9e711a227..6c9a7ce75 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 | |||
@@ -29,14 +29,14 @@ export class MyAccountVideoSettingsComponent extends FormReactive implements OnI | |||
29 | ngOnInit () { | 29 | ngOnInit () { |
30 | this.buildForm({ | 30 | this.buildForm({ |
31 | nsfwPolicy: null, | 31 | nsfwPolicy: null, |
32 | webTorrentPolicy: null, | 32 | webTorrentEnabled: null, |
33 | autoPlayVideo: null | 33 | autoPlayVideo: null |
34 | }) | 34 | }) |
35 | 35 | ||
36 | this.userInformationLoaded.subscribe(() => { | 36 | this.userInformationLoaded.subscribe(() => { |
37 | this.form.patchValue({ | 37 | this.form.patchValue({ |
38 | nsfwPolicy: this.user.nsfwPolicy, | 38 | nsfwPolicy: this.user.nsfwPolicy, |
39 | webTorrentPolicy: this.user.webTorrentPolicy, | 39 | webTorrentEnabled: this.user.webTorrentEnabled, |
40 | autoPlayVideo: this.user.autoPlayVideo === true | 40 | autoPlayVideo: this.user.autoPlayVideo === true |
41 | }) | 41 | }) |
42 | }) | 42 | }) |
@@ -44,11 +44,11 @@ export class MyAccountVideoSettingsComponent extends FormReactive implements OnI | |||
44 | 44 | ||
45 | updateDetails () { | 45 | updateDetails () { |
46 | const nsfwPolicy = this.form.value['nsfwPolicy'] | 46 | const nsfwPolicy = this.form.value['nsfwPolicy'] |
47 | const webTorrentPolicy = this.form.value['webTorrentPolicy'] | 47 | const webTorrentEnabled = this.form.value['webTorrentEnabled'] |
48 | const autoPlayVideo = this.form.value['autoPlayVideo'] | 48 | const autoPlayVideo = this.form.value['autoPlayVideo'] |
49 | const details: UserUpdateMe = { | 49 | const details: UserUpdateMe = { |
50 | nsfwPolicy, | 50 | nsfwPolicy, |
51 | webTorrentPolicy, | 51 | webTorrentEnabled, |
52 | autoPlayVideo | 52 | autoPlayVideo |
53 | } | 53 | } |
54 | 54 | ||
diff --git a/client/src/app/core/auth/auth-user.model.ts b/client/src/app/core/auth/auth-user.model.ts index 97acf7bfe..acd13d9c5 100644 --- a/client/src/app/core/auth/auth-user.model.ts +++ b/client/src/app/core/auth/auth-user.model.ts | |||
@@ -4,7 +4,6 @@ import { UserRight } from '../../../../../shared/models/users/user-right.enum' | |||
4 | import { hasUserRight, UserRole } from '../../../../../shared/models/users/user-role' | 4 | import { hasUserRight, UserRole } from '../../../../../shared/models/users/user-role' |
5 | import { User, UserConstructorHash } from '../../shared/users/user.model' | 5 | import { User, UserConstructorHash } from '../../shared/users/user.model' |
6 | import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' | 6 | import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' |
7 | import { WebTorrentPolicyType } from '../../../../../shared/models/users/user-webtorrent-policy.type' | ||
8 | 7 | ||
9 | export type TokenOptions = { | 8 | export type TokenOptions = { |
10 | accessToken: string | 9 | accessToken: string |
@@ -73,7 +72,7 @@ export class AuthUser extends User { | |||
73 | EMAIL: 'email', | 72 | EMAIL: 'email', |
74 | USERNAME: 'username', | 73 | USERNAME: 'username', |
75 | NSFW_POLICY: 'nsfw_policy', | 74 | NSFW_POLICY: 'nsfw_policy', |
76 | WEBTORRENT_POLICY: 'peertube-videojs-' + 'webtorrent_policy', | 75 | WEBTORRENT_ENABLED: 'peertube-videojs-' + 'webtorrent_enabled', |
77 | AUTO_PLAY_VIDEO: 'auto_play_video' | 76 | AUTO_PLAY_VIDEO: 'auto_play_video' |
78 | } | 77 | } |
79 | 78 | ||
@@ -89,7 +88,7 @@ export class AuthUser extends User { | |||
89 | email: peertubeLocalStorage.getItem(this.KEYS.EMAIL), | 88 | email: peertubeLocalStorage.getItem(this.KEYS.EMAIL), |
90 | role: parseInt(peertubeLocalStorage.getItem(this.KEYS.ROLE), 10) as UserRole, | 89 | role: parseInt(peertubeLocalStorage.getItem(this.KEYS.ROLE), 10) as UserRole, |
91 | nsfwPolicy: peertubeLocalStorage.getItem(this.KEYS.NSFW_POLICY) as NSFWPolicyType, | 90 | nsfwPolicy: peertubeLocalStorage.getItem(this.KEYS.NSFW_POLICY) as NSFWPolicyType, |
92 | webTorrentPolicy: peertubeLocalStorage.getItem(this.KEYS.WEBTORRENT_POLICY) as WebTorrentPolicyType, | 91 | webTorrentEnabled: peertubeLocalStorage.getItem(this.KEYS.WEBTORRENT_ENABLED) === 'true', |
93 | autoPlayVideo: peertubeLocalStorage.getItem(this.KEYS.AUTO_PLAY_VIDEO) === 'true' | 92 | autoPlayVideo: peertubeLocalStorage.getItem(this.KEYS.AUTO_PLAY_VIDEO) === 'true' |
94 | }, | 93 | }, |
95 | Tokens.load() | 94 | Tokens.load() |
@@ -104,7 +103,7 @@ export class AuthUser extends User { | |||
104 | peertubeLocalStorage.removeItem(this.KEYS.ID) | 103 | peertubeLocalStorage.removeItem(this.KEYS.ID) |
105 | peertubeLocalStorage.removeItem(this.KEYS.ROLE) | 104 | peertubeLocalStorage.removeItem(this.KEYS.ROLE) |
106 | peertubeLocalStorage.removeItem(this.KEYS.NSFW_POLICY) | 105 | peertubeLocalStorage.removeItem(this.KEYS.NSFW_POLICY) |
107 | peertubeLocalStorage.removeItem(this.KEYS.WEBTORRENT_POLICY) | 106 | peertubeLocalStorage.removeItem(this.KEYS.WEBTORRENT_ENABLED) |
108 | peertubeLocalStorage.removeItem(this.KEYS.AUTO_PLAY_VIDEO) | 107 | peertubeLocalStorage.removeItem(this.KEYS.AUTO_PLAY_VIDEO) |
109 | peertubeLocalStorage.removeItem(this.KEYS.EMAIL) | 108 | peertubeLocalStorage.removeItem(this.KEYS.EMAIL) |
110 | Tokens.flush() | 109 | Tokens.flush() |
@@ -142,7 +141,7 @@ export class AuthUser extends User { | |||
142 | peertubeLocalStorage.setItem(AuthUser.KEYS.EMAIL, this.email) | 141 | peertubeLocalStorage.setItem(AuthUser.KEYS.EMAIL, this.email) |
143 | peertubeLocalStorage.setItem(AuthUser.KEYS.ROLE, this.role.toString()) | 142 | peertubeLocalStorage.setItem(AuthUser.KEYS.ROLE, this.role.toString()) |
144 | peertubeLocalStorage.setItem(AuthUser.KEYS.NSFW_POLICY, this.nsfwPolicy.toString()) | 143 | peertubeLocalStorage.setItem(AuthUser.KEYS.NSFW_POLICY, this.nsfwPolicy.toString()) |
145 | peertubeLocalStorage.setItem(AuthUser.KEYS.WEBTORRENT_POLICY, this.webTorrentPolicy.toString()) | 144 | peertubeLocalStorage.setItem(AuthUser.KEYS.WEBTORRENT_ENABLED, JSON.stringify(this.webTorrentEnabled)) |
146 | peertubeLocalStorage.setItem(AuthUser.KEYS.AUTO_PLAY_VIDEO, JSON.stringify(this.autoPlayVideo)) | 145 | peertubeLocalStorage.setItem(AuthUser.KEYS.AUTO_PLAY_VIDEO, JSON.stringify(this.autoPlayVideo)) |
147 | this.tokens.save() | 146 | this.tokens.save() |
148 | } | 147 | } |
diff --git a/client/src/app/shared/users/user.model.ts b/client/src/app/shared/users/user.model.ts index 240c7aacf..7c840ffa7 100644 --- a/client/src/app/shared/users/user.model.ts +++ b/client/src/app/shared/users/user.model.ts | |||
@@ -9,7 +9,6 @@ import { | |||
9 | import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' | 9 | import { NSFWPolicyType } from '../../../../../shared/models/videos/nsfw-policy.type' |
10 | import { Account } from '@app/shared/account/account.model' | 10 | import { Account } from '@app/shared/account/account.model' |
11 | import { Avatar } from '../../../../../shared/models/avatars/avatar.model' | 11 | import { Avatar } from '../../../../../shared/models/avatars/avatar.model' |
12 | import { WebTorrentPolicyType } from '../../../../../shared/models/users/user-webtorrent-policy.type' | ||
13 | 12 | ||
14 | export type UserConstructorHash = { | 13 | export type UserConstructorHash = { |
15 | id: number, | 14 | id: number, |
@@ -19,7 +18,7 @@ export type UserConstructorHash = { | |||
19 | videoQuota?: number, | 18 | videoQuota?: number, |
20 | videoQuotaDaily?: number, | 19 | videoQuotaDaily?: number, |
21 | nsfwPolicy?: NSFWPolicyType, | 20 | nsfwPolicy?: NSFWPolicyType, |
22 | webTorrentPolicy?: WebTorrentPolicyType, | 21 | webTorrentEnabled?: boolean, |
23 | autoPlayVideo?: boolean, | 22 | autoPlayVideo?: boolean, |
24 | createdAt?: Date, | 23 | createdAt?: Date, |
25 | account?: AccountServerModel, | 24 | account?: AccountServerModel, |
@@ -34,7 +33,7 @@ export class User implements UserServerModel { | |||
34 | email: string | 33 | email: string |
35 | role: UserRole | 34 | role: UserRole |
36 | nsfwPolicy: NSFWPolicyType | 35 | nsfwPolicy: NSFWPolicyType |
37 | webTorrentPolicy: WebTorrentPolicyType | 36 | webTorrentEnabled: boolean |
38 | autoPlayVideo: boolean | 37 | autoPlayVideo: boolean |
39 | videoQuota: number | 38 | videoQuota: number |
40 | videoQuotaDaily: number | 39 | videoQuotaDaily: number |
@@ -55,7 +54,7 @@ export class User implements UserServerModel { | |||
55 | this.videoQuota = hash.videoQuota | 54 | this.videoQuota = hash.videoQuota |
56 | this.videoQuotaDaily = hash.videoQuotaDaily | 55 | this.videoQuotaDaily = hash.videoQuotaDaily |
57 | this.nsfwPolicy = hash.nsfwPolicy | 56 | this.nsfwPolicy = hash.nsfwPolicy |
58 | this.webTorrentPolicy = hash.webTorrentPolicy | 57 | this.webTorrentEnabled = hash.webTorrentEnabled |
59 | this.autoPlayVideo = hash.autoPlayVideo | 58 | this.autoPlayVideo = hash.autoPlayVideo |
60 | this.createdAt = hash.createdAt | 59 | this.createdAt = hash.createdAt |
61 | this.blocked = hash.blocked | 60 | this.blocked = hash.blocked |
diff --git a/client/src/assets/player/peertube-player-local-storage.ts b/client/src/assets/player/peertube-player-local-storage.ts index c3d8b71bc..3ac5fe58a 100644 --- a/client/src/assets/player/peertube-player-local-storage.ts +++ b/client/src/assets/player/peertube-player-local-storage.ts | |||
@@ -10,13 +10,11 @@ function getStoredVolume () { | |||
10 | return undefined | 10 | return undefined |
11 | } | 11 | } |
12 | 12 | ||
13 | function getStoredWebTorrentPolicy () { | 13 | function getStoredWebTorrentEnabled (): boolean { |
14 | const value = getLocalStorage('webtorrent_policy') | 14 | const value = getLocalStorage('webtorrent_enabled') |
15 | if (value !== null && value !== undefined) { | 15 | if (value !== null && value !== undefined) return value === 'true' |
16 | if (value.toString() === 'disable') return true | ||
17 | } | ||
18 | 16 | ||
19 | return undefined | 17 | return false |
20 | } | 18 | } |
21 | 19 | ||
22 | function getStoredMute () { | 20 | function getStoredMute () { |
@@ -65,7 +63,7 @@ function getAverageBandwidthInStore () { | |||
65 | 63 | ||
66 | export { | 64 | export { |
67 | getStoredVolume, | 65 | getStoredVolume, |
68 | getStoredWebTorrentPolicy, | 66 | getStoredWebTorrentEnabled, |
69 | getStoredMute, | 67 | getStoredMute, |
70 | getStoredTheater, | 68 | getStoredTheater, |
71 | saveVolumeInStore, | 69 | saveVolumeInStore, |
diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index 90ca8f9fa..a53a2cc69 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts | |||
@@ -8,7 +8,7 @@ import { isMobile, timeToInt, videoFileMaxByResolution, videoFileMinByResolution | |||
8 | import * as CacheChunkStore from 'cache-chunk-store' | 8 | import * as CacheChunkStore from 'cache-chunk-store' |
9 | import { PeertubeChunkStore } from './peertube-chunk-store' | 9 | import { PeertubeChunkStore } from './peertube-chunk-store' |
10 | import { | 10 | import { |
11 | getStoredWebTorrentPolicy, | 11 | getStoredWebTorrentEnabled, |
12 | getAverageBandwidthInStore, | 12 | getAverageBandwidthInStore, |
13 | getStoredMute, | 13 | getStoredMute, |
14 | getStoredVolume, | 14 | getStoredVolume, |
@@ -82,6 +82,7 @@ class PeerTubePlugin extends Plugin { | |||
82 | 82 | ||
83 | // Disable auto play on iOS | 83 | // Disable auto play on iOS |
84 | this.autoplay = options.autoplay && this.isIOS() === false | 84 | this.autoplay = options.autoplay && this.isIOS() === false |
85 | this.playerRefusedP2P = !getStoredWebTorrentEnabled() | ||
85 | 86 | ||
86 | this.startTime = timeToInt(options.startTime) | 87 | this.startTime = timeToInt(options.startTime) |
87 | this.videoFiles = options.videoFiles | 88 | this.videoFiles = options.videoFiles |
@@ -99,7 +100,6 @@ class PeerTubePlugin extends Plugin { | |||
99 | if (volume !== undefined) this.player.volume(volume) | 100 | if (volume !== undefined) this.player.volume(volume) |
100 | const muted = getStoredMute() | 101 | const muted = getStoredMute() |
101 | if (muted !== undefined) this.player.muted(muted) | 102 | if (muted !== undefined) this.player.muted(muted) |
102 | this.playerRefusedP2P = getStoredWebTorrentPolicy() || false | ||
103 | 103 | ||
104 | this.initializePlayer() | 104 | this.initializePlayer() |
105 | this.runTorrentInfoScheduler() | 105 | this.runTorrentInfoScheduler() |
@@ -291,7 +291,6 @@ class PeerTubePlugin extends Plugin { | |||
291 | renderVideo(torrent.files[ 0 ], this.playerElement, renderVideoOptions, (err, renderer) => { | 291 | renderVideo(torrent.files[ 0 ], this.playerElement, renderVideoOptions, (err, renderer) => { |
292 | this.renderer = renderer | 292 | this.renderer = renderer |
293 | 293 | ||
294 | console.log('value this.playerRefusedP2P', this.playerRefusedP2P) | ||
295 | if (err || this.playerRefusedP2P) return this.fallbackToHttp(done) | 294 | if (err || this.playerRefusedP2P) return this.fallbackToHttp(done) |
296 | 295 | ||
297 | return this.tryToPlay(err => { | 296 | return this.tryToPlay(err => { |
diff --git a/server/controllers/api/users/me.ts b/server/controllers/api/users/me.ts index f78294f17..3c511dc70 100644 --- a/server/controllers/api/users/me.ts +++ b/server/controllers/api/users/me.ts | |||
@@ -327,7 +327,7 @@ async function updateMe (req: express.Request, res: express.Response, next: expr | |||
327 | if (body.password !== undefined) user.password = body.password | 327 | if (body.password !== undefined) user.password = body.password |
328 | if (body.email !== undefined) user.email = body.email | 328 | if (body.email !== undefined) user.email = body.email |
329 | if (body.nsfwPolicy !== undefined) user.nsfwPolicy = body.nsfwPolicy | 329 | if (body.nsfwPolicy !== undefined) user.nsfwPolicy = body.nsfwPolicy |
330 | if (body.webTorrentPolicy !== undefined) user.webTorrentPolicy = body.webTorrentPolicy | 330 | if (body.webTorrentEnabled !== undefined) user.webTorrentEnabled = body.webTorrentEnabled |
331 | if (body.autoPlayVideo !== undefined) user.autoPlayVideo = body.autoPlayVideo | 331 | if (body.autoPlayVideo !== undefined) user.autoPlayVideo = body.autoPlayVideo |
332 | 332 | ||
333 | await sequelizeTypescript.transaction(async t => { | 333 | await sequelizeTypescript.transaction(async t => { |
diff --git a/server/helpers/custom-validators/users.ts b/server/helpers/custom-validators/users.ts index 2024d4a22..1cb5e5b0f 100644 --- a/server/helpers/custom-validators/users.ts +++ b/server/helpers/custom-validators/users.ts | |||
@@ -1,7 +1,7 @@ | |||
1 | import 'express-validator' | 1 | import 'express-validator' |
2 | import * as validator from 'validator' | 2 | import * as validator from 'validator' |
3 | import { UserRole } from '../../../shared' | 3 | import { UserRole } from '../../../shared' |
4 | import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES, WEBTORRENT_POLICY_TYPES } from '../../initializers' | 4 | import { CONSTRAINTS_FIELDS, NSFW_POLICY_TYPES } from '../../initializers' |
5 | import { exists, isFileValid, isBooleanValid } from './misc' | 5 | import { exists, isFileValid, isBooleanValid } from './misc' |
6 | import { values } from 'lodash' | 6 | import { values } from 'lodash' |
7 | 7 | ||
@@ -42,9 +42,8 @@ function isUserNSFWPolicyValid (value: any) { | |||
42 | return exists(value) && nsfwPolicies.indexOf(value) !== -1 | 42 | return exists(value) && nsfwPolicies.indexOf(value) !== -1 |
43 | } | 43 | } |
44 | 44 | ||
45 | const webTorrentPolicies = values(WEBTORRENT_POLICY_TYPES) | 45 | function isUserWebTorrentEnabledValid (value: any) { |
46 | function isUserWebTorrentPolicyValid (value: any) { | 46 | return isBooleanValid(value) |
47 | return exists(value) && webTorrentPolicies.indexOf(value) !== -1 | ||
48 | } | 47 | } |
49 | 48 | ||
50 | function isUserAutoPlayVideoValid (value: any) { | 49 | function isUserAutoPlayVideoValid (value: any) { |
@@ -83,7 +82,7 @@ export { | |||
83 | isUserUsernameValid, | 82 | isUserUsernameValid, |
84 | isUserEmailVerifiedValid, | 83 | isUserEmailVerifiedValid, |
85 | isUserNSFWPolicyValid, | 84 | isUserNSFWPolicyValid, |
86 | isUserWebTorrentPolicyValid, | 85 | isUserWebTorrentEnabledValid, |
87 | isUserAutoPlayVideoValid, | 86 | isUserAutoPlayVideoValid, |
88 | isUserDisplayNameValid, | 87 | isUserDisplayNameValid, |
89 | isUserDescriptionValid, | 88 | isUserDescriptionValid, |
diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index f56763a16..c3e4fcede 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts | |||
@@ -7,7 +7,6 @@ import { VideoAbuseState, VideoImportState, VideoPrivacy, VideoTranscodingFPS } | |||
7 | // Do not use barrels, remain constants as independent as possible | 7 | // Do not use barrels, remain constants as independent as possible |
8 | import { buildPath, isTestInstance, parseDuration, parseBytes, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils' | 8 | import { buildPath, isTestInstance, parseDuration, parseBytes, root, sanitizeHost, sanitizeUrl } from '../helpers/core-utils' |
9 | import { NSFWPolicyType } from '../../shared/models/videos/nsfw-policy.type' | 9 | import { NSFWPolicyType } from '../../shared/models/videos/nsfw-policy.type' |
10 | import { WebTorrentPolicyType } from '../../shared/models/users/user-webtorrent-policy.type' | ||
11 | import { invert } from 'lodash' | 10 | import { invert } from 'lodash' |
12 | import { CronRepeatOptions, EveryRepeatOptions } from 'bull' | 11 | import { CronRepeatOptions, EveryRepeatOptions } from 'bull' |
13 | import * as bytes from 'bytes' | 12 | import * as bytes from 'bytes' |
@@ -547,12 +546,6 @@ const NSFW_POLICY_TYPES: { [ id: string]: NSFWPolicyType } = { | |||
547 | DISPLAY: 'display' | 546 | DISPLAY: 'display' |
548 | } | 547 | } |
549 | 548 | ||
550 | const WEBTORRENT_POLICY_TYPES: { [ id: string]: WebTorrentPolicyType } = { | ||
551 | ENABLE: 'enable', | ||
552 | DISABLE: 'disable', | ||
553 | DISABLE_ON_MOBILE: 'disable_on_mobile' | ||
554 | } | ||
555 | |||
556 | // --------------------------------------------------------------------------- | 549 | // --------------------------------------------------------------------------- |
557 | 550 | ||
558 | // Express static paths (router) | 551 | // Express static paths (router) |
@@ -705,7 +698,6 @@ export { | |||
705 | FEEDS, | 698 | FEEDS, |
706 | JOB_TTL, | 699 | JOB_TTL, |
707 | NSFW_POLICY_TYPES, | 700 | NSFW_POLICY_TYPES, |
708 | WEBTORRENT_POLICY_TYPES, | ||
709 | TORRENT_MIMETYPE_EXT, | 701 | TORRENT_MIMETYPE_EXT, |
710 | STATIC_MAX_AGE, | 702 | STATIC_MAX_AGE, |
711 | STATIC_PATHS, | 703 | STATIC_PATHS, |
diff --git a/server/initializers/migrations/0280-webtorrent-policy-user.ts b/server/initializers/migrations/0280-webtorrent-policy-user.ts index d24f6709e..e6488356a 100644 --- a/server/initializers/migrations/0280-webtorrent-policy-user.ts +++ b/server/initializers/migrations/0280-webtorrent-policy-user.ts | |||
@@ -1,6 +1,4 @@ | |||
1 | import * as Sequelize from 'sequelize' | 1 | import * as Sequelize from 'sequelize' |
2 | import { values } from 'lodash' | ||
3 | import { WEBTORRENT_POLICY_TYPES } from '../constants' | ||
4 | 2 | ||
5 | async function up (utils: { | 3 | async function up (utils: { |
6 | transaction: Sequelize.Transaction | 4 | transaction: Sequelize.Transaction |
@@ -9,18 +7,22 @@ async function up (utils: { | |||
9 | }): Promise<any> { | 7 | }): Promise<any> { |
10 | { | 8 | { |
11 | const data = { | 9 | const data = { |
12 | type: Sequelize.ENUM(values(WEBTORRENT_POLICY_TYPES)), | 10 | type: Sequelize.BOOLEAN, |
13 | allowNull: false, | 11 | allowNull: false, |
14 | defaultValue: 'enable' | 12 | defaultValue: true |
15 | } | 13 | } |
16 | 14 | ||
17 | await utils.queryInterface.addColumn('user', 'webTorrentPolicy', data) | 15 | await utils.queryInterface.addColumn('user', 'webTorrentEnabled', data) |
18 | } | 16 | } |
19 | 17 | ||
20 | } | 18 | } |
21 | 19 | ||
22 | function down (options) { | 20 | async function down (utils: { |
23 | throw new Error('Not implemented.') | 21 | transaction: Sequelize.Transaction |
22 | queryInterface: Sequelize.QueryInterface | ||
23 | sequelize: Sequelize.Sequelize | ||
24 | }): Promise<any> { | ||
25 | await utils.queryInterface.removeColumn('user', 'webTorrentEnabled') | ||
24 | } | 26 | } |
25 | 27 | ||
26 | export { up, down } | 28 | export { up, down } |
diff --git a/server/models/account/user.ts b/server/models/account/user.ts index 5fe7d7e7d..4b4a562fa 100644 --- a/server/models/account/user.ts +++ b/server/models/account/user.ts | |||
@@ -32,7 +32,7 @@ import { | |||
32 | isUserUsernameValid, | 32 | isUserUsernameValid, |
33 | isUserVideoQuotaDailyValid, | 33 | isUserVideoQuotaDailyValid, |
34 | isUserVideoQuotaValid, | 34 | isUserVideoQuotaValid, |
35 | isUserWebTorrentPolicyValid | 35 | isUserWebTorrentEnabledValid |
36 | } from '../../helpers/custom-validators/users' | 36 | } from '../../helpers/custom-validators/users' |
37 | import { comparePassword, cryptPassword } from '../../helpers/peertube-crypto' | 37 | import { comparePassword, cryptPassword } from '../../helpers/peertube-crypto' |
38 | import { OAuthTokenModel } from '../oauth/oauth-token' | 38 | import { OAuthTokenModel } from '../oauth/oauth-token' |
@@ -40,9 +40,8 @@ import { getSort, throwIfNotValid } from '../utils' | |||
40 | import { VideoChannelModel } from '../video/video-channel' | 40 | import { VideoChannelModel } from '../video/video-channel' |
41 | import { AccountModel } from './account' | 41 | import { AccountModel } from './account' |
42 | import { NSFWPolicyType } from '../../../shared/models/videos/nsfw-policy.type' | 42 | import { NSFWPolicyType } from '../../../shared/models/videos/nsfw-policy.type' |
43 | import { WebTorrentPolicyType } from '../../../shared/models/users/user-webtorrent-policy.type' | ||
44 | import { values } from 'lodash' | 43 | import { values } from 'lodash' |
45 | import { NSFW_POLICY_TYPES, WEBTORRENT_POLICY_TYPES } from '../../initializers' | 44 | import { NSFW_POLICY_TYPES } from '../../initializers' |
46 | import { clearCacheByUserId } from '../../lib/oauth-model' | 45 | import { clearCacheByUserId } from '../../lib/oauth-model' |
47 | 46 | ||
48 | enum ScopeNames { | 47 | enum ScopeNames { |
@@ -110,9 +109,9 @@ export class UserModel extends Model<UserModel> { | |||
110 | nsfwPolicy: NSFWPolicyType | 109 | nsfwPolicy: NSFWPolicyType |
111 | 110 | ||
112 | @AllowNull(false) | 111 | @AllowNull(false) |
113 | @Is('UserWebTorrentPolicy', value => throwIfNotValid(value, isUserWebTorrentPolicyValid, 'WebTorrent policy')) | 112 | @Is('UserWebTorrentEnabled', value => throwIfNotValid(value, isUserWebTorrentEnabledValid, 'WebTorrent enabled')) |
114 | @Column(DataType.ENUM(values(WEBTORRENT_POLICY_TYPES))) | 113 | @Column |
115 | webTorrentPolicy: WebTorrentPolicyType | 114 | webTorrentEnabled: boolean |
116 | 115 | ||
117 | @AllowNull(false) | 116 | @AllowNull(false) |
118 | @Default(true) | 117 | @Default(true) |
@@ -362,7 +361,7 @@ export class UserModel extends Model<UserModel> { | |||
362 | email: this.email, | 361 | email: this.email, |
363 | emailVerified: this.emailVerified, | 362 | emailVerified: this.emailVerified, |
364 | nsfwPolicy: this.nsfwPolicy, | 363 | nsfwPolicy: this.nsfwPolicy, |
365 | webTorrentPolicy: this.webTorrentPolicy, | 364 | webTorrentEnabled: this.webTorrentEnabled, |
366 | autoPlayVideo: this.autoPlayVideo, | 365 | autoPlayVideo: this.autoPlayVideo, |
367 | role: this.role, | 366 | role: this.role, |
368 | roleLabel: USER_ROLE_LABELS[ this.role ], | 367 | roleLabel: USER_ROLE_LABELS[ this.role ], |
diff --git a/shared/models/users/user-update-me.model.ts b/shared/models/users/user-update-me.model.ts index 81790377e..10edeee2e 100644 --- a/shared/models/users/user-update-me.model.ts +++ b/shared/models/users/user-update-me.model.ts | |||
@@ -1,11 +1,10 @@ | |||
1 | import { NSFWPolicyType } from '../videos/nsfw-policy.type' | 1 | import { NSFWPolicyType } from '../videos/nsfw-policy.type' |
2 | import { WebTorrentPolicyType } from './user-webtorrent-policy.type' | ||
3 | 2 | ||
4 | export interface UserUpdateMe { | 3 | export interface UserUpdateMe { |
5 | displayName?: string | 4 | displayName?: string |
6 | description?: string | 5 | description?: string |
7 | nsfwPolicy?: NSFWPolicyType, | 6 | nsfwPolicy?: NSFWPolicyType, |
8 | webTorrentPolicy?: WebTorrentPolicyType, | 7 | webTorrentEnabled?: boolean, |
9 | autoPlayVideo?: boolean | 8 | autoPlayVideo?: boolean |
10 | email?: string | 9 | email?: string |
11 | currentPassword?: string | 10 | currentPassword?: string |
diff --git a/shared/models/users/user-webtorrent-policy.type.ts b/shared/models/users/user-webtorrent-policy.type.ts deleted file mode 100644 index e293f761d..000000000 --- a/shared/models/users/user-webtorrent-policy.type.ts +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | export type WebTorrentPolicyType = 'enable' | 'disable' | 'disable_on_mobile' | ||