60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-unsafe-call,
|
|
@typescript-eslint/no-unsafe-return,
|
|
@typescript-eslint/no-unsafe-assignment,
|
|
@typescript-eslint/no-unsafe-member-access
|
|
-- the settings store is not yet typed */
|
|
import { useCallback } from 'react';
|
|
|
|
import { FormattedMessage } from 'react-intl';
|
|
|
|
import { useAppSelector, useAppDispatch } from 'mastodon/store';
|
|
|
|
import { changeSetting } from '../../../actions/settings';
|
|
import SettingToggle from '../../notifications/components/setting_toggle';
|
|
|
|
export const ColumnSettings: React.FC = () => {
|
|
const settings = useAppSelector((state) => state.settings.get('home'));
|
|
|
|
const dispatch = useAppDispatch();
|
|
const onChange = useCallback(
|
|
(key: string, checked: boolean) => {
|
|
dispatch(changeSetting(['home', ...key], checked));
|
|
},
|
|
[dispatch],
|
|
);
|
|
|
|
return (
|
|
<div className='column-settings'>
|
|
<section>
|
|
<div className='column-settings__row'>
|
|
<SettingToggle
|
|
prefix='home_timeline'
|
|
settings={settings}
|
|
settingPath={['shows', 'reblog']}
|
|
onChange={onChange}
|
|
label={
|
|
<FormattedMessage
|
|
id='home.column_settings.show_reblogs'
|
|
defaultMessage='Show boosts'
|
|
/>
|
|
}
|
|
/>
|
|
|
|
<SettingToggle
|
|
prefix='home_timeline'
|
|
settings={settings}
|
|
settingPath={['shows', 'reply']}
|
|
onChange={onChange}
|
|
label={
|
|
<FormattedMessage
|
|
id='home.column_settings.show_replies'
|
|
defaultMessage='Show replies'
|
|
/>
|
|
}
|
|
/>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
);
|
|
};
|