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
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			31 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);
 |