-
Notifications
You must be signed in to change notification settings - Fork 375
/
KeyboardAvoidingView.tsx
48 lines (40 loc) · 1.19 KB
/
KeyboardAvoidingView.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import React, { useState } from 'react'
import {
KeyboardAvoidingView as KeyboardAvoiding,
KeyboardAvoidingViewProps,
Platform,
StatusBar,
} from 'react-native'
import { useMusicPlayer } from '@berty-tech/music-player'
import { HEIGHT_OF_PLAYER } from './StickyMusicPlayer'
interface CustomKeyboardAvoidingViewProps extends KeyboardAvoidingViewProps {
bottomFixedViewPadding?: number
}
export const KeyboardAvoidingView: React.FC<CustomKeyboardAvoidingViewProps> = ({
bottomFixedViewPadding = 0,
...props
}) => {
const {
player: { player },
} = useMusicPlayer()
const [initialMode] = useState(!!player)
const defaultAndroidStatusBarHeight = 24
let offset = Platform.OS === 'android' ? bottomFixedViewPadding : 0
if (
Platform.OS === 'android' &&
StatusBar.currentHeight &&
StatusBar.currentHeight > defaultAndroidStatusBarHeight
) {
offset += StatusBar.currentHeight - defaultAndroidStatusBarHeight
}
if (Platform.OS === 'android' && initialMode !== !!player) {
if (player) {
offset += HEIGHT_OF_PLAYER * 2
} else {
offset -= HEIGHT_OF_PLAYER
}
} else if (player) {
offset += HEIGHT_OF_PLAYER
}
return <KeyboardAvoiding {...props} keyboardVerticalOffset={offset} />
}