Make Vibration.vibrate compatible with TurboModules (#27951)

Summary:
This PR fixes a compatibility issue with the Vibration module and TurboModules.
The TurboModules spec doesn't allow nullable arguments of type Number, causing the following problem:

![IMG_3758](https://user-images.githubusercontent.com/1247834/73803879-10be6f80-4790-11ea-92d4-a008f0007681.PNG)

## Changelog

[iOS] [Fixed] - Make Vibration library compatible with TurboModules.
Pull Request resolved: https://github.com/facebook/react-native/pull/27951

Test Plan:
Just submitted a PR to my own app to fix the issue [here](https://github.com/rainbow-me/rainbow/pull/340)

The problem should be reproducible on RNTester due to this line: https://github.com/facebook/react-native/blob/91f139b94118fe8db29728ea8ad855fc4a13f743/RNTester/js/examples/Vibration/VibrationExample.js#L66  and should be working on this branch.

Reviewed By: TheSavior

Differential Revision: D19761064

Pulled By: hramos

fbshipit-source-id: 84f6b62a2734cc09d450e906b5866d4e9ce61124
This commit is contained in:
Bruno Barbieri
2020-04-07 18:27:03 -07:00
committed by Facebook GitHub Bot
parent 8e48dc0555
commit 3904228704
7 changed files with 12 additions and 11 deletions
@@ -31,5 +31,5 @@ public abstract class NativeVibrationSpec extends ReactContextBaseJavaModule imp
public abstract void vibrateByPattern(ReadableArray pattern, double repeat);
@ReactMethod
public abstract void vibrate(Double pattern);
public abstract void vibrate(double pattern);
}
@@ -2399,7 +2399,7 @@ namespace facebook {
static facebook::jsi::Value __hostFunction_NativeVibrationSpecJSI_vibrate(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
return static_cast<JavaTurboModule&>(turboModule).invokeJavaMethod(rt, VoidKind, "vibrate", "(Ljava/lang/Double;)V", args, count);
return static_cast<JavaTurboModule&>(turboModule).invokeJavaMethod(rt, VoidKind, "vibrate", "(D)V", args, count);
}
static facebook::jsi::Value __hostFunction_NativeVibrationSpecJSI_vibrateByPattern(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
@@ -31,8 +31,8 @@ public class VibrationModule extends NativeVibrationSpec {
}
@Override
public void vibrate(Double durationDouble) {
int duration = (int) durationDouble.doubleValue();
public void vibrate(double durationDouble) {
int duration = (int) durationDouble;
Vibrator v = (Vibrator) getReactApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
if (v != null) {