95c8232109
the slight mismatch in hashtag regex between js and ruby was causing hashtag warning to be displayed for unlisted tweets when an invalid hashtag was entered exact version of ruby regex not possible in js as POSIX bracket expressions are not supported, this version approximates and doesn't give same unicode support
32 lines
1.4 KiB
JavaScript
32 lines
1.4 KiB
JavaScript
import React from 'react';
|
|
import { connect } from 'react-redux';
|
|
import Warning from '../components/warning';
|
|
import PropTypes from 'prop-types';
|
|
import { FormattedMessage } from 'react-intl';
|
|
import { me } from '../../../initial_state';
|
|
|
|
const APPROX_HASHTAG_RE = /(?:^|[^\/\)\w])#(\w*[a-zA-Z]\w*)/i;
|
|
|
|
const mapStateToProps = state => ({
|
|
needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),
|
|
hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && APPROX_HASHTAG_RE.test(state.getIn(['compose', 'text'])),
|
|
});
|
|
|
|
const WarningWrapper = ({ needsLockWarning, hashtagWarning }) => {
|
|
if (needsLockWarning) {
|
|
return <Warning message={<FormattedMessage id='compose_form.lock_disclaimer' defaultMessage='Your account is not {locked}. Anyone can follow you to view your follower-only posts.' values={{ locked: <a href='/settings/profile'><FormattedMessage id='compose_form.lock_disclaimer.lock' defaultMessage='locked' /></a> }} />} />;
|
|
}
|
|
if (hashtagWarning) {
|
|
return <Warning message={<FormattedMessage id='compose_form.hashtag_warning' defaultMessage="This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag." />} />;
|
|
}
|
|
|
|
return null;
|
|
};
|
|
|
|
WarningWrapper.propTypes = {
|
|
needsLockWarning: PropTypes.bool,
|
|
hashtagWarning: PropTypes.bool,
|
|
};
|
|
|
|
export default connect(mapStateToProps)(WarningWrapper);
|