Compose: Don't focus on spoiler input on first render

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
environments/review-compose-fo-b0i99c/deployments/3757
marcin mikołajczak 1 year ago
parent 857c18f458
commit c942a101ec

@ -89,6 +89,7 @@ const ComposeForm = <ID extends string>({ id, shouldCondense, autoFocus, clickab
const [composeFocused, setComposeFocused] = useState(false);
const firstRender = useRef(true);
const formRef = useRef<HTMLDivElement>(null);
const spoilerTextRef = useRef<AutosuggestInput>(null);
const autosuggestTextareaRef = useRef<AutosuggestTextarea>(null);
@ -214,10 +215,13 @@ const ComposeForm = <ID extends string>({ id, shouldCondense, autoFocus, clickab
}, []);
useEffect(() => {
if (spoiler && !prevSpoiler) {
focusSpoilerInput();
if (firstRender.current) {
focusTextarea();
firstRender.current = false;
} else if (!spoiler && prevSpoiler) {
focusTextarea();
} else if (spoiler && !prevSpoiler) {
focusSpoilerInput();
}
}, [spoiler]);
@ -320,21 +324,22 @@ const ComposeForm = <ID extends string>({ id, shouldCondense, autoFocus, clickab
id='compose-textarea'
>
{
!condensed &&
<Stack space={4} className='compose-form__modifiers'>
<UploadForm composeId={id} />
<PollForm composeId={id} />
<SpoilerInput
composeId={id}
onSuggestionsFetchRequested={onSuggestionsFetchRequested}
onSuggestionsClearRequested={onSuggestionsClearRequested}
onSuggestionSelected={onSpoilerSuggestionSelected}
ref={spoilerTextRef}
/>
<ScheduleFormContainer composeId={id} />
</Stack>
!condensed && (
<Stack space={4} className='compose-form__modifiers'>
<UploadForm composeId={id} />
<PollForm composeId={id} />
<SpoilerInput
composeId={id}
onSuggestionsFetchRequested={onSuggestionsFetchRequested}
onSuggestionsClearRequested={onSuggestionsClearRequested}
onSuggestionSelected={onSpoilerSuggestionSelected}
ref={spoilerTextRef}
/>
<ScheduleFormContainer composeId={id} />
</Stack>
)
}
</AutosuggestTextarea>

@ -22,4 +22,4 @@ export { useRegistrationStatus } from './useRegistrationStatus';
export { useSettings } from './useSettings';
export { useSoapboxConfig } from './useSoapboxConfig';
export { useSystemTheme } from './useSystemTheme';
export { useTheme } from './useTheme';
export { useTheme } from './useTheme';

Loading…
Cancel
Save