From 49604e046cde4e010588c1c40f58a27a81161ce0 Mon Sep 17 00:00:00 2001 From: Travis Nuttall Date: Sat, 28 Oct 2017 15:03:17 -0600 Subject: [PATCH] add simple example to demonstrate basic thread usage and debugging --- .../{ThreadExample => SimpleExample}/.babelrc | 0 .../.buckconfig | 0 .../.flowconfig | 15 +- .../.gitattributes | 0 .../.gitignore | 8 +- .../.watchmanconfig | 0 example/SimpleExample/App.js | 65 + example/SimpleExample/README.md | 36 + .../__tests__/App.js} | 4 +- .../android/app/BUCK | 4 +- .../android/app/build.gradle | 8 +- .../android/app/proguard-rules.pro | 0 .../android/app/src/main/AndroidManifest.xml | 2 +- .../java/com/simpleexample}/MainActivity.java | 4 +- .../com/simpleexample}/MainApplication.java | 11 +- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 0 .../android/build.gradle | 0 .../android/gradle.properties | 0 .../android/gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 .../android/gradlew | 0 .../android/gradlew.bat | 0 .../android/keystores/BUCK | 0 .../keystores/debug.keystore.properties | 0 example/SimpleExample/android/settings.gradle | 5 + example/SimpleExample/app.json | 4 + example/SimpleExample/config.js | 12 + example/SimpleExample/index.js | 5 + .../ios/SimpleExample-tvOS}/Info.plist | 0 .../ios/SimpleExample-tvOSTests}/Info.plist | 0 .../SimpleExample.xcodeproj}/project.pbxproj | 243 +- .../xcschemes/SimpleExample-tvOS.xcscheme} | 36 +- .../xcschemes/SimpleExample.xcscheme} | 40 +- .../ios/SimpleExample}/AppDelegate.h | 0 .../ios/SimpleExample}/AppDelegate.m | 4 +- .../Base.lproj/LaunchScreen.xib | 2 +- .../AppIcon.appiconset/Contents.json | 0 .../ios/SimpleExample}/Info.plist | 2 +- .../ios/SimpleExample}/main.m | 0 .../ios/SimpleExampleTests}/Info.plist | 0 .../SimpleExampleTests/SimpleExampleTests.m} | 4 +- .../SimpleExample/ios/worker.thread.js.meta | 1 + .../SimpleExample/ios/worker.thread.jsbundle | 639 +++ .../ios/worker.thread.jsbundle.meta | 1 + example/SimpleExample/package.json | 26 + example/SimpleExample/worker.thread.js | 13 + .../ThreadExample/__tests__/index.android.js | 12 - .../app/src/main/res/values/strings.xml | 3 - example/ThreadExample/android/settings.gradle | 5 - example/ThreadExample/app.json | 4 - example/ThreadExample/index.android.js | 58 - example/ThreadExample/index.ios.js | 57 - example/ThreadExample/package.json | 23 - example/ThreadExample/worker.js | 21 - example/ThreadExample/yarn.lock | 4573 ----------------- 60 files changed, 1032 insertions(+), 4921 deletions(-) rename example/{ThreadExample => SimpleExample}/.babelrc (100%) rename example/{ThreadExample => SimpleExample}/.buckconfig (100%) rename example/{ThreadExample => SimpleExample}/.flowconfig (76%) rename example/{ThreadExample => SimpleExample}/.gitattributes (100%) rename example/{ThreadExample => SimpleExample}/.gitignore (81%) rename example/{ThreadExample => SimpleExample}/.watchmanconfig (100%) create mode 100644 example/SimpleExample/App.js create mode 100644 example/SimpleExample/README.md rename example/{ThreadExample/__tests__/index.ios.js => SimpleExample/__tests__/App.js} (81%) rename example/{ThreadExample => SimpleExample}/android/app/BUCK (95%) rename example/{ThreadExample => SimpleExample}/android/app/build.gradle (97%) rename example/{ThreadExample => SimpleExample}/android/app/proguard-rules.pro (100%) rename example/{ThreadExample => SimpleExample}/android/app/src/main/AndroidManifest.xml (97%) rename example/{ThreadExample/android/app/src/main/java/com/threadexample => SimpleExample/android/app/src/main/java/com/simpleexample}/MainActivity.java (84%) rename example/{ThreadExample/android/app/src/main/java/com/threadexample => SimpleExample/android/app/src/main/java/com/simpleexample}/MainApplication.java (83%) rename example/{ThreadExample => SimpleExample}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename example/{ThreadExample => SimpleExample}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename example/{ThreadExample => SimpleExample}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename example/{ThreadExample => SimpleExample}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) create mode 100644 example/SimpleExample/android/app/src/main/res/values/strings.xml rename example/{ThreadExample => SimpleExample}/android/app/src/main/res/values/styles.xml (100%) rename example/{ThreadExample => SimpleExample}/android/build.gradle (100%) rename example/{ThreadExample => SimpleExample}/android/gradle.properties (100%) rename example/{ThreadExample => SimpleExample}/android/gradle/wrapper/gradle-wrapper.jar (100%) rename example/{ThreadExample => SimpleExample}/android/gradle/wrapper/gradle-wrapper.properties (100%) rename example/{ThreadExample => SimpleExample}/android/gradlew (100%) rename example/{ThreadExample => SimpleExample}/android/gradlew.bat (100%) rename example/{ThreadExample => SimpleExample}/android/keystores/BUCK (100%) rename example/{ThreadExample => SimpleExample}/android/keystores/debug.keystore.properties (100%) create mode 100644 example/SimpleExample/android/settings.gradle create mode 100644 example/SimpleExample/app.json create mode 100644 example/SimpleExample/config.js create mode 100644 example/SimpleExample/index.js rename example/{ThreadExample/ios/ThreadExample-tvOS => SimpleExample/ios/SimpleExample-tvOS}/Info.plist (100%) rename example/{ThreadExample/ios/ThreadExample-tvOSTests => SimpleExample/ios/SimpleExample-tvOSTests}/Info.plist (100%) rename example/{ThreadExample/ios/ThreadExample.xcodeproj => SimpleExample/ios/SimpleExample.xcodeproj}/project.pbxproj (86%) rename example/{ThreadExample/ios/ThreadExample.xcodeproj/xcshareddata/xcschemes/ThreadExample-tvOS.xcscheme => SimpleExample/ios/SimpleExample.xcodeproj/xcshareddata/xcschemes/SimpleExample-tvOS.xcscheme} (79%) rename example/{ThreadExample/ios/ThreadExample.xcodeproj/xcshareddata/xcschemes/ThreadExample.xcscheme => SimpleExample/ios/SimpleExample.xcodeproj/xcshareddata/xcschemes/SimpleExample.xcscheme} (79%) rename example/{ThreadExample/ios/ThreadExample => SimpleExample/ios/SimpleExample}/AppDelegate.h (100%) rename example/{ThreadExample/ios/ThreadExample => SimpleExample/ios/SimpleExample}/AppDelegate.m (94%) rename example/{ThreadExample/ios/ThreadExample => SimpleExample/ios/SimpleExample}/Base.lproj/LaunchScreen.xib (98%) rename example/{ThreadExample/ios/ThreadExample => SimpleExample/ios/SimpleExample}/Images.xcassets/AppIcon.appiconset/Contents.json (100%) rename example/{ThreadExample/ios/ThreadExample => SimpleExample/ios/SimpleExample}/Info.plist (98%) rename example/{ThreadExample/ios/ThreadExample => SimpleExample/ios/SimpleExample}/main.m (100%) rename example/{ThreadExample/ios/ThreadExampleTests => SimpleExample/ios/SimpleExampleTests}/Info.plist (100%) rename example/{ThreadExample/ios/ThreadExampleTests/ThreadExampleTests.m => SimpleExample/ios/SimpleExampleTests/SimpleExampleTests.m} (96%) create mode 100644 example/SimpleExample/ios/worker.thread.js.meta create mode 100644 example/SimpleExample/ios/worker.thread.jsbundle create mode 100644 example/SimpleExample/ios/worker.thread.jsbundle.meta create mode 100644 example/SimpleExample/package.json create mode 100644 example/SimpleExample/worker.thread.js delete mode 100644 example/ThreadExample/__tests__/index.android.js delete mode 100644 example/ThreadExample/android/app/src/main/res/values/strings.xml delete mode 100644 example/ThreadExample/android/settings.gradle delete mode 100644 example/ThreadExample/app.json delete mode 100644 example/ThreadExample/index.android.js delete mode 100644 example/ThreadExample/index.ios.js delete mode 100644 example/ThreadExample/package.json delete mode 100644 example/ThreadExample/worker.js delete mode 100644 example/ThreadExample/yarn.lock diff --git a/example/ThreadExample/.babelrc b/example/SimpleExample/.babelrc similarity index 100% rename from example/ThreadExample/.babelrc rename to example/SimpleExample/.babelrc diff --git a/example/ThreadExample/.buckconfig b/example/SimpleExample/.buckconfig similarity index 100% rename from example/ThreadExample/.buckconfig rename to example/SimpleExample/.buckconfig diff --git a/example/ThreadExample/.flowconfig b/example/SimpleExample/.flowconfig similarity index 76% rename from example/ThreadExample/.flowconfig rename to example/SimpleExample/.flowconfig index 8346120..a359500 100644 --- a/example/ThreadExample/.flowconfig +++ b/example/SimpleExample/.flowconfig @@ -12,14 +12,15 @@ ; For RN Apps installed via npm, "Libraries" folder is inside ; "node_modules/react-native" but in the source repo it is in the root .*/Libraries/react-native/React.js -.*/Libraries/react-native/ReactNative.js + +; Ignore polyfills +.*/Libraries/polyfills/.* [include] [libs] node_modules/react-native/Libraries/react-native/react-native-interface.js -node_modules/react-native/flow -flow/ +node_modules/react-native/flow/ [options] emoji=true @@ -32,14 +33,16 @@ module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|we suppress_type=$FlowIssue suppress_type=$FlowFixMe +suppress_type=$FlowFixMeProps +suppress_type=$FlowFixMeState suppress_type=$FixMe -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(5[0-3]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(5[0-3]\\|[1-4][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError unsafe.enable_getters_and_setters=true [version] -^0.49.1 +^0.53.0 diff --git a/example/ThreadExample/.gitattributes b/example/SimpleExample/.gitattributes similarity index 100% rename from example/ThreadExample/.gitattributes rename to example/SimpleExample/.gitattributes diff --git a/example/ThreadExample/.gitignore b/example/SimpleExample/.gitignore similarity index 81% rename from example/ThreadExample/.gitignore rename to example/SimpleExample/.gitignore index 10be197..0826423 100644 --- a/example/ThreadExample/.gitignore +++ b/example/SimpleExample/.gitignore @@ -46,8 +46,8 @@ buck-out/ # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the # screenshots whenever they are needed. # For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md +# https://docs.fastlane.tools/best-practices/source-control/ -fastlane/report.xml -fastlane/Preview.html -fastlane/screenshots +*/fastlane/report.xml +*/fastlane/Preview.html +*/fastlane/screenshots diff --git a/example/ThreadExample/.watchmanconfig b/example/SimpleExample/.watchmanconfig similarity index 100% rename from example/ThreadExample/.watchmanconfig rename to example/SimpleExample/.watchmanconfig diff --git a/example/SimpleExample/App.js b/example/SimpleExample/App.js new file mode 100644 index 0000000..1fdb364 --- /dev/null +++ b/example/SimpleExample/App.js @@ -0,0 +1,65 @@ +import React, { Component } from 'react'; +import { + Button, + StyleSheet, + Text, + View +} from 'react-native'; +import { Thread } from 'react-native-threads'; + +export default class App extends Component<{}> { + state = { messages: [] } + + workerThread = null; + + componentDidMount() { + this.workerThread = new Thread('./worker.thread.js'); + this.workerThread.onmessage = this.handleMessage; + } + + componentWillUnmount() { + this.workerThread.terminate(); + this.workerThread = null; + } + + handleMessage = message => { + console.tron.log(`APP: got message ${message}`); + + this.setState(state => { + return { messages: [...state.messages, message] }; + }); + } + + render() { + return ( + + + Welcome to React Native Threads! + + +