Fix prefs bug

- Some prefs returned can be uppercased, so make them lowercase
- `postingDefaultLanguage` probably doesn't work anymore every since masto.js upgrade. Sorry!
- Add additional checks to make sure prefs from server are not in unexpected forms
This commit is contained in:
Lim Chee Aun 2024-08-09 12:43:12 +08:00
parent 3be53f1ff9
commit 78ca5bbc0b
3 changed files with 21 additions and 9 deletions

View file

@ -289,10 +289,14 @@ function Compose({
focusTextarea(); focusTextarea();
setVisibility( setVisibility(
visibility === 'public' && prefs['posting:default:visibility'] visibility === 'public' && prefs['posting:default:visibility']
? prefs['posting:default:visibility'] ? prefs['posting:default:visibility'].toLowerCase()
: visibility, : visibility,
); );
setLanguage(language || prefs.postingDefaultLanguage || DEFAULT_LANG); setLanguage(
language ||
prefs['posting:default:language']?.toLowerCase() ||
DEFAULT_LANG,
);
setSensitive(sensitive && !!spoilerText); setSensitive(sensitive && !!spoilerText);
} else if (editStatus) { } else if (editStatus) {
const { visibility, language, sensitive, poll, mediaAttachments } = const { visibility, language, sensitive, poll, mediaAttachments } =
@ -316,7 +320,11 @@ function Compose({
focusTextarea(); focusTextarea();
spoilerTextRef.current.value = spoilerText; spoilerTextRef.current.value = spoilerText;
setVisibility(visibility); setVisibility(visibility);
setLanguage(language || presf.postingDefaultLanguage || DEFAULT_LANG); setLanguage(
language ||
prefs['posting:default:language']?.toLowerCase() ||
DEFAULT_LANG,
);
setSensitive(sensitive); setSensitive(sensitive);
if (composablePoll) setPoll(composablePoll); if (composablePoll) setPoll(composablePoll);
setMediaAttachments(mediaAttachments); setMediaAttachments(mediaAttachments);
@ -331,13 +339,13 @@ function Compose({
focusTextarea(); focusTextarea();
console.log('Apply prefs', prefs); console.log('Apply prefs', prefs);
if (prefs['posting:default:visibility']) { if (prefs['posting:default:visibility']) {
setVisibility(prefs['posting:default:visibility']); setVisibility(prefs['posting:default:visibility'].toLowerCase());
} }
if (prefs['posting:default:language']) { if (prefs['posting:default:language']) {
setLanguage(prefs['posting:default:language']); setLanguage(prefs['posting:default:language'].toLowerCase());
} }
if (prefs['posting:default:sensitive']) { if (prefs['posting:default:sensitive']) {
setSensitive(prefs['posting:default:sensitive']); setSensitive(!!prefs['posting:default:sensitive']);
} }
} }
if (draftStatus) { if (draftStatus) {
@ -360,7 +368,11 @@ function Compose({
focusTextarea(); focusTextarea();
if (spoilerText) spoilerTextRef.current.value = spoilerText; if (spoilerText) spoilerTextRef.current.value = spoilerText;
if (visibility) setVisibility(visibility); if (visibility) setVisibility(visibility);
setLanguage(language || prefs.postingDefaultLanguage || DEFAULT_LANG); setLanguage(
language ||
prefs['posting:default:language']?.toLowerCase() ||
DEFAULT_LANG,
);
if (sensitive !== null) setSensitive(sensitive); if (sensitive !== null) setSensitive(sensitive);
if (composablePoll) setPoll(composablePoll); if (composablePoll) setPoll(composablePoll);
if (mediaAttachments) setMediaAttachments(mediaAttachments); if (mediaAttachments) setMediaAttachments(mediaAttachments);

View file

@ -108,7 +108,7 @@ function MediaPost({
const readingExpandMedia = useMemo(() => { const readingExpandMedia = useMemo(() => {
// default | show_all | hide_all // default | show_all | hide_all
const prefs = store.account.get('preferences') || {}; const prefs = store.account.get('preferences') || {};
return prefs['reading:expand:media'] || 'default'; return prefs['reading:expand:media']?.toLowerCase() || 'default';
}, []); }, []);
const showSpoilerMedia = readingExpandMedia === 'show_all'; const showSpoilerMedia = readingExpandMedia === 'show_all';

View file

@ -407,7 +407,7 @@ function Status({
// default | show_all | hide_all // default | show_all | hide_all
// Ignore hide_all because it means hide *ALL* media including non-sensitive ones // Ignore hide_all because it means hide *ALL* media including non-sensitive ones
const prefs = store.account.get('preferences') || {}; const prefs = store.account.get('preferences') || {};
return prefs['reading:expand:media'] || 'default'; return prefs['reading:expand:media']?.toLowerCase() || 'default';
}, []); }, []);
// FOR TESTING: // FOR TESTING:
// const readingExpandSpoilers = true; // const readingExpandSpoilers = true;