Add option to not automatically unfold content warnings matching a regexp
Fixes #678
This commit is contained in:
@@ -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 }) => (
|
||||
|
@@ -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) });
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user