diff --git a/src/ui/component/claimListDiscover/index.js b/src/ui/component/claimListDiscover/index.js index a781cfbb2..c8c1b12ca 100644 --- a/src/ui/component/claimListDiscover/index.js +++ b/src/ui/component/claimListDiscover/index.js @@ -1,12 +1,15 @@ +import * as SETTINGS from 'constants/settings'; import { connect } from 'react-redux'; import { doClaimSearch, selectLastClaimSearchUris, selectFetchingClaimSearch, doToggleTagFollow } from 'lbry-redux'; import { selectSubscriptions } from 'redux/selectors/subscriptions'; +import { makeSelectClientSetting } from 'redux/selectors/settings'; import ClaimListDiscover from './view'; const select = state => ({ uris: selectLastClaimSearchUris(state), loading: selectFetchingClaimSearch(state), subscribedChannels: selectSubscriptions(state), + showNsfw: makeSelectClientSetting(SETTINGS.SHOW_NSFW)(state), }); const perform = { diff --git a/src/ui/component/claimListDiscover/view.jsx b/src/ui/component/claimListDiscover/view.jsx index 6f9325650..f911e9e3c 100644 --- a/src/ui/component/claimListDiscover/view.jsx +++ b/src/ui/component/claimListDiscover/view.jsx @@ -3,6 +3,7 @@ import type { Node } from 'react'; import React, { useEffect, useState } from 'react'; import moment from 'moment'; import usePersistedState from 'util/use-persisted-state'; +import { MATURE_TAGS } from 'lbry-redux'; import { FormField } from 'component/common/form'; import ClaimList from 'component/claimList'; import Tag from 'component/tag'; @@ -35,10 +36,11 @@ type Props = { personal: boolean, doToggleTagFollow: string => void, meta?: Node, + showNsfw: boolean, }; function ClaimListDiscover(props: Props) { - const { doClaimSearch, uris, tags, loading, personal, injectedItem, meta, subscribedChannels } = props; + const { doClaimSearch, uris, tags, loading, personal, injectedItem, meta, subscribedChannels, showNsfw } = props; const [personalSort, setPersonalSort] = usePersistedState('claim-list-discover:personalSort', SEARCH_SORT_YOU); const [typeSort, setTypeSort] = usePersistedState('claim-list-discover:typeSort', TYPE_TRENDING); const [timeSort, setTimeSort] = usePersistedState('claim-list-discover:timeSort', TIME_WEEK); @@ -54,6 +56,7 @@ function ClaimListDiscover(props: Props) { order_by?: Array, channel_ids?: Array, release_time?: string, + not_tags?: Array, } = { page_size: PAGE_SIZE, page }; const newTags = tagsString.split(','); const newChannelIds = channelsIdString.split(','); @@ -64,6 +67,10 @@ function ClaimListDiscover(props: Props) { options.channel_ids = newChannelIds; } + if (!showNsfw) { + options.not_tags = MATURE_TAGS; + } + if (typeSort === TYPE_TRENDING) { options.order_by = ['trending_global', 'trending_mixed']; } else if (typeSort === TYPE_NEW) { @@ -81,7 +88,7 @@ function ClaimListDiscover(props: Props) { } doClaimSearch(20, options); - }, [personal, personalSort, typeSort, timeSort, doClaimSearch, page, tagsString, channelsIdString]); + }, [personal, personalSort, typeSort, timeSort, doClaimSearch, page, tagsString, channelsIdString, showNsfw]); function getLabel(type) { if (type === SEARCH_SORT_ALL) {