diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-06-06 16:21:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-06 14:21:22 +0100 |
commit | 85e676257ec590b7fb05d9cc1e7ac352d7d89c09 (patch) | |
tree | 66b7f0cbb5fc9f14bd1e173fbdc3337fb4374e45 /src/view/shell/Composer.tsx | |
parent | 48796449eae4be825041d4d372e9f64f61529429 (diff) | |
download | voidsky-85e676257ec590b7fb05d9cc1e7ac352d7d89c09.tar.zst |
Composer - make sure android keyboard opens (#4390)
* keep trying to open keyboard until it's open * limit number of retries * keep the original 50ms one as well * Proper fix! * disable autoFocus if not visible * Reset derived state * Revert "Reset derived state" This reverts commit 71f57391ae78bac717282e699d1b83cbd87771eb. * Use derived state pattern * Rename for clarity --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Diffstat (limited to 'src/view/shell/Composer.tsx')
-rw-r--r-- | src/view/shell/Composer.tsx | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/view/shell/Composer.tsx b/src/view/shell/Composer.tsx index c80d7845b..1d656ca8f 100644 --- a/src/view/shell/Composer.tsx +++ b/src/view/shell/Composer.tsx @@ -1,4 +1,4 @@ -import React, {useLayoutEffect} from 'react' +import React, {useLayoutEffect, useState} from 'react' import {Modal, View} from 'react-native' import {GestureHandlerRootView} from 'react-native-gesture-handler' import {RootSiblingParent} from 'react-native-root-siblings' @@ -24,8 +24,16 @@ export const Composer = observer(function ComposerImpl({}: { const t = useTheme() const state = useComposerState() const ref = useComposerCancelRef() + const [isModalReady, setIsModalReady] = useState(false) const open = !!state + const [prevOpen, setPrevOpen] = useState(open) + if (open !== prevOpen) { + setPrevOpen(open) + if (!open) { + setIsModalReady(false) + } + } return ( <Modal @@ -34,10 +42,12 @@ export const Composer = observer(function ComposerImpl({}: { visible={open} presentationStyle="formSheet" animationType="slide" + onShow={() => setIsModalReady(true)} onRequestClose={() => ref.current?.onPressCancel()}> <View style={[t.atoms.bg, a.flex_1]}> <Providers open={open}> <ComposePost + isModalReady={isModalReady} cancelRef={ref} replyTo={state?.replyTo} onPost={state?.onPost} |