Merge pull request #4425 from Vito0912/feat/addExplicit

Add explicit filter
This commit is contained in:
advplyr 2025-06-21 17:03:25 -05:00 committed by GitHub
commit 108b2a60f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 30 additions and 1 deletions

View File

@ -94,6 +94,9 @@ export default {
userIsAdminOrUp() { userIsAdminOrUp() {
return this.$store.getters['user/getIsAdminOrUp'] return this.$store.getters['user/getIsAdminOrUp']
}, },
userCanAccessExplicitContent() {
return this.$store.getters['user/getUserCanAccessExplicitContent']
},
libraryMediaType() { libraryMediaType() {
return this.$store.getters['libraries/getCurrentLibraryMediaType'] return this.$store.getters['libraries/getCurrentLibraryMediaType']
}, },
@ -239,6 +242,15 @@ export default {
sublist: false sublist: false
} }
] ]
if (this.userCanAccessExplicitContent) {
items.push({
text: this.$strings.LabelExplicit,
value: 'explicit',
sublist: false
})
}
if (this.userIsAdminOrUp) { if (this.userIsAdminOrUp) {
items.push({ items.push({
text: this.$strings.LabelShareOpen, text: this.$strings.LabelShareOpen,
@ -249,7 +261,7 @@ export default {
return items return items
}, },
podcastItems() { podcastItems() {
return [ const items = [
{ {
text: this.$strings.LabelAll, text: this.$strings.LabelAll,
value: 'all' value: 'all'
@ -283,6 +295,16 @@ export default {
sublist: false sublist: false
} }
] ]
if (this.userCanAccessExplicitContent) {
items.push({
text: this.$strings.LabelExplicit,
value: 'explicit',
sublist: false
})
}
return items
}, },
selectItems() { selectItems() {
if (this.isSeries) return this.seriesItems if (this.isSeries) return this.seriesItems

View File

@ -58,6 +58,9 @@ export const getters = {
getUserCanAccessAllLibraries: (state) => { getUserCanAccessAllLibraries: (state) => {
return !!state.user?.permissions?.accessAllLibraries return !!state.user?.permissions?.accessAllLibraries
}, },
getUserCanAccessExplicitContent: (state) => {
return !!state.user?.permissions?.accessExplicitContent
},
getLibrariesAccessible: (state, getters) => { getLibrariesAccessible: (state, getters) => {
if (!state.user) return [] if (!state.user) return []
if (getters.getUserCanAccessAllLibraries) return [] if (getters.getUserCanAccessAllLibraries) return []

View File

@ -186,6 +186,8 @@ module.exports = {
mediaWhere['$series.id$'] = null mediaWhere['$series.id$'] = null
} else if (group === 'abridged') { } else if (group === 'abridged') {
mediaWhere['abridged'] = true mediaWhere['abridged'] = true
} else if (group === 'explicit') {
mediaWhere['explicit'] = true
} else if (['genres', 'tags', 'narrators'].includes(group)) { } else if (['genres', 'tags', 'narrators'].includes(group)) {
mediaWhere[group] = Sequelize.where(Sequelize.literal(`(SELECT count(*) FROM json_each(${group}) WHERE json_valid(${group}) AND json_each.value = :filterValue)`), { mediaWhere[group] = Sequelize.where(Sequelize.literal(`(SELECT count(*) FROM json_each(${group}) WHERE json_valid(${group}) AND json_each.value = :filterValue)`), {
[Sequelize.Op.gte]: 1 [Sequelize.Op.gte]: 1

View File

@ -59,6 +59,8 @@ module.exports = {
replacements.filterValue = value replacements.filterValue = value
} else if (group === 'languages') { } else if (group === 'languages') {
mediaWhere['language'] = value mediaWhere['language'] = value
} else if (group === 'explicit') {
mediaWhere['explicit'] = true
} }
return { return {