e9a2f44899
## General - `setting.List`: returns full creator settings. Requires signature (i.e. you own the channel) - `setting.Get`: returns a public subset of the creator settings. No signature required, and it is mainly used by the GUI to determine the constraints of a channel (e.g. comments enabled? min tip requirements? etc.). Does not include private settings like "blocked words list". `doFetchCreatorSettings` will handle both of these. Clients that uses the stashed results (`settingsByChannelId`) just needs to be aware the result might not contain everything, depending on whether you own the channel or not. ## Misc Related Changes - Finally fix the reducer for COMMENT_FETCH_SETTINGS_COMPLETED to not purge the data on each call. - Change `doFetchCreatorSettings` to operate on a single channel instead of multiple. We ended up not using the multple mode anyway, so it was wasteful code trying to batch the promises. - `commentsDisabledChannelIds` is no longer needed. Previously, this was created just to differentiate between Creator (full) and Channel (subset) settings. It's cleaner to just use one object, so eliminated this. - Remove unused 'commentingEnabled'. ## Aside - There are now 2 ways to know if a channel has disabled comments: (1) from `comment.list` and `setting.Get|List`. Both of them updates `settingsByChannelId`, so it'll still be a single place for the GUI to check against.
48 lines
1.8 KiB
JavaScript
48 lines
1.8 KiB
JavaScript
import { connect } from 'react-redux';
|
|
import {
|
|
makeSelectClaimForUri,
|
|
makeSelectClaimIsMine,
|
|
selectMyChannelClaims,
|
|
selectFetchingMyChannels,
|
|
doSendTip,
|
|
} from 'lbry-redux';
|
|
import { doOpenModal, doSetActiveChannel } from 'redux/actions/app';
|
|
import { doCommentCreate, doFetchCreatorSettings } from 'redux/actions/comments';
|
|
import { selectUserVerifiedEmail } from 'redux/selectors/user';
|
|
import { selectActiveChannelClaim } from 'redux/selectors/app';
|
|
import { selectSettingsByChannelId } from 'redux/selectors/comments';
|
|
import { CommentCreate } from './view';
|
|
import { doToast } from 'redux/actions/notifications';
|
|
|
|
const select = (state, props) => ({
|
|
commentingEnabled: IS_WEB ? Boolean(selectUserVerifiedEmail(state)) : true,
|
|
claim: makeSelectClaimForUri(props.uri)(state),
|
|
channels: selectMyChannelClaims(state),
|
|
isFetchingChannels: selectFetchingMyChannels(state),
|
|
activeChannelClaim: selectActiveChannelClaim(state),
|
|
claimIsMine: makeSelectClaimIsMine(props.uri)(state),
|
|
settingsByChannelId: selectSettingsByChannelId(state),
|
|
});
|
|
|
|
const perform = (dispatch, ownProps) => ({
|
|
createComment: (comment, claimId, parentId, txid, payment_intent_id, environment) =>
|
|
dispatch(
|
|
doCommentCreate(
|
|
comment,
|
|
claimId,
|
|
parentId,
|
|
ownProps.uri,
|
|
ownProps.livestream,
|
|
txid,
|
|
payment_intent_id,
|
|
environment
|
|
)
|
|
),
|
|
openModal: (modal, props) => dispatch(doOpenModal(modal, props)),
|
|
setActiveChannel: (claimId) => dispatch(doSetActiveChannel(claimId)),
|
|
sendTip: (params, callback, errorCallback) => dispatch(doSendTip(params, false, callback, errorCallback, false)),
|
|
doToast: (options) => dispatch(doToast(options)),
|
|
doFetchCreatorSettings: (channelClaimId) => dispatch(doFetchCreatorSettings(channelClaimId)),
|
|
});
|
|
|
|
export default connect(select, perform)(CommentCreate);
|