Add option to not automatically unfold content warnings matching a regexp

Fixes #678
This commit is contained in:
Thibaut Girka
2018-08-28 17:16:30 +02:00
committed by ThibG
parent 5c400a2842
commit c6942a5283
5 changed files with 52 additions and 3 deletions

View File

@@ -17,6 +17,7 @@ const messages = defineMessages({
side_arm_keep: { id: 'settings.side_arm_reply_mode.keep', defaultMessage: 'Keep secondary toot button to set privacy' },
side_arm_copy: { id: 'settings.side_arm_reply_mode.copy', defaultMessage: 'Copy privacy setting of the toot being replied to' },
side_arm_restrict: { id: 'settings.side_arm_reply_mode.restrict', defaultMessage: 'Restrict privacy setting to that of the toot being replied to' },
regexp: { id: 'settings.content_warnings.regexp', defaultMessage: 'Regular expression' },
});
@injectIntl
@@ -122,7 +123,7 @@ export default class LocalSettingsPage extends React.PureComponent {
</section>
</div>
),
({ onChange, settings }) => (
({ intl, onChange, settings }) => (
<div className='glitch local-settings__page content_warnings'>
<h1><FormattedMessage id='settings.content_warnings' defaultMessage='Content warnings' /></h1>
<LocalSettingsPageItem
@@ -133,6 +134,16 @@ export default class LocalSettingsPage extends React.PureComponent {
>
<FormattedMessage id='settings.enable_content_warnings_auto_unfold' defaultMessage='Automatically unfold content-warnings' />
</LocalSettingsPageItem>
<LocalSettingsPageItem
settings={settings}
item={['content_warnings', 'filter']}
id='mastodon-settings--content_warnings-auto_unfold'
onChange={onChange}
dependsOn={[['content_warnings', 'auto_unfold']]}
placeholder={intl.formatMessage(messages.regexp)}
>
<FormattedMessage id='settings.content_warnings_filter' defaultMessage='Content warnings to not automatically unfold:' />
</LocalSettingsPageItem>
</div>
),
({ onChange, settings }) => (

View File

@@ -38,6 +38,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import { HotKeys } from 'react-hotkeys';
import { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/util/initial_state';
import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from 'flavours/glitch/util/fullscreen';
import { autoUnfoldCW } from 'flavours/glitch/util/content_warning';
const messages = defineMessages({
deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
@@ -82,7 +83,7 @@ export default class Status extends ImmutablePureComponent {
state = {
fullscreen: false,
isExpanded: this.props.settings.getIn(['content_warnings', 'auto_unfold']),
isExpanded: undefined,
threadExpanded: undefined,
};
@@ -95,9 +96,14 @@ export default class Status extends ImmutablePureComponent {
}
componentWillReceiveProps (nextProps) {
if (this.state.isExpanded === undefined) {
const isExpanded = autoUnfoldCW(nextProps.settings, nextProps.status);
if (isExpanded !== undefined) this.setState({ isExpanded: isExpanded });
}
if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) {
this._scrolledIntoView = false;
this.props.dispatch(fetchStatus(nextProps.params.statusId));
this.setState({ isExpanded: autoUnfoldCW(nextProps.settings, nextProps.status) });
}
}