Skip to content

Commit 64ff87f

Browse files
authored
Merge pull request Expensify#61691 from bernhardoj/fix/61328-keyboard-doesnt-show-after-refocus
Fix keyboard doesn't show when input is refocused after status emoji picker is closed
2 parents abf1d1b + 3b7ac06 commit 64ff87f

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

src/libs/focusAfterModalClose.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import type {TextInput} from 'react-native';
2+
import ComposerFocusManager from './ComposerFocusManager';
3+
import isWindowReadyToFocus from './isWindowReadyToFocus';
4+
5+
function focusAfterModalClose(textInput: TextInput | null) {
6+
if (!textInput) {
7+
return;
8+
}
9+
10+
Promise.all([ComposerFocusManager.isReadyToFocus(), isWindowReadyToFocus()]).then(() => {
11+
textInput?.focus();
12+
});
13+
}
14+
15+
export default focusAfterModalClose;

src/pages/settings/Profile/CustomStatus/StatusPage.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import useStyleUtils from '@hooks/useStyleUtils';
2121
import useTheme from '@hooks/useTheme';
2222
import useThemeStyles from '@hooks/useThemeStyles';
2323
import DateUtils from '@libs/DateUtils';
24+
import focusAfterModalClose from '@libs/focusAfterModalClose';
2425
import Navigation from '@libs/Navigation/Navigation';
2526
import {clearCustomStatus, clearDraftCustomStatus, updateCustomStatus, updateDraftCustomStatus} from '@userActions/User';
2627
import CONST from '@src/CONST';
@@ -36,7 +37,7 @@ function StatusPage() {
3637
const styles = useThemeStyles();
3738
const StyleUtils = useStyleUtils();
3839
const {translate} = useLocalize();
39-
const [draftStatus] = useOnyx(ONYXKEYS.CUSTOM_STATUS_DRAFT);
40+
const [draftStatus] = useOnyx(ONYXKEYS.CUSTOM_STATUS_DRAFT, {canBeMissing: true});
4041
const currentUserPersonalDetails = useCurrentUserPersonalDetails();
4142
const formRef = useRef<FormRef>(null);
4243
const [brickRoadIndicator, setBrickRoadIndicator] = useState<ValueOf<typeof CONST.BRICK_ROAD_INDICATOR_STATUS>>();
@@ -197,9 +198,7 @@ function StatusPage() {
197198
role={CONST.ROLE.PRESENTATION}
198199
defaultValue={defaultEmoji}
199200
style={styles.mb3}
200-
onModalHide={() => {
201-
inputRef.current?.focus();
202-
}}
201+
onModalHide={() => focusAfterModalClose(inputRef.current)}
203202
// eslint-disable-next-line @typescript-eslint/no-unused-vars
204203
onInputChange={(emoji: string): void => {}}
205204
/>

0 commit comments

Comments
 (0)