Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: Save button must not be hidden behind keyboard on opening status… #56306

Closed
wants to merge 34 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
93260a6
tests branch
huult Dec 28, 2024
5d16ded
Merge remote-tracking branch 'upstream/main'
huult Dec 29, 2024
ef03e3d
Merge remote-tracking branch 'upstream/main'
huult Dec 30, 2024
6c803a5
Merge remote-tracking branch 'upstream/main'
huult Dec 30, 2024
a12d114
Merge remote-tracking branch 'upstream/main'
huult Jan 1, 2025
3e34abc
Merge remote-tracking branch 'upstream/main'
huult Jan 2, 2025
01d6b19
Merge remote-tracking branch 'upstream/main'
huult Jan 3, 2025
fca1e18
Merge remote-tracking branch 'upstream/main'
huult Jan 6, 2025
13f1d6a
Merge remote-tracking branch 'upstream/main'
huult Jan 7, 2025
9cf867a
Merge remote-tracking branch 'upstream/main'
huult Jan 7, 2025
e584261
Merge remote-tracking branch 'upstream/main'
huult Jan 8, 2025
209b15f
Merge remote-tracking branch 'upstream/main'
huult Jan 8, 2025
43c71b7
Merge remote-tracking branch 'upstream/main'
huult Jan 8, 2025
7142017
Merge remote-tracking branch 'upstream/main'
huult Jan 8, 2025
adb6426
Merge remote-tracking branch 'upstream/main'
huult Jan 8, 2025
0c58082
Merge remote-tracking branch 'upstream/main'
huult Jan 9, 2025
620d8ad
Merge remote-tracking branch 'upstream/main'
huult Jan 9, 2025
27674d2
Merge remote-tracking branch 'upstream/main'
huult Jan 13, 2025
1980ed5
:erge remote-tracking branch 'upstream/main'
huult Jan 14, 2025
4d75a0a
Merge remote-tracking branch 'upstream/main'
huult Jan 14, 2025
1b6864c
Merge remote-tracking branch 'upstream/main'
huult Jan 15, 2025
921c44e
Merge remote-tracking branch 'upstream/main'
huult Jan 15, 2025
691365c
Merge remote-tracking branch 'upstream/main'
huult Jan 16, 2025
8dd640d
Merge remote-tracking branch 'upstream/main'
huult Jan 16, 2025
695941c
Merge remote-tracking branch 'upstream/main'
huult Jan 20, 2025
f9bb038
Merge remote-tracking branch 'upstream/main'
huult Jan 22, 2025
efc527c
Merge remote-tracking branch 'upstream/main'
huult Jan 23, 2025
f46e797
Merge remote-tracking branch 'upstream/main'
huult Jan 26, 2025
0ddd6b4
Merge remote-tracking branch 'upstream/main'
huult Feb 4, 2025
2211aff
Merge remote-tracking branch 'upstream/main'
huult Feb 5, 2025
1eae07d
Merge remote-tracking branch 'upstream/main'
huult Feb 5, 2025
51f70c9
Merge remote-tracking branch 'upstream/main'
huult Feb 7, 2025
44572e5
Merge remote-tracking branch 'upstream/main'
huult Feb 10, 2025
b40fee9
Merge remote-tracking branch 'upstream/main'
huult Feb 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 3 additions & 8 deletions src/hooks/useResetComposerFocus.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import {useIsFocused} from '@react-navigation/native';
import type {MutableRefObject} from 'react';
import {useEffect, useRef} from 'react';
import {InteractionManager} from 'react-native';
import type {TextInput} from 'react-native';
import inputFocusResetHandler from '@libs/InputFocusResetHandler';

export default function useResetComposerFocus(inputRef: MutableRefObject<TextInput | null>) {
const isFocused = useIsFocused();
Expand All @@ -12,13 +12,8 @@ export default function useResetComposerFocus(inputRef: MutableRefObject<TextInp
if (!isFocused || !shouldResetFocusRef.current) {
return;
}
const interactionTask = InteractionManager.runAfterInteractions(() => {
inputRef.current?.focus(); // focus input again
shouldResetFocusRef.current = false;
});
return () => {
interactionTask.cancel();
};

inputFocusResetHandler.handleInputFocusReset(inputRef, shouldResetFocusRef);
}, [isFocused, inputRef]);

return {isFocused, shouldResetFocusRef};
Expand Down
18 changes: 18 additions & 0 deletions src/libs/InputFocusResetHandler/index.ios.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import {InteractionManager} from 'react-native';
import type InputFocusResetHandler from './types';

const inputFocusResetHandler: InputFocusResetHandler = {
handleInputFocusReset: (inputRef, shouldResetFocusRef) => {
if (!inputRef.current || !shouldResetFocusRef.current) {
return;
}

InteractionManager.runAfterInteractions(() => {
inputRef?.current?.focus();
const resetFocusRef = shouldResetFocusRef;
resetFocusRef.current = false;
});
},
};

export default inputFocusResetHandler;
15 changes: 15 additions & 0 deletions src/libs/InputFocusResetHandler/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type InputFocusResetHandler from './types';

const inputFocusResetHandler: InputFocusResetHandler = {
handleInputFocusReset: (inputRef, shouldResetFocusRef) => {
if (!inputRef.current || !shouldResetFocusRef.current) {
return;
}

inputRef?.current?.focus();
const resetFocusRef = shouldResetFocusRef;
resetFocusRef.current = false;
},
};

export default inputFocusResetHandler;
8 changes: 8 additions & 0 deletions src/libs/InputFocusResetHandler/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import type {MutableRefObject} from 'react';
import type {TextInput} from 'react-native';

type InputFocusResetHandler = {
handleInputFocusReset: (inputRef: MutableRefObject<TextInput | null>, shouldResetFocusRef: React.MutableRefObject<boolean>) => void;
};

export default InputFocusResetHandler;
Loading