react-native-keyboard-controller 1.5.4 → 1.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,7 @@ Keyboard manager which works in identical way on both iOS and Android.
8
8
 
9
9
  ## Key features
10
10
 
11
- - mapping keyboard appearance to animated values 😎
11
+ - mapping keyboard movement to animated values 😎
12
12
  - missing `keyboardWillShow` / `keyboardWillHide` events are available on Android 😍
13
13
  - module for changing soft input mode on Android 🤔
14
14
  - reanimated support 🚀
@@ -79,7 +79,7 @@ using namespace facebook::react;
79
79
 
80
80
  // TODO: use built-in _eventEmitter once NativeAnimated module will use ModernEventemitter
81
81
  RCTBridge *bridge = [RCTBridge currentBridge];
82
- if (bridge) {
82
+ if (bridge && [bridge valueForKey:@"_jsThread"]) {
83
83
  KeyboardMoveEvent *keyboardMoveEvent =
84
84
  [[KeyboardMoveEvent alloc] initWithReactTag:@(self.tag)
85
85
  event:event
@@ -5,20 +5,24 @@ class KeyboardControllerViewManager: RCTViewManager {
5
5
  }
6
6
 
7
7
  override func view() -> (KeyboardControllerView) {
8
- return KeyboardControllerView(frame: CGRect.zero, eventDispatcher: bridge.eventDispatcher())
8
+ return KeyboardControllerView(frame: CGRect.zero, bridge: bridge)
9
9
  }
10
10
  }
11
11
 
12
12
  class KeyboardControllerView: UIView {
13
+ // internal variables
13
14
  private var keyboardObserver: KeyboardMovementObserver?
14
15
  private var eventDispatcher: RCTEventDispatcherProtocol
16
+ private var bridge: RCTBridge
17
+ // react props
15
18
  @objc var onKeyboardMoveStart: RCTDirectEventBlock?
16
19
  @objc var onKeyboardMove: RCTDirectEventBlock?
17
20
  @objc var onKeyboardMoveEnd: RCTDirectEventBlock?
18
21
  @objc var onKeyboardMoveInteractive: RCTDirectEventBlock?
19
22
 
20
- init(frame: CGRect, eventDispatcher: RCTEventDispatcherProtocol) {
21
- self.eventDispatcher = eventDispatcher
23
+ init(frame: CGRect, bridge: RCTBridge) {
24
+ self.bridge = bridge
25
+ eventDispatcher = bridge.eventDispatcher()
22
26
  super.init(frame: frame)
23
27
  }
24
28
 
@@ -43,6 +47,10 @@ class KeyboardControllerView: UIView {
43
47
  }
44
48
 
45
49
  func onEvent(event: NSString, height: NSNumber, progress: NSNumber) {
50
+ // we don't want to send event to JS before the JS thread is ready
51
+ if bridge.value(forKey: "_jsThread") == nil {
52
+ return
53
+ }
46
54
  eventDispatcher.send(
47
55
  KeyboardMoveEvent(
48
56
  reactTag: reactTag,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-keyboard-controller",
3
- "version": "1.5.4",
3
+ "version": "1.5.5",
4
4
  "description": "Keyboard manager which works in identical way on both iOS and Android",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",