)
}
- explainedPrivacyLabels (privacies: VideoConstant<VideoPrivacy>[], defaultPrivacyId = VideoPrivacy.PUBLIC) {
- const base = [
+ explainedPrivacyLabels (serverPrivacies: VideoConstant<VideoPrivacy>[], defaultPrivacyId = VideoPrivacy.PUBLIC) {
+ const descriptions = [
{
id: VideoPrivacy.PRIVATE,
description: $localize`Only I can see this video`
}
]
- const videoPrivacies = base
- .filter(o => !!privacies.find(p => p.id === o.id)) // filter down to privacies that where in the input
- .map(o => ({ ...privacies[o.id - 1], ...o })) // merge the input privacies that contain a label, and extend them with a description
-
return {
- defaultPrivacyId: videoPrivacies.find(p => p.id === defaultPrivacyId)?.id || videoPrivacies[0].id,
- videoPrivacies
+ defaultPrivacyId: serverPrivacies.find(p => p.id === defaultPrivacyId)?.id || serverPrivacies[0].id,
+ videoPrivacies: serverPrivacies.map(p => ({ ...p, description: descriptions.find(p => p.id).description }))
}
}
+ getHighestAvailablePrivacy (serverPrivacies: VideoConstant<VideoPrivacy>[]) {
+ const order = [ VideoPrivacy.PRIVATE, VideoPrivacy.INTERNAL, VideoPrivacy.UNLISTED, VideoPrivacy.PUBLIC ]
+
+ for (const privacy of order) {
+ if (serverPrivacies.find(p => p.id === privacy)) {
+ return privacy
+ }
+ }
+
+ throw new Error('No highest privacy available')
+ }
+
nsfwPolicyToParam (nsfwPolicy: NSFWPolicyType) {
return nsfwPolicy === 'do_not_list'
? 'false'