diff --git a/packages/pl-fe/src/features/pl-fe-config/index.tsx b/packages/pl-fe/src/features/pl-fe-config/index.tsx index 48d3dc118..7da9e4808 100644 --- a/packages/pl-fe/src/features/pl-fe-config/index.tsx +++ b/packages/pl-fe/src/features/pl-fe-config/index.tsx @@ -55,7 +55,7 @@ const messages = defineMessages({ type ValueGetter = (e: React.ChangeEvent) => 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 = () => { }> diff --git a/packages/pl-fe/src/features/ui/components/theme-selector.tsx b/packages/pl-fe/src/features/ui/components/theme-selector.tsx index ce6604982..86f090043 100644 --- a/packages/pl-fe/src/features/ui/components/theme-selector.tsx +++ b/packages/pl-fe/src/features/ui/components/theme-selector.tsx @@ -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 = ({ value, onChange }) => { }, [value]); const handleChange: React.ChangeEventHandler = e => { - onChange(e.target.value); + onChange(e.target.value as any); }; return ( diff --git a/packages/pl-fe/src/features/url-privacy/index.tsx b/packages/pl-fe/src/features/url-privacy/index.tsx index 8bc4a73e7..7f7de8ddf 100644 --- a/packages/pl-fe/src/features/url-privacy/index.tsx +++ b/packages/pl-fe/src/features/url-privacy/index.tsx @@ -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' }, diff --git a/packages/pl-fe/src/normalizers/pl-fe/pl-fe-config.ts b/packages/pl-fe/src/normalizers/pl-fe/pl-fe-config.ts index d93c6e6c4..09a6051bf 100644 --- a/packages/pl-fe/src/normalizers/pl-fe/pl-fe-config.ts +++ b/packages/pl-fe/src/normalizers/pl-fe/pl-fe-config.ts @@ -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), diff --git a/packages/pl-fe/src/schemas/pl-fe/settings.ts b/packages/pl-fe/src/schemas/pl-fe/settings.ts index e0fb07d3d..62a0d0d9d 100644 --- a/packages/pl-fe/src/schemas/pl-fe/settings.ts +++ b/packages/pl-fe/src/schemas/pl-fe/settings.ts @@ -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(), ''), diff --git a/packages/pl-fe/src/utils/url-purify.ts b/packages/pl-fe/src/utils/url-purify.ts index a3b32e405..185903562 100644 --- a/packages/pl-fe/src/utils/url-purify.ts +++ b/packages/pl-fe/src/utils/url-purify.ts @@ -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) => {