From 5ea7cecbd8600477664aa8015d7d1d5d3c897694 Mon Sep 17 00:00:00 2001 From: Mark Miyashita Date: Thu, 10 Aug 2017 18:50:02 -0700 Subject: [PATCH 1/3] Add react-native-shake-event package --- android/app/build.gradle | 1 + .../java/com/rnpackages/MainApplication.java | 2 ++ android/settings.gradle | 2 ++ ios/RNPackages.xcodeproj/project.pbxproj | 17 +++++++++++++++++ package.json | 1 + yarn.lock | 6 ++++++ 6 files changed, 29 insertions(+) diff --git a/android/app/build.gradle b/android/app/build.gradle index 38da6d3..575d427 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -137,6 +137,7 @@ android { } dependencies { + compile project(':react-native-shake-event') compile project(':react-native-video') compile project(':react-native-ux-cam') compile fileTree(dir: "libs", include: ["*.jar"]) diff --git a/android/app/src/main/java/com/rnpackages/MainApplication.java b/android/app/src/main/java/com/rnpackages/MainApplication.java index 59b51f0..7587c96 100644 --- a/android/app/src/main/java/com/rnpackages/MainApplication.java +++ b/android/app/src/main/java/com/rnpackages/MainApplication.java @@ -3,6 +3,7 @@ import android.app.Application; import com.facebook.react.ReactApplication; +import com.jadsonlourenco.RNShakeEvent.RNShakeEventPackage; import com.brentvatne.react.ReactVideoPackage; import com.rnuxcam.rnuxcam.UXCamPackage; import com.facebook.react.ReactNativeHost; @@ -25,6 +26,7 @@ public boolean getUseDeveloperSupport() { protected List getPackages() { return Arrays.asList( new MainReactPackage(), + new RNShakeEventPackage(), new ReactVideoPackage(), new UXCamPackage() ); diff --git a/android/settings.gradle b/android/settings.gradle index 696ab75..77bf4bf 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,4 +1,6 @@ rootProject.name = 'RNPackages' +include ':react-native-shake-event' +project(':react-native-shake-event').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-shake-event/android') include ':react-native-video' project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android') include ':react-native-ux-cam' diff --git a/ios/RNPackages.xcodeproj/project.pbxproj b/ios/RNPackages.xcodeproj/project.pbxproj index 4bf57f8..5f1771f 100644 --- a/ios/RNPackages.xcodeproj/project.pbxproj +++ b/ios/RNPackages.xcodeproj/project.pbxproj @@ -37,6 +37,7 @@ 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; 1ED3D47199F24599A9125D38 /* libRNUXCam.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 659F784FC46344179C5B6774 /* libRNUXCam.a */; }; 442CFF7594324918A98A95CE /* libRCTVideo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C6FC00D33D8474A8E688CFE /* libRCTVideo.a */; }; + D2F4A8B09CC64040AC39BD67 /* libRNShakeEvent.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F01EE52D5314AD0BB2E06D9 /* libRNShakeEvent.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -260,6 +261,8 @@ 659F784FC46344179C5B6774 /* libRNUXCam.a */ = {isa = PBXFileReference; name = "libRNUXCam.a"; path = "libRNUXCam.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; 10D94D39E400418C9E39A435 /* RCTVideo.xcodeproj */ = {isa = PBXFileReference; name = "RCTVideo.xcodeproj"; path = "../node_modules/react-native-video/ios/RCTVideo.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; }; 7C6FC00D33D8474A8E688CFE /* libRCTVideo.a */ = {isa = PBXFileReference; name = "libRCTVideo.a"; path = "libRCTVideo.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; + CF23E95EE0114317B7199B62 /* RNShakeEvent.xcodeproj */ = {isa = PBXFileReference; name = "RNShakeEvent.xcodeproj"; path = "../node_modules/react-native-shake-event/ios/RNShakeEvent.xcodeproj"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; }; + 4F01EE52D5314AD0BB2E06D9 /* libRNShakeEvent.a */ = {isa = PBXFileReference; name = "libRNShakeEvent.a"; path = "libRNShakeEvent.a"; sourceTree = ""; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -288,6 +291,7 @@ 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, 1ED3D47199F24599A9125D38 /* libRNUXCam.a in Frameworks */, 442CFF7594324918A98A95CE /* libRCTVideo.a in Frameworks */, + D2F4A8B09CC64040AC39BD67 /* libRNShakeEvent.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -456,6 +460,7 @@ 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, 4B184078C3454F4F808958E7 /* RNUXCam.xcodeproj */, 10D94D39E400418C9E39A435 /* RCTVideo.xcodeproj */, + CF23E95EE0114317B7199B62 /* RNShakeEvent.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -985,11 +990,13 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-ux-cam/ios", "$(SRCROOT)/../node_modules/react-native-video/ios", + "$(SRCROOT)/../node_modules/react-native-shake-event/ios", ); }; name = Debug; @@ -1012,11 +1019,13 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-ux-cam/ios", "$(SRCROOT)/../node_modules/react-native-video/ios", + "$(SRCROOT)/../node_modules/react-native-shake-event/ios", ); }; name = Release; @@ -1040,6 +1049,7 @@ "$(inherited)", "$(SRCROOT)/../node_modules/react-native-ux-cam/ios", "$(SRCROOT)/../node_modules/react-native-video/ios", + "$(SRCROOT)/../node_modules/react-native-shake-event/ios", ); }; name = Debug; @@ -1062,6 +1072,7 @@ "$(inherited)", "$(SRCROOT)/../node_modules/react-native-ux-cam/ios", "$(SRCROOT)/../node_modules/react-native-video/ios", + "$(SRCROOT)/../node_modules/react-native-shake-event/ios", ); }; name = Release; @@ -1093,11 +1104,13 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-ux-cam/ios", "$(SRCROOT)/../node_modules/react-native-video/ios", + "$(SRCROOT)/../node_modules/react-native-shake-event/ios", ); }; name = Debug; @@ -1129,11 +1142,13 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); HEADER_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../node_modules/react-native-ux-cam/ios", "$(SRCROOT)/../node_modules/react-native-video/ios", + "$(SRCROOT)/../node_modules/react-native-shake-event/ios", ); }; name = Release; @@ -1160,6 +1175,7 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); }; name = Debug; @@ -1186,6 +1202,7 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); }; name = Release; diff --git a/package.json b/package.json index cec5ada..7943bff 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "dependencies": { "react": "16.0.0-alpha.12", "react-native": "0.47.1", + "react-native-shake-event": "^4.0.1", "react-native-ux-cam": "^3.4.0", "react-native-video": "^1.2.0" }, diff --git a/yarn.lock b/yarn.lock index 4dcfb03..f3a2d31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4598,6 +4598,12 @@ react-devtools-core@2.3.1: shell-quote "^1.6.1" ws "^2.0.3" +react-native-shake-event@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/react-native-shake-event/-/react-native-shake-event-4.0.1.tgz#b167e844b711eff50d44d029537fbb228b2ac6b2" + dependencies: + invariant "^2.2.2" + react-native-ux-cam@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/react-native-ux-cam/-/react-native-ux-cam-3.4.0.tgz#f47551e6007b17e3acca04796bb8d668e7e48b6f" From 134e993acd2354b51aaf968a725bfd43b326e77b Mon Sep 17 00:00:00 2001 From: Mark Miyashita Date: Thu, 10 Aug 2017 18:51:34 -0700 Subject: [PATCH 2/3] Add ShakeEventExample and render test --- js/components/PackagesView.js | 2 ++ js/examples/ShakeEventExample.js | 18 ++++++++++++++++++ .../__tests__/ShakeEventExample.spec.js | 14 ++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 js/examples/ShakeEventExample.js create mode 100644 js/examples/__tests__/ShakeEventExample.spec.js diff --git a/js/components/PackagesView.js b/js/components/PackagesView.js index 64f1d63..1e065ee 100644 --- a/js/components/PackagesView.js +++ b/js/components/PackagesView.js @@ -3,6 +3,7 @@ import React from 'react'; import {StyleSheet, View} from 'react-native'; // Packages +import ShakeEventExample from '../examples/ShakeEventExample'; import UXCamExample from '../examples/UXCamExample'; import VideoExample from '../examples/VideoExample'; @@ -16,6 +17,7 @@ const styles = StyleSheet.create({ export default () => ( + diff --git a/js/examples/ShakeEventExample.js b/js/examples/ShakeEventExample.js new file mode 100644 index 0000000..50eb749 --- /dev/null +++ b/js/examples/ShakeEventExample.js @@ -0,0 +1,18 @@ +// Libraries +import React from 'react'; +import ShakeEvent from 'react-native-shake-event'; + + +export default class ShakeEventExample extends React.Component { + componentDidMount() { + // TODO + } + + componentWillUnmount() { + // TODO + } + + render() { + return null; + } +} diff --git a/js/examples/__tests__/ShakeEventExample.spec.js b/js/examples/__tests__/ShakeEventExample.spec.js new file mode 100644 index 0000000..c363c77 --- /dev/null +++ b/js/examples/__tests__/ShakeEventExample.spec.js @@ -0,0 +1,14 @@ +// Libraries +import 'react-native'; +import React from 'react'; +import Renderer from 'react-test-renderer'; + +// Components +import ShakeEventExample from '../ShakeEventExample'; + + +it('renders correctly', () => { + const tree = Renderer.create( + + ); +}); From af25ba372eaf717605781b3b8721657f570d1059 Mon Sep 17 00:00:00 2001 From: Mark Miyashita Date: Thu, 10 Aug 2017 18:56:02 -0700 Subject: [PATCH 3/3] Add in actual event listening to the ShakeEventExample component --- README.md | 1 + js/examples/ShakeEventExample.js | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 25d2e02..bc91bd9 100644 --- a/README.md +++ b/README.md @@ -15,5 +15,6 @@ It also serves as a catalog for all react-native pacakges in the community. ## Packages +* [react-native-shake-event](https://github.com/jadsonlourenco/react-native-shake-event) * [react-native-ux-cam](https://github.com/negativetwelve/react-native-ux-cam) * [react-native-video](https://github.com/react-native-community/react-native-video) diff --git a/js/examples/ShakeEventExample.js b/js/examples/ShakeEventExample.js index 50eb749..a867bfb 100644 --- a/js/examples/ShakeEventExample.js +++ b/js/examples/ShakeEventExample.js @@ -4,12 +4,14 @@ import ShakeEvent from 'react-native-shake-event'; export default class ShakeEventExample extends React.Component { - componentDidMount() { - // TODO + componentWillMount() { + ShakeEvent.addEventListener('shake', () => { + console.log('Device shake!'); + }); } componentWillUnmount() { - // TODO + ShakeEvent.removeEventListener('shake'); } render() {