[feature] Move use_blurhash to app settings, enable by default (#5)

Does what it says on the tin! This serves as a decent model (imo) for how to move something from Mastodon's rather opaque server-side settings to client settings.

Reviewed-on: https://codeberg.org/superseriousbusiness/masto-fe-standalone/pulls/5
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Co-committed-by: tobi <tobi.smethurst@protonmail.com>
This commit is contained in:
tobi
2024-12-27 11:54:18 +00:00
committed by tobi
parent 9f520d3608
commit 4df14235c6
11 changed files with 113 additions and 21 deletions
@@ -10,7 +10,6 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import { Blurhash } from 'flavours/glitch/components/blurhash';
import { Icon } from 'flavours/glitch/components/icon';
import { useBlurhash } from 'flavours/glitch/initial_state';
import { decode as decodeIDNA } from 'flavours/glitch/utils/idna';
const getHostname = url => {
@@ -49,6 +48,7 @@ export default class Card extends PureComponent {
onOpenMedia: PropTypes.func.isRequired,
compact: PropTypes.bool,
sensitive: PropTypes.bool,
useBlurhash: PropTypes.bool,
};
static defaultProps = {
@@ -138,7 +138,7 @@ export default class Card extends PureComponent {
}
render () {
const { card, compact } = this.props;
const { card, compact, useBlurhash } = this.props;
const { embedded, revealed } = this.state;
if (card === null) {
@@ -185,6 +185,7 @@ class DetailedStatus extends ImmutablePureComponent {
blurhash={attachment.get('blurhash')}
height={150}
onToggleVisibility={this.props.onToggleMediaVisibility}
useBlurhash={settings.getIn(['media', 'use_blurhash'])}
/>,
);
mediaIcons.push('music');
@@ -209,6 +210,7 @@ class DetailedStatus extends ImmutablePureComponent {
autoplay
visible={this.props.showMedia}
onToggleVisibility={this.props.onToggleMediaVisibility}
useBlurhash={settings.getIn(['media', 'use_blurhash'])}
/>,
);
mediaIcons.push('video-camera');
@@ -225,12 +227,19 @@ class DetailedStatus extends ImmutablePureComponent {
onOpenMedia={this.props.onOpenMedia}
visible={this.props.showMedia}
onToggleVisibility={this.props.onToggleMediaVisibility}
useBlurhash={settings.getIn(['media', 'use_blurhash'])}
/>,
);
mediaIcons.push('picture-o');
}
} else if (status.get('card')) {
media.push(<Card sensitive={status.get('sensitive')} onOpenMedia={this.props.onOpenMedia} card={status.get('card')} />);
media.push(
<Card
sensitive={status.get('sensitive')}
onOpenMedia={this.props.onOpenMedia}
card={status.get('card')}
useBlurhash={settings.getIn(['media', 'use_blurhash'])} />
);
mediaIcons.push('link');
}