Skip to content

Commit deb7a31

Browse files
authored
Merge pull request #1018 from synonymdev/fix/keyboard-back
fix(ui): improve useKeyboard hook
2 parents 9acf115 + 0350c09 commit deb7a31

File tree

3 files changed

+13
-25
lines changed

3 files changed

+13
-25
lines changed

src/hooks/keyboard.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ const useKeyboard = (): {
99
const [keyboardHeight, setKeyboardHeight] = useState(0);
1010

1111
useEffect(() => {
12+
const keyboardWillShowListener = RNKeyboard.addListener(
13+
// ios has keyboardWillShow, android doesn't
14+
Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow',
15+
() => {
16+
setKeyboardShown(true);
17+
},
18+
);
1219
const keyboardDidShowListener = RNKeyboard.addListener(
1320
'keyboardDidShow',
1421
(event: KeyboardEvent) => {
15-
setKeyboardShown(true);
1622
setKeyboardHeight(event.endCoordinates.height);
1723
},
1824
);
@@ -26,8 +32,9 @@ const useKeyboard = (): {
2632
);
2733

2834
return () => {
29-
keyboardDidHideListener.remove();
35+
keyboardWillShowListener.remove();
3036
keyboardDidShowListener.remove();
37+
keyboardDidHideListener.remove();
3138
};
3239
}, []);
3340

src/screens/Wallets/Receive/ReceiveDetails.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ const ReceiveDetails = ({
4747
const { t } = useTranslation('wallet');
4848
const { keyboardShown } = useKeyboard();
4949
const { isSmallScreen } = useScreenSize();
50-
const [isInputFocused, setIsInputFocused] = useState(false);
5150
const [showNumberPad, setShowNumberPad] = useState(false);
5251
const invoice = useSelector(receiveSelector);
5352
const unit = useSelector(balanceUnitSelector);
@@ -117,16 +116,14 @@ const ReceiveDetails = ({
117116
blurOnSubmit={true}
118117
returnKeyType="done"
119118
testID="ReceiveNote"
120-
onFocus={(): void => setIsInputFocused(true)}
121-
onBlur={(): void => setIsInputFocused(false)}
122119
onChangeText={(txt): void => {
123120
updateInvoice({ message: txt });
124121
}}
125122
/>
126123
</View>
127124
</View>
128125

129-
{!keyboardShown && !isInputFocused && (
126+
{!keyboardShown && (
130127
<AnimatedView
131128
style={styles.bottom}
132129
color="transparent"

src/screens/Wallets/Send/Recipient.tsx

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ const Recipient = ({
5454
const lightningBalance = useLightningBalance(false);
5555
const [decodedInvoice, setDecodedInvoice] = useState<TInvoice>();
5656
const [handledOsPaste, setHandledOsPaste] = useState(false);
57-
const [showImage, setShowImage] = useState(true);
5857
const selectedWallet = useSelector(selectedWalletSelector);
5958
const selectedNetwork = useSelector(selectedNetworkSelector);
6059
const transaction = useSelector(transactionSelector);
@@ -157,14 +156,6 @@ const Recipient = ({
157156
selectedWallet,
158157
]);
159158

160-
useEffect(() => {
161-
if (keyboardShown) {
162-
setShowImage(false);
163-
} else {
164-
setShowImage(true);
165-
}
166-
}, [keyboardShown]);
167-
168159
const handleScan = (): void => {
169160
navigation.navigate('Scanner');
170161
};
@@ -217,13 +208,7 @@ const Recipient = ({
217208
[index, value, selectedNetwork, selectedWallet, sdk, t],
218209
);
219210

220-
const onFocus = useCallback((): void => {
221-
setShowImage(false);
222-
}, []);
223-
224211
const onBlur = useCallback(async (): Promise<void> => {
225-
setShowImage(true);
226-
227212
//An OS Paste was triggered. No need to process onBlur data.
228213
if (handledOsPaste) {
229214
return;
@@ -326,11 +311,10 @@ const Recipient = ({
326311
</Caption13Up>
327312

328313
<AddressOrSlashpay
329-
style={[styles.input, !showImage && styles.inputKeyboard]}
314+
style={[styles.input, keyboardShown && styles.inputKeyboard]}
330315
value={transaction.lightningInvoice || address}
331316
slashTagsUrl={transaction.slashTagsUrl}
332317
onChangeText={onChangeText}
333-
onFocus={onFocus}
334318
onBlur={onBlur}
335319
testID="AddressOrSlashpay">
336320
<IconButton style={styles.inputAction} onPress={handleScan}>
@@ -348,8 +332,8 @@ const Recipient = ({
348332
</IconButton>
349333
</AddressOrSlashpay>
350334

351-
<View style={[styles.bottom, !showImage && styles.bottomKeyboard]}>
352-
{!keyboardShown && showImage && (
335+
<View style={[styles.bottom, keyboardShown && styles.bottomKeyboard]}>
336+
{!keyboardShown && (
353337
<AnimatedView
354338
style={styles.image}
355339
color="transparent"

0 commit comments

Comments
 (0)