pl-fe: url privacy settings page

Signed-off-by: mkljczk <git@mkljczk.pl>
This commit is contained in:
mkljczk
2025-03-09 13:18:16 +01:00
parent 04ecc47822
commit 14c1e35bca

View File

@ -1,7 +1,6 @@
import React, { useEffect } from 'react';
import React, { useEffect, useState } from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { changeSetting } from 'pl-fe/actions/settings';
import List, { ListItem } from 'pl-fe/components/list';
import Button from 'pl-fe/components/ui/button';
import Card, { CardBody, CardHeader, CardTitle } from 'pl-fe/components/ui/card';
@ -10,11 +9,10 @@ import Form from 'pl-fe/components/ui/form';
import FormActions from 'pl-fe/components/ui/form-actions';
import FormGroup from 'pl-fe/components/ui/form-group';
import Input from 'pl-fe/components/ui/input';
import Toggle from 'pl-fe/components/ui/toggle';
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
import { useSettings } from 'pl-fe/hooks/use-settings';
import SettingToggle from '../settings/components/setting-toggle';
const messages = defineMessages({
urlPrivacy: { id: 'settings.url_privacy', defaultMessage: 'URL privacy' },
rulesUrlPlaceholder: { id: 'url_privacy.rules_url.placeholder', defaultMessage: 'Rules URL' },
@ -25,15 +23,18 @@ const UrlPrivacy = () => {
const dispatch = useAppDispatch();
const intl = useIntl();
const settings = useSettings();
const { urlPrivacy } = useSettings();
const [clearLinksInCompose, setClearLinksInCompose] = useState(urlPrivacy.clearLinksInCompose);
const [clearLinksInContent, setClearLinksInContent] = useState(urlPrivacy.clearLinksInContent);
const [allowReferralMarketing, setAllowReferralMarketing] = useState(urlPrivacy.allowReferralMarketing);
const [hashUrl, setHashUrl] = useState(urlPrivacy.hashUrl);
const [rulesUrl, setRulesUrl] = useState(urlPrivacy.rulesUrl);
useEffect(() => {
}, [dispatch]);
const onToggleChange = (key: string[], checked: boolean) => {
dispatch(changeSetting(key, checked));
};
return (
<Column label={intl.formatMessage(messages.urlPrivacy)} transparent withHeader={false}>
<Card className='space-y-4' variant='rounded'>
@ -45,20 +46,15 @@ const UrlPrivacy = () => {
<Form>
<List>
<ListItem label={<FormattedMessage id='url_privacy.clear_links_in_compose' defaultMessage='Suggest removing tracking parameters when composing a post' />}>
<SettingToggle settings={settings} settingPath={['urlPrivacy', 'clearLinksInCompose']} onChange={onToggleChange} />
<Toggle checked={clearLinksInCompose} onChange={({ target }) => setClearLinksInCompose(target.checked)} />
</ListItem>
<ListItem label={<FormattedMessage id='url_privacy.clear_links_in_content' defaultMessage='Remove tracking parameters from displayed posts' />}>
<SettingToggle settings={settings} settingPath={['urlPrivacy', 'clearLinksInContent']} onChange={onToggleChange} />
<Toggle checked={clearLinksInContent} onChange={({ target }) => setClearLinksInContent(target.checked)} />
</ListItem>
<ListItem label={<FormattedMessage id='url_privacy.allow_referral_marketing' defaultMessage='Make exception for referral marketing parameters' />}>
<SettingToggle
settings={settings}
settingPath={['urlPrivacy', 'allowReferralMarketing']}
onChange={onToggleChange}
disabled={!(settings.urlPrivacy.clearLinksInCompose || settings.urlPrivacy.clearLinksInContent)}
/>
<Toggle checked={allowReferralMarketing} onChange={({ target }) => setAllowReferralMarketing(target.checked)} disabled={!clearLinksInCompose && !clearLinksInContent} />
</ListItem>
</List>
@ -69,8 +65,8 @@ const UrlPrivacy = () => {
<Input
type='text'
placeholder={intl.formatMessage(messages.rulesUrlPlaceholder)}
value={settings.urlPrivacy.rulesUrl}
// onChange={handleChange('tileServer', (e) => e.target.value)}
value={rulesUrl}
onChange={({ target }) => setRulesUrl(target.value)}
/>
</FormGroup>
@ -81,8 +77,8 @@ const UrlPrivacy = () => {
<Input
type='text'
placeholder={intl.formatMessage(messages.hashUrlPlaceholder)}
value={settings.urlPrivacy.rulesUrl}
// onChange={handleChange('tileServer', (e) => e.target.value)}
value={hashUrl}
onChange={({ target }) => setHashUrl(target.value)}
/>
</FormGroup>