about summary refs log tree commit diff
path: root/src/components/KeyboardPadding.android.tsx
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-05-23 10:01:31 -0700
committerGitHub <noreply@github.com>2024-05-23 10:01:31 -0700
commit5217876f241a991e55d789cd5faa8d8ab1890d1b (patch)
tree274a75717f646acb3a304bdac1710d7b5ea0e579 /src/components/KeyboardPadding.android.tsx
parent3d1ed04a70aff9c08b713392ac0a4d3856ae16e9 (diff)
downloadvoidsky-5217876f241a991e55d789cd5faa8d8ab1890d1b.tar.zst
Add padding to dialogs when keyboard is open on Android (#4182)
* add keyboard padding to android dialogs

* missing `keyboardDismissMode` for `ScrollableInner`

* add to `MutedWords`

* add to `LabelsOnMe`
Diffstat (limited to 'src/components/KeyboardPadding.android.tsx')
-rw-r--r--src/components/KeyboardPadding.android.tsx31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/components/KeyboardPadding.android.tsx b/src/components/KeyboardPadding.android.tsx
new file mode 100644
index 000000000..40dec3001
--- /dev/null
+++ b/src/components/KeyboardPadding.android.tsx
@@ -0,0 +1,31 @@
+import React from 'react'
+import {useKeyboardHandler} from 'react-native-keyboard-controller'
+import Animated, {
+  useAnimatedStyle,
+  useSharedValue,
+} from 'react-native-reanimated'
+
+export function KeyboardPadding({maxHeight}: {maxHeight?: number}) {
+  const keyboardHeight = useSharedValue(0)
+
+  useKeyboardHandler(
+    {
+      onMove: e => {
+        'worklet'
+
+        if (maxHeight && e.height > maxHeight) {
+          keyboardHeight.value = maxHeight
+        } else {
+          keyboardHeight.value = e.height
+        }
+      },
+    },
+    [maxHeight],
+  )
+
+  const animatedStyle = useAnimatedStyle(() => ({
+    height: keyboardHeight.value,
+  }))
+
+  return <Animated.View style={animatedStyle} />
+}