pl-fe: improve defaultSettings handling
Signed-off-by: mkljczk <git@mkljczk.pl>
This commit is contained in:
@ -55,7 +55,7 @@ const messages = defineMessages({
|
||||
|
||||
type ValueGetter<T1 = Element, T2 = any> = (e: React.ChangeEvent<T1>) => T2;
|
||||
type StreamItemConfigPath = ['promoPanel', 'items'] | ['navlinks', 'homeFooter'] | ['cryptoAddresses'];
|
||||
type ThemeChangeHandler = (theme: string) => void;
|
||||
type ThemeChangeHandler = (theme: 'system' | 'light' | 'dark' | 'black') => void;
|
||||
|
||||
const PlFeConfigEditor: React.FC = () => {
|
||||
const intl = useIntl();
|
||||
@ -189,7 +189,7 @@ const PlFeConfigEditor: React.FC = () => {
|
||||
<List>
|
||||
<ListItem label={<FormattedMessage id='plfe_config.fields.theme_label' defaultMessage='Default theme' />}>
|
||||
<ThemeSelector
|
||||
value={plFe.defaultSettings?.themeMode}
|
||||
value={plFe.defaultSettings?.themeMode || 'system'}
|
||||
onChange={handleThemeChange}
|
||||
/>
|
||||
</ListItem>
|
||||
|
||||
@ -13,7 +13,7 @@ const messages = defineMessages({
|
||||
|
||||
interface IThemeSelector {
|
||||
value: string;
|
||||
onChange: (value: string) => void;
|
||||
onChange: (value: 'system' | 'light' | 'dark' | 'black') => void;
|
||||
}
|
||||
|
||||
/** Pure theme selector. */
|
||||
@ -36,7 +36,7 @@ const ThemeSelector: React.FC<IThemeSelector> = ({ value, onChange }) => {
|
||||
}, [value]);
|
||||
|
||||
const handleChange: React.ChangeEventHandler<HTMLSelectElement> = e => {
|
||||
onChange(e.target.value);
|
||||
onChange(e.target.value as any);
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
@ -13,7 +13,7 @@ import Input from 'pl-fe/components/ui/input';
|
||||
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
|
||||
import { useSettings } from 'pl-fe/hooks/use-settings';
|
||||
|
||||
import SettingToggle from '../notifications/components/setting-toggle';
|
||||
import SettingToggle from '../settings/components/setting-toggle';
|
||||
|
||||
const messages = defineMessages({
|
||||
urlPrivacy: { id: 'settings.url_privacy', defaultMessage: 'URL privacy' },
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import trimStart from 'lodash/trimStart';
|
||||
import * as v from 'valibot';
|
||||
|
||||
import { settingsSchema } from 'pl-fe/schemas/pl-fe/settings';
|
||||
import { coerceObject, filteredArray } from 'pl-fe/schemas/utils';
|
||||
|
||||
const promoPanelItemSchema = coerceObject({
|
||||
@ -54,7 +55,7 @@ const plFeConfigSchema = coerceObject({
|
||||
v.record(v.string(), v.string()),
|
||||
)), null),
|
||||
copyright: v.fallback(v.string(), `♥${new Date().getFullYear()}. Copying is an act of love. Please copy and share.`),
|
||||
defaultSettings: v.fallback(v.record(v.string(), v.any()), {}),
|
||||
defaultSettings: v.fallback(v.partial(settingsSchema), {}),
|
||||
gdpr: v.fallback(v.boolean(), false),
|
||||
gdprUrl: v.fallback(v.string(), ''),
|
||||
greentext: v.fallback(v.boolean(), false),
|
||||
|
||||
@ -39,7 +39,7 @@ const settingsSchema = v.object({
|
||||
showWrenchButton: v.fallback(v.boolean(), false),
|
||||
urlPrivacy: coerceObject({
|
||||
clearLinksInCompose: v.fallback(v.boolean(), true),
|
||||
clearLinksInContent: v.fallback(v.boolean(), true),
|
||||
clearLinksInContent: v.fallback(v.boolean(), false),
|
||||
allowReferralMarketing: v.fallback(v.boolean(), false),
|
||||
rulesUrl: v.fallback(v.string(), ''),
|
||||
hashUrl: v.fallback(v.string(), ''),
|
||||
|
||||
@ -15,7 +15,6 @@
|
||||
import { URLPurify, type SerializedRules } from '@mkljczk/url-purify';
|
||||
|
||||
import KVStore from 'pl-fe/storage/kv-store';
|
||||
import { store } from 'pl-fe/store';
|
||||
|
||||
// Adapted from ClearURLs Rules
|
||||
// https://github.com/ClearURLs/Rules/blob/master/data.min.json
|
||||
@ -91,16 +90,16 @@ const DEFAULT_RULESET: SerializedRules = {
|
||||
|
||||
const Purify = new URLPurify({
|
||||
rulesFromMemory: DEFAULT_RULESET,
|
||||
onFetchedRules: (hash, rules) => {
|
||||
const me = store.getState().auth.me;
|
||||
// onFetchedRules: (hash, rules) => {
|
||||
// const me = store.getState().auth.me;
|
||||
|
||||
KVStore.setItem('url-purify-rules:last', me || '');
|
||||
KVStore.setItem(`url-purify-rules:${me}`, {
|
||||
hash,
|
||||
rules,
|
||||
fetchedAt: Date.now(),
|
||||
});
|
||||
},
|
||||
// KVStore.setItem('url-purify-rules:last', me || '');
|
||||
// KVStore.setItem(`url-purify-rules:${me}`, {
|
||||
// hash,
|
||||
// rules,
|
||||
// fetchedAt: Date.now(),
|
||||
// });
|
||||
// },
|
||||
});
|
||||
|
||||
KVStore.getItem('url-purify-rules:last', (url: string) => {
|
||||
|
||||
Reference in New Issue
Block a user