about summary refs log tree commit diff
path: root/src/components/KeyboardControllerPadding.android.tsx
diff options
context:
space:
mode:
authorSamuel Newman <mozzius@protonmail.com>2024-06-11 20:50:56 +0100
committerGitHub <noreply@github.com>2024-06-11 12:50:56 -0700
commit3d4b390a8a9c4a7c52354a0c7bd4bc0a8e12f9f8 (patch)
tree3ab59acd7cda6b1447df45d6e1518069fca985bb /src/components/KeyboardControllerPadding.android.tsx
parentaca0fa23ec72d66c7de44c5079dae188221f0378 (diff)
downloadvoidsky-3d4b390a8a9c4a7c52354a0c7bd4bc0a8e12f9f8.tar.zst
Only enable keyboard controller when necessary (#4483)
* Only enable keyboard controller when necessary

* make it screen only

* rm keyboard padding

* rm keyboardpadding file

* revert using keyboard controller in composer

* remove styles.outer (unnecessary for revert)

* continue to use keyboard padding in the report dialog for dms

---------

Co-authored-by: Hailey <me@haileyok.com>
Diffstat (limited to 'src/components/KeyboardControllerPadding.android.tsx')
-rw-r--r--src/components/KeyboardControllerPadding.android.tsx31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/components/KeyboardControllerPadding.android.tsx b/src/components/KeyboardControllerPadding.android.tsx
new file mode 100644
index 000000000..92ef1b0b0
--- /dev/null
+++ b/src/components/KeyboardControllerPadding.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 KeyboardControllerPadding({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} />
+}