extend default preferences from config
continuous-integration/drone/push Build is failing Details

This commit is contained in:
Martti Malmi 2024-01-12 14:37:13 +02:00
parent 6657161a32
commit 1aaff4f553
6 changed files with 62 additions and 51 deletions

View File

@ -23,6 +23,9 @@
"moderation": true, "moderation": true,
"defaultFollows": ["npub1sn0rtcjcf543gj4wsg7fa59s700d5ztys5ctj0g69g2x6802npjqhjjtws"] "defaultFollows": ["npub1sn0rtcjcf543gj4wsg7fa59s700d5ztys5ctj0g69g2x6802npjqhjjtws"]
}, },
"defaultPreferences": {
"hideMutedNotes": false
},
"media": { "media": {
"bypassImgProxyError": false, "bypassImgProxyError": false,
"preferLargeMedia": true "preferLargeMedia": true

View File

@ -19,6 +19,9 @@
"notificationGraph": false, "notificationGraph": false,
"communityLeaders": true "communityLeaders": true
}, },
"defaultPreferences": {
"hideMutedNotes": true
},
"signUp": { "signUp": {
"moderation": false, "moderation": false,
"defaultFollows": ["npub1wnwwcv0a8wx0m9stck34ajlwhzuua68ts8mw3kjvspn42dcfyjxs4n95l8"] "defaultFollows": ["npub1wnwwcv0a8wx0m9stck34ajlwhzuua68ts8mw3kjvspn42dcfyjxs4n95l8"]

View File

@ -61,7 +61,7 @@ declare const CONFIG: {
communityLeaders: boolean; communityLeaders: boolean;
}; };
defaultPreferences: { defaultPreferences: {
checkSigs: boolean; hideMutedNotes: boolean;
}; };
signUp: { signUp: {
moderation: boolean; moderation: boolean;

View File

@ -99,6 +99,10 @@
z-index: 1; z-index: 1;
} }
.reaction-pill {
user-select: none;
}
.reaction-pill:not(.reacted):not(:hover) { .reaction-pill:not(.reacted):not(:hover) {
color: var(--font-secondary-color); color: var(--font-secondary-color);
} }

View File

@ -13,7 +13,7 @@ import messages from "./messages";
const PreferencesPage = () => { const PreferencesPage = () => {
const { formatMessage } = useIntl(); const { formatMessage } = useIntl();
const { id, perf } = useLogin(s => ({ id: s.id, perf: s.appData.item.preferences })); const { id, pref } = useLogin(s => ({ id: s.id, pref: s.appData.item.preferences }));
const { lang } = useLocale(); const { lang } = useLocale();
return ( return (
@ -31,7 +31,7 @@ const PreferencesPage = () => {
value={lang} value={lang}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
language: e.target.value, language: e.target.value,
}) })
} }
@ -52,10 +52,10 @@ const PreferencesPage = () => {
</h4> </h4>
<div> <div>
<select <select
value={perf.theme} value={pref.theme}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
theme: e.target.value, theme: e.target.value,
} as UserPreferences) } as UserPreferences)
}> }>
@ -77,10 +77,10 @@ const PreferencesPage = () => {
</h4> </h4>
<div> <div>
<select <select
value={perf.defaultRootTab} value={pref.defaultRootTab}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
defaultRootTab: e.target.value, defaultRootTab: e.target.value,
} as UserPreferences) } as UserPreferences)
}> }>
@ -108,8 +108,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.telemetry ?? true} checked={pref.telemetry ?? true}
onChange={e => updatePreferences(id, { ...perf, telemetry: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, telemetry: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -124,10 +124,10 @@ const PreferencesPage = () => {
<div className="w-max"> <div className="w-max">
<select <select
className="w-max" className="w-max"
value={perf.autoLoadMedia} value={pref.autoLoadMedia}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
autoLoadMedia: e.target.value, autoLoadMedia: e.target.value,
} as UserPreferences) } as UserPreferences)
}> }>
@ -156,8 +156,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.checkSigs} checked={pref.checkSigs}
onChange={e => updatePreferences(id, { ...perf, checkSigs: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, checkSigs: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -173,8 +173,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.autoTranslate} checked={pref.autoTranslate}
onChange={e => updatePreferences(id, { ...perf, autoTranslate: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, autoTranslate: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -190,9 +190,9 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="number" type="number"
defaultValue={perf.pow} defaultValue={pref.pow}
min={0} min={0}
onChange={e => updatePreferences(id, { ...perf, pow: parseInt(e.target.value || "0") })} onChange={e => updatePreferences(id, { ...pref, pow: parseInt(e.target.value || "0") })}
/> />
</div> </div>
</div> </div>
@ -203,9 +203,9 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="number" type="number"
defaultValue={perf.defaultZapAmount} defaultValue={pref.defaultZapAmount}
min={1} min={1}
onChange={e => updatePreferences(id, { ...perf, defaultZapAmount: parseInt(e.target.value || "0") })} onChange={e => updatePreferences(id, { ...pref, defaultZapAmount: parseInt(e.target.value || "0") })}
/> />
</div> </div>
</div> </div>
@ -221,8 +221,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.showBadges ?? false} checked={pref.showBadges ?? false}
onChange={e => updatePreferences(id, { ...perf, showBadges: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, showBadges: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -238,8 +238,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.showStatus ?? true} checked={pref.showStatus ?? true}
onChange={e => updatePreferences(id, { ...perf, showStatus: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, showStatus: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -255,8 +255,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.autoZap} checked={pref.autoZap}
onChange={e => updatePreferences(id, { ...perf, autoZap: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, autoZap: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -273,17 +273,17 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.imgProxyConfig !== null} checked={pref.imgProxyConfig !== null}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
imgProxyConfig: e.target.checked ? DefaultImgProxy : undefined, imgProxyConfig: e.target.checked ? DefaultImgProxy : undefined,
}) })
} }
/> />
</div> </div>
</div> </div>
{perf.imgProxyConfig && ( {pref.imgProxyConfig && (
<div className="w-max form"> <div className="w-max form">
<div className="form-group"> <div className="form-group">
<div> <div>
@ -292,7 +292,7 @@ const PreferencesPage = () => {
<div className="w-max"> <div className="w-max">
<input <input
type="text" type="text"
value={perf.imgProxyConfig?.url} value={pref.imgProxyConfig?.url}
placeholder={formatMessage({ placeholder={formatMessage({
defaultMessage: "URL..", defaultMessage: "URL..",
id: "cQfLWb", id: "cQfLWb",
@ -300,9 +300,9 @@ const PreferencesPage = () => {
})} })}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
imgProxyConfig: { imgProxyConfig: {
...unwrap(perf.imgProxyConfig), ...unwrap(pref.imgProxyConfig),
url: e.target.value, url: e.target.value,
}, },
}) })
@ -317,7 +317,7 @@ const PreferencesPage = () => {
<div className="w-max"> <div className="w-max">
<input <input
type="password" type="password"
value={perf.imgProxyConfig?.key} value={pref.imgProxyConfig?.key}
placeholder={formatMessage({ placeholder={formatMessage({
defaultMessage: "Hex Key..", defaultMessage: "Hex Key..",
id: "H+vHiz", id: "H+vHiz",
@ -325,9 +325,9 @@ const PreferencesPage = () => {
})} })}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
imgProxyConfig: { imgProxyConfig: {
...unwrap(perf.imgProxyConfig), ...unwrap(pref.imgProxyConfig),
key: e.target.value, key: e.target.value,
}, },
}) })
@ -342,7 +342,7 @@ const PreferencesPage = () => {
<div className="w-max"> <div className="w-max">
<input <input
type="password" type="password"
value={perf.imgProxyConfig?.salt} value={pref.imgProxyConfig?.salt}
placeholder={formatMessage({ placeholder={formatMessage({
defaultMessage: "Hex Salt..", defaultMessage: "Hex Salt..",
id: "TpgeGw", id: "TpgeGw",
@ -350,9 +350,9 @@ const PreferencesPage = () => {
})} })}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
imgProxyConfig: { imgProxyConfig: {
...unwrap(perf.imgProxyConfig), ...unwrap(pref.imgProxyConfig),
salt: e.target.value, salt: e.target.value,
}, },
}) })
@ -375,8 +375,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.enableReactions} checked={pref.enableReactions}
onChange={e => updatePreferences(id, { ...perf, enableReactions: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, enableReactions: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -389,11 +389,11 @@ const PreferencesPage = () => {
</small> </small>
<input <input
type="text" type="text"
value={perf.reactionEmoji} value={pref.reactionEmoji}
onChange={e => { onChange={e => {
const split = e.target.value.match(/[\p{L}\S]{1}/u); const split = e.target.value.match(/[\p{L}\S]{1}/u);
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
reactionEmoji: split?.[0] ?? "", reactionEmoji: split?.[0] ?? "",
}); });
}} }}
@ -411,8 +411,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.confirmReposts} checked={pref.confirmReposts}
onChange={e => updatePreferences(id, { ...perf, confirmReposts: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, confirmReposts: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -428,8 +428,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.autoShowLatest} checked={pref.autoShowLatest}
onChange={e => updatePreferences(id, { ...perf, autoShowLatest: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, autoShowLatest: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -441,10 +441,10 @@ const PreferencesPage = () => {
<FormattedMessage {...messages.FileUploadHelp} /> <FormattedMessage {...messages.FileUploadHelp} />
</small> </small>
<select <select
value={perf.fileUploader} value={pref.fileUploader}
onChange={e => onChange={e =>
updatePreferences(id, { updatePreferences(id, {
...perf, ...pref,
fileUploader: e.target.value, fileUploader: e.target.value,
} as UserPreferences) } as UserPreferences)
}> }>
@ -469,8 +469,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.showDebugMenus} checked={pref.showDebugMenus}
onChange={e => updatePreferences(id, { ...perf, showDebugMenus: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, showDebugMenus: e.target.checked })}
/> />
</div> </div>
</div> </div>
@ -486,8 +486,8 @@ const PreferencesPage = () => {
<div> <div>
<input <input
type="checkbox" type="checkbox"
checked={perf.hideMutedNotes} checked={pref.hideMutedNotes}
onChange={e => updatePreferences(id, { ...perf, hideMutedNotes: e.target.checked })} onChange={e => updatePreferences(id, { ...pref, hideMutedNotes: e.target.checked })}
/> />
</div> </div>
</div> </div>

View File

@ -122,4 +122,5 @@ export const DefaultPreferences = {
checkSigs: true, checkSigs: true,
autoTranslate: true, autoTranslate: true,
hideMutedNotes: false, hideMutedNotes: false,
...CONFIG.defaultPreferences
} as UserPreferences; } as UserPreferences;