├── .eslintrc.js ├── .gitignore ├── .prettierrc.js ├── App.js ├── android ├── app │ ├── .gitignore │ ├── build.gradle │ ├── keystore │ │ └── demointegratern.keystore │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── demointegratern │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ └── fonts │ │ │ │ ├── AntDesign.ttf │ │ │ │ ├── Entypo.ttf │ │ │ │ ├── EvilIcons.ttf │ │ │ │ ├── Feather.ttf │ │ │ │ ├── FontAwesome.ttf │ │ │ │ ├── FontAwesome5_Brands.ttf │ │ │ │ ├── FontAwesome5_Regular.ttf │ │ │ │ ├── FontAwesome5_Solid.ttf │ │ │ │ ├── Fontisto.ttf │ │ │ │ ├── Foundation.ttf │ │ │ │ ├── Ionicons.ttf │ │ │ │ ├── MaterialCommunityIcons.ttf │ │ │ │ ├── MaterialIcons.ttf │ │ │ │ ├── Octicons.ttf │ │ │ │ ├── SimpleLineIcons.ttf │ │ │ │ ├── Zocial.ttf │ │ │ │ ├── iCielVAGRoundedNext-Bold.otf │ │ │ │ ├── iCielVAGRoundedNext-DemiBold.otf │ │ │ │ ├── iCielVAGRoundedNext-Light.otf │ │ │ │ ├── iCielVAGRoundedNext-LightItalic.otf │ │ │ │ ├── iCielVAGRoundedNext-Medium.otf │ │ │ │ └── iCielVAGRoundedNext-Regular.otf │ │ ├── java │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── demointegratern │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── RNModuleActivity.kt │ │ │ │ ├── SecondActivity.kt │ │ │ │ ├── TestConnectNativeModule.kt │ │ │ │ └── TestConnectNativePackage.kt │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ └── activity_second.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── test │ │ └── java │ │ └── com │ │ └── example │ │ └── demointegratern │ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── app.json ├── assets └── fonts │ ├── iCielVAGRoundedNext-Bold.otf │ ├── iCielVAGRoundedNext-DemiBold.otf │ ├── iCielVAGRoundedNext-Light.otf │ ├── iCielVAGRoundedNext-LightItalic.otf │ ├── iCielVAGRoundedNext-Medium.otf │ └── iCielVAGRoundedNext-Regular.otf ├── babel.config.js ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── index.js ├── ios ├── DemoIntegrateRN.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── DemoIntegrateRN.xcscheme ├── DemoIntegrateRN.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── DemoIntegrateRN │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── DemoIntegrateRN-Bridging-Header.h │ ├── Info.plist │ ├── RNViewManager.swift │ ├── SceneDelegate.swift │ ├── SecondViewController.swift │ ├── TestConnectNative.m │ ├── TestConnectNative.swift │ └── ViewController.swift ├── DemoIntegrateRNTests │ ├── DemoIntegrateRNTests.swift │ └── Info.plist ├── DemoIntegrateRNUITests │ ├── DemoIntegrateRNUITests.swift │ └── Info.plist ├── Podfile └── Podfile.lock ├── package-lock.json ├── package.json ├── react-native.config.js ├── readme.md └── src ├── Components └── NoDataView.js ├── DetailFollower ├── DetailFollower.Screen.js └── DetailFollower.Style.js ├── DetailProfile ├── DetailProfile.Screen.js └── DetailProfile.Style.js ├── DrawerNavigator ├── DrawerNavigator.Screen.js └── DrawerNavigator.Style.js ├── Follower ├── Follower.Action.js ├── Follower.Reducer.js ├── Follower.Saga.js ├── Follower.Screen.js └── Follower.Style.js ├── Profile ├── Profile.Action.js ├── Profile.Reducer.js ├── Profile.Saga.js ├── Profile.Screen.js └── Profile.Style.js ├── Root ├── RootContainer.Screen.js └── RootContainer.Style.js ├── TestConnectNative ├── TestConnectNative.Screen.js ├── TestConnectNative.Style.js └── TestConnectNative.js ├── Themes ├── Application.Style.js ├── Colors.js └── Images.js ├── actions.js ├── api.js ├── const.js ├── reducers.js └── sagas.js /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | extends: '@react-native-community', 4 | rules: { 5 | 'react-native/no-inline-styles': 'off', 6 | 'prettier/prettier': 'warn', 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | 24 | # Android/IntelliJ 25 | # 26 | .idea 27 | .gradle 28 | local.properties 29 | *.iml 30 | 31 | # node.js 32 | # 33 | node_modules/ 34 | npm-debug.log 35 | yarn-error.log 36 | 37 | # BUCK 38 | buck-out/ 39 | \.buckd/ 40 | 41 | # fastlane 42 | # 43 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 44 | # screenshots whenever they are needed. 45 | # For more information about the recommended setup visit: 46 | # https://docs.fastlane.tools/best-practices/source-control/ 47 | 48 | */fastlane/report.xml 49 | */fastlane/Preview.html 50 | */fastlane/screenshots 51 | 52 | # Bundle artifact 53 | *.jsbundle 54 | 55 | # CocoaPods 56 | /ios/Pods/ 57 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSpacing: false, 3 | jsxBracketSameLine: true, 4 | singleQuote: true, 5 | trailingComma: 'all', 6 | }; 7 | -------------------------------------------------------------------------------- /App.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import createSagaMiddleware from 'redux-saga'; 3 | import AsyncStorage from '@react-native-community/async-storage'; 4 | import {applyMiddleware, createStore} from 'redux'; 5 | import {persistReducer, persistStore} from 'redux-persist'; 6 | import {Provider} from 'react-redux'; 7 | import {PersistGate} from 'redux-persist/integration/react'; 8 | import rootReducer from './src/reducers'; 9 | import rootSaga from './src/sagas'; 10 | import RootContainer from './src/Root/RootContainer.Screen'; 11 | import 'react-native-gesture-handler'; 12 | import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; 13 | import Toast from 'react-native-simple-toast'; 14 | // for iOS only since enable use_frameworks! in podfile 15 | MaterialCommunityIcons.loadFont(); 16 | 17 | const sagaMiddleware = createSagaMiddleware(); 18 | const persistConfig = { 19 | key: 'root', 20 | storage: AsyncStorage, 21 | whitelist: [], 22 | }; 23 | 24 | const persistedReducer = persistReducer(persistConfig, rootReducer); 25 | const store = createStore(persistedReducer, applyMiddleware(sagaMiddleware)); 26 | const persistor = persistStore(store); 27 | 28 | sagaMiddleware.run(rootSaga); 29 | 30 | export let rootTag = 1; 31 | 32 | export default class App extends Component { 33 | constructor(props) { 34 | super(props); 35 | Toast.show(`Message from native: "${this.props.message_from_native}"`); 36 | rootTag = this.props.rootTag; 37 | } 38 | 39 | render() { 40 | return ( 41 | 42 | 43 | 44 | 45 | 46 | ); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | apply plugin: 'kotlin-android' 3 | apply from: "../../node_modules/react-native-vector-icons/fonts.gradle" 4 | 5 | import com.android.build.OutputFile 6 | 7 | project.ext.react = [ 8 | enableHermes: false, // clean and rebuild if changing 9 | ] 10 | 11 | apply from: "../../node_modules/react-native/react.gradle" 12 | 13 | def enableSeparateBuildPerCPUArchitecture = false 14 | 15 | def enableProguardInReleaseBuilds = false 16 | 17 | def jscFlavor = 'org.webkit:android-jsc:+' 18 | 19 | def enableHermes = project.ext.react.get("enableHermes", false); 20 | 21 | android { 22 | ndkVersion rootProject.ext.ndkVersion 23 | 24 | compileSdkVersion rootProject.ext.compileSdkVersion 25 | 26 | compileOptions { 27 | sourceCompatibility JavaVersion.VERSION_1_8 28 | targetCompatibility JavaVersion.VERSION_1_8 29 | } 30 | 31 | defaultConfig { 32 | applicationId "com.example.demointegratern" 33 | minSdkVersion rootProject.ext.minSdkVersion 34 | targetSdkVersion rootProject.ext.targetSdkVersion 35 | versionCode 1 36 | versionName "0.0.1" 37 | } 38 | splits { 39 | abi { 40 | reset() 41 | enable enableSeparateBuildPerCPUArchitecture 42 | universalApk false // If true, also generate a universal APK 43 | include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" 44 | } 45 | } 46 | signingConfigs { 47 | debug { 48 | keyAlias 'KeyAlias' 49 | keyPassword 'android' 50 | storeFile file("keystore/demointegratern.keystore") 51 | storePassword 'android' 52 | } 53 | release { 54 | keyAlias 'KeyAlias' 55 | keyPassword 'android' 56 | storeFile file("keystore/demointegratern.keystore") 57 | storePassword 'android' 58 | } 59 | } 60 | buildTypes { 61 | debug { 62 | signingConfig signingConfigs.debug 63 | } 64 | release { 65 | // Caution! In production, you need to generate your own keystore file. 66 | // see https://reactnative.dev/docs/signed-apk-android. 67 | signingConfig signingConfigs.debug 68 | minifyEnabled enableProguardInReleaseBuilds 69 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 70 | } 71 | } 72 | 73 | // applicationVariants are e.g. debug, release 74 | applicationVariants.all { variant -> 75 | variant.outputs.each { output -> 76 | // For each separate APK per architecture, set a unique version code as described here: 77 | // https://developer.android.com/studio/build/configure-apk-splits.html 78 | // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. 79 | def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] 80 | def abi = output.getFilter(OutputFile.ABI) 81 | if (abi != null) { // null for the universal-debug, universal-release variants 82 | output.versionCodeOverride = 83 | defaultConfig.versionCode * 1000 + versionCodes.get(abi) 84 | } 85 | 86 | } 87 | } 88 | } 89 | 90 | dependencies { 91 | implementation fileTree(dir: "libs", include: ["*.jar"]) 92 | //noinspection GradleDynamicVersion 93 | implementation "com.facebook.react:react-native:+" // From node_modules 94 | 95 | implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" 96 | 97 | debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { 98 | exclude group:'com.facebook.fbjni' 99 | } 100 | 101 | debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { 102 | exclude group:'com.facebook.flipper' 103 | exclude group:'com.squareup.okhttp3', module:'okhttp' 104 | } 105 | 106 | debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { 107 | exclude group:'com.facebook.flipper' 108 | } 109 | 110 | if (enableHermes) { 111 | def hermesPath = "../../node_modules/hermes-engine/android/"; 112 | debugImplementation files(hermesPath + "hermes-debug.aar") 113 | releaseImplementation files(hermesPath + "hermes-release.aar") 114 | } else { 115 | implementation jscFlavor 116 | } 117 | implementation "androidx.core:core-ktx:+" 118 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 119 | } 120 | 121 | // Run this once to be able to run the application with BUCK 122 | // puts all compile dependencies into folder libs for BUCK to use 123 | task copyDownloadableDepsToLibs(type: Copy) { 124 | from configurations.compile 125 | into 'libs' 126 | } 127 | 128 | apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) 129 | repositories { 130 | mavenCentral() 131 | } 132 | -------------------------------------------------------------------------------- /android/app/keystore/demointegratern.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/keystore/demointegratern.keystore -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /android/app/src/androidTest/java/com/example/demointegratern/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.example.demointegratern; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.test.platform.app.InstrumentationRegistry; 6 | import androidx.test.ext.junit.runners.AndroidJUnit4; 7 | 8 | import org.junit.Test; 9 | import org.junit.runner.RunWith; 10 | 11 | import static org.junit.Assert.*; 12 | 13 | /** 14 | * Instrumented test, which will execute on an Android device. 15 | * 16 | * @see Testing documentation 17 | */ 18 | @RunWith(AndroidJUnit4.class) 19 | public class ExampleInstrumentedTest { 20 | @Test 21 | public void useAppContext() { 22 | // Context of the app under test. 23 | Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); 24 | 25 | assertEquals("com.example.demointegratern", appContext.getPackageName()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/AntDesign.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/AntDesign.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Entypo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/Entypo.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/EvilIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/EvilIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Feather.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/Feather.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/FontAwesome.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Fontisto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/Fontisto.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Foundation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/Foundation.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/Ionicons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/MaterialIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/MaterialIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/Octicons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/SimpleLineIcons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/SimpleLineIcons.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/Zocial.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/Zocial.ttf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/iCielVAGRoundedNext-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/iCielVAGRoundedNext-Bold.otf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/iCielVAGRoundedNext-DemiBold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/iCielVAGRoundedNext-DemiBold.otf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/iCielVAGRoundedNext-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/iCielVAGRoundedNext-Light.otf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/iCielVAGRoundedNext-LightItalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/iCielVAGRoundedNext-LightItalic.otf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/iCielVAGRoundedNext-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/iCielVAGRoundedNext-Medium.otf -------------------------------------------------------------------------------- /android/app/src/main/assets/fonts/iCielVAGRoundedNext-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duytq94/demo-integrate-react-native/a6d2c9af66d4961da3e32b62188c63b2d9a6048b/android/app/src/main/assets/fonts/iCielVAGRoundedNext-Regular.otf -------------------------------------------------------------------------------- /android/app/src/main/java/com/example/demointegratern/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.demointegratern 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import android.widget.Button 6 | import android.widget.EditText 7 | import androidx.appcompat.app.AppCompatActivity 8 | 9 | class MainActivity : AppCompatActivity() { 10 | override fun onCreate(savedInstanceState: Bundle?) { 11 | super.onCreate(savedInstanceState) 12 | setContentView(R.layout.activity_main) 13 | val btnGoRNScreen = findViewById 41 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRN/DemoIntegrateRN-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | #import 5 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRN/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIViewControllerBasedStatusBarAppearance 6 | 7 | NSAppTransportSecurity 8 | 9 | NSExceptionDomains 10 | 11 | localhost 12 | 13 | NSTemporaryExceptionAllowsInsecureHTTPLoads 14 | 15 | 16 | 17 | 18 | CFBundleDevelopmentRegion 19 | $(DEVELOPMENT_LANGUAGE) 20 | CFBundleExecutable 21 | $(EXECUTABLE_NAME) 22 | CFBundleIdentifier 23 | $(PRODUCT_BUNDLE_IDENTIFIER) 24 | CFBundleInfoDictionaryVersion 25 | 6.0 26 | CFBundleName 27 | $(PRODUCT_NAME) 28 | CFBundlePackageType 29 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 30 | CFBundleShortVersionString 31 | 1.0 32 | CFBundleVersion 33 | 1 34 | LSRequiresIPhoneOS 35 | 36 | UIApplicationSceneManifest 37 | 38 | UIApplicationSupportsMultipleScenes 39 | 40 | UISceneConfigurations 41 | 42 | UIWindowSceneSessionRoleApplication 43 | 44 | 45 | UISceneConfigurationName 46 | Default Configuration 47 | UISceneDelegateClassName 48 | $(PRODUCT_MODULE_NAME).SceneDelegate 49 | UISceneStoryboardFile 50 | Main 51 | 52 | 53 | 54 | 55 | UILaunchStoryboardName 56 | LaunchScreen 57 | UIMainStoryboardFile 58 | Main 59 | UIRequiredDeviceCapabilities 60 | 61 | armv7 62 | 63 | UISupportedInterfaceOrientations 64 | 65 | UIInterfaceOrientationPortrait 66 | UIInterfaceOrientationLandscapeLeft 67 | UIInterfaceOrientationLandscapeRight 68 | 69 | UISupportedInterfaceOrientations~ipad 70 | 71 | UIInterfaceOrientationPortrait 72 | UIInterfaceOrientationPortraitUpsideDown 73 | UIInterfaceOrientationLandscapeLeft 74 | UIInterfaceOrientationLandscapeRight 75 | 76 | UIAppFonts 77 | 78 | AntDesign.ttf 79 | Entypo.ttf 80 | EvilIcons.ttf 81 | Feather.ttf 82 | FontAwesome.ttf 83 | FontAwesome5_Brands.ttf 84 | FontAwesome5_Regular.ttf 85 | FontAwesome5_Solid.ttf 86 | Fontisto.ttf 87 | Foundation.ttf 88 | Ionicons.ttf 89 | MaterialCommunityIcons.ttf 90 | MaterialIcons.ttf 91 | Octicons.ttf 92 | SimpleLineIcons.ttf 93 | Zocial.ttf 94 | iCielVAGRoundedNext-Bold.otf 95 | iCielVAGRoundedNext-DemiBold.otf 96 | iCielVAGRoundedNext-Light.otf 97 | iCielVAGRoundedNext-LightItalic.otf 98 | iCielVAGRoundedNext-Medium.otf 99 | iCielVAGRoundedNext-Regular.otf 100 | 101 | 102 | 103 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRN/RNViewManager.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import React 3 | 4 | class RNViewManager: NSObject { 5 | var bridge: RCTBridge? 6 | 7 | static let sharedInstance = RNViewManager() 8 | 9 | func createBridgeIfNeeded() -> RCTBridge { 10 | if bridge == nil { 11 | bridge = RCTBridge.init(delegate: self, launchOptions: nil) 12 | } 13 | return bridge! 14 | } 15 | 16 | func viewForModule(_ moduleName: String, initialProperties: [String : Any]?) -> RCTRootView { 17 | let viewBridge = createBridgeIfNeeded() 18 | let rootView: RCTRootView = RCTRootView( 19 | bridge: viewBridge, 20 | moduleName: moduleName, 21 | initialProperties: initialProperties) 22 | return rootView 23 | } 24 | } 25 | 26 | extension RNViewManager: RCTBridgeDelegate { 27 | func sourceURL(for bridge: RCTBridge!) -> URL! { 28 | #if DEBUG 29 | return URL(string: "http://localhost:8081/index.bundle?platform=ios") 30 | #else 31 | return Bundle.main.url(forResource: "main", withExtension: "jsbundle") 32 | #endif 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRN/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // DemoIntegrateRN 4 | // 5 | // Created by duytq on 3/12/20. 6 | // Copyright © 2020 duytq. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class SceneDelegate: UIResponder, UIWindowSceneDelegate { 12 | 13 | var window: UIWindow? 14 | 15 | 16 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 17 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. 18 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. 19 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). 20 | guard let _ = (scene as? UIWindowScene) else { return } 21 | } 22 | 23 | func sceneDidDisconnect(_ scene: UIScene) { 24 | // Called as the scene is being released by the system. 25 | // This occurs shortly after the scene enters the background, or when its session is discarded. 26 | // Release any resources associated with this scene that can be re-created the next time the scene connects. 27 | // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). 28 | } 29 | 30 | func sceneDidBecomeActive(_ scene: UIScene) { 31 | // Called when the scene has moved from an inactive state to an active state. 32 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. 33 | } 34 | 35 | func sceneWillResignActive(_ scene: UIScene) { 36 | // Called when the scene will move from an active state to an inactive state. 37 | // This may occur due to temporary interruptions (ex. an incoming phone call). 38 | } 39 | 40 | func sceneWillEnterForeground(_ scene: UIScene) { 41 | // Called as the scene transitions from the background to the foreground. 42 | // Use this method to undo the changes made on entering the background. 43 | } 44 | 45 | func sceneDidEnterBackground(_ scene: UIScene) { 46 | // Called as the scene transitions from the foreground to the background. 47 | // Use this method to save data, release shared resources, and store enough scene-specific state information 48 | // to restore the scene back to its current state. 49 | } 50 | 51 | 52 | } 53 | 54 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRN/SecondViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import React 3 | import Foundation 4 | 5 | class SencondViewController: UIViewController { 6 | @IBAction func btnBackToReactScreen(_ sender: Any) { 7 | dismiss(animated: true, completion: nil) 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRN/TestConnectNative.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface RCT_EXTERN_REMAP_MODULE(TestConnectNative, TestConnectNativeModule, NSObject) 4 | 5 | RCT_EXTERN_METHOD(sendMessageToNative: (NSString)rnMessage) 6 | RCT_EXTERN_METHOD(sendCallbackToNative: (RCTResponseSenderBlock)rnCallback) 7 | RCT_EXTERN_METHOD(goToSecondViewController: (nonnull NSNumber *)reactTag) 8 | RCT_EXTERN_METHOD(dismissViewController: (nonnull NSNumber *)reactTag) 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRN/TestConnectNative.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import React 3 | 4 | @objc(TestConnectNativeModule) 5 | class TestConnectNativeModule: NSObject { 6 | @objc 7 | static func requiresMainQueueSetup() -> Bool { 8 | return true 9 | } 10 | 11 | @objc 12 | func sendMessageToNative(_ rnMessage: String) { 13 | print("This log is from swift: \(rnMessage)") 14 | } 15 | 16 | @objc 17 | func sendCallbackToNative(_ rnCallback: RCTResponseSenderBlock) { 18 | rnCallback(["A greeting from swift"]) 19 | } 20 | 21 | @objc 22 | func goToSecondViewController (_ reactTag: NSNumber) { 23 | DispatchQueue.main.async { 24 | if let view = RNViewManager.sharedInstance.bridge?.uiManager.view(forReactTag: reactTag) { 25 | let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 26 | let secondVC = storyBoard.instantiateViewController(withIdentifier: "SecondView") as! SencondViewController 27 | secondVC.modalPresentationStyle = .fullScreen 28 | 29 | let reactNativeVC: UIViewController! = view.reactViewController() 30 | reactNativeVC.present(secondVC, animated: true, completion: nil) 31 | } 32 | } 33 | } 34 | 35 | @objc 36 | func dismissViewController (_ reactTag: NSNumber) { 37 | DispatchQueue.main.async { 38 | if let view = RNViewManager.sharedInstance.bridge?.uiManager.view(forReactTag: reactTag) { 39 | let reactNativeVC: UIViewController! = view.reactViewController() 40 | reactNativeVC.dismiss(animated: true, completion: nil) 41 | } 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRN/ViewController.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import React 3 | import Foundation 4 | 5 | class ViewController: UIViewController { 6 | @IBOutlet weak var textField: UITextField! 7 | 8 | @IBAction func BtnGoReactView(_ sender: Any) { 9 | let messageFromNative: String = textField.text! 10 | 11 | // We'll don't init RCTRootView through bundleURL but by bridge for using dismiss later 12 | // let jsCodeLocation = URL(string: "http://localhost:8081/index.bundle?platform=ios") 13 | // let rootView = RCTRootView( 14 | // bundleURL: jsCodeLocation!, 15 | // moduleName: "DemoIntegrateRN", 16 | // initialProperties: ["message_from_native": messageFromNative], 17 | // launchOptions: nil) 18 | 19 | let rootView = RNViewManager.sharedInstance.viewForModule( 20 | "DemoIntegrateRN", 21 | initialProperties: ["message_from_native": messageFromNative]) 22 | 23 | let reactNativeVC = UIViewController() 24 | reactNativeVC.view = rootView 25 | reactNativeVC.modalPresentationStyle = .fullScreen 26 | present(reactNativeVC, animated: true) 27 | } 28 | 29 | override func viewDidLoad() { 30 | super.viewDidLoad() 31 | self.hideKeyboardWhenTappedAround() 32 | } 33 | 34 | func hideKeyboardWhenTappedAround() { 35 | let tap = UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing)) 36 | tap.cancelsTouchesInView = false 37 | view.addGestureRecognizer(tap) 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRNTests/DemoIntegrateRNTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DemoIntegrateRNTests.swift 3 | // DemoIntegrateRNTests 4 | // 5 | // Created by duytq on 3/12/20. 6 | // Copyright © 2020 duytq. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import DemoIntegrateRN 11 | 12 | class DemoIntegrateRNTests: XCTestCase { 13 | 14 | override func setUp() { 15 | // Put setup code here. This method is called before the invocation of each test method in the class. 16 | } 17 | 18 | override func tearDown() { 19 | // Put teardown code here. This method is called after the invocation of each test method in the class. 20 | } 21 | 22 | func testExample() { 23 | // This is an example of a functional test case. 24 | // Use XCTAssert and related functions to verify your tests produce the correct results. 25 | } 26 | 27 | func testPerformanceExample() { 28 | // This is an example of a performance test case. 29 | self.measure { 30 | // Put the code you want to measure the time of here. 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRNTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRNUITests/DemoIntegrateRNUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DemoIntegrateRNUITests.swift 3 | // DemoIntegrateRNUITests 4 | // 5 | // Created by duytq on 3/12/20. 6 | // Copyright © 2020 duytq. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class DemoIntegrateRNUITests: XCTestCase { 12 | 13 | override func setUp() { 14 | // Put setup code here. This method is called before the invocation of each test method in the class. 15 | 16 | // In UI tests it is usually best to stop immediately when a failure occurs. 17 | continueAfterFailure = false 18 | 19 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 20 | } 21 | 22 | override func tearDown() { 23 | // Put teardown code here. This method is called after the invocation of each test method in the class. 24 | } 25 | 26 | func testExample() { 27 | // UI tests must launch the application that they test. 28 | let app = XCUIApplication() 29 | app.launch() 30 | 31 | // Use recording to get started writing UI tests. 32 | // Use XCTAssert and related functions to verify your tests produce the correct results. 33 | } 34 | 35 | func testLaunchPerformance() { 36 | if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) { 37 | // This measures how long it takes to launch your application. 38 | measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) { 39 | XCUIApplication().launch() 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ios/DemoIntegrateRNUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | require_relative '../node_modules/react-native/scripts/react_native_pods' 2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' 3 | 4 | platform :ios, '10.0' 5 | 6 | target 'DemoIntegrateRN' do 7 | config = use_native_modules! 8 | 9 | use_react_native!( 10 | :path => config[:reactNativePath], 11 | # to enable hermes on iOS, change `false` to `true` and then install pods 12 | :hermes_enabled => false 13 | ) 14 | 15 | target 'DemoIntegrateRNTests' do 16 | inherit! :complete 17 | # Pods for testing 18 | end 19 | 20 | # Enables Flipper. 21 | # 22 | # Note that if you have use_frameworks! enabled, Flipper will not work and 23 | # you should disable the next line. 24 | use_flipper!() 25 | 26 | post_install do |installer| 27 | react_native_post_install(installer) 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost-for-react-native (1.63.0) 3 | - CocoaAsyncSocket (7.6.5) 4 | - DoubleConversion (1.1.6) 5 | - FBLazyVector (0.64.2) 6 | - FBReactNativeSpec (0.64.2): 7 | - RCT-Folly (= 2020.01.13.00) 8 | - RCTRequired (= 0.64.2) 9 | - RCTTypeSafety (= 0.64.2) 10 | - React-Core (= 0.64.2) 11 | - React-jsi (= 0.64.2) 12 | - ReactCommon/turbomodule/core (= 0.64.2) 13 | - Flipper (0.75.1): 14 | - Flipper-Folly (~> 2.5) 15 | - Flipper-RSocket (~> 1.3) 16 | - Flipper-DoubleConversion (1.1.7) 17 | - Flipper-Folly (2.5.3): 18 | - boost-for-react-native 19 | - Flipper-DoubleConversion 20 | - Flipper-Glog 21 | - libevent (~> 2.1.12) 22 | - OpenSSL-Universal (= 1.1.180) 23 | - Flipper-Glog (0.3.6) 24 | - Flipper-PeerTalk (0.0.4) 25 | - Flipper-RSocket (1.3.1): 26 | - Flipper-Folly (~> 2.5) 27 | - FlipperKit (0.75.1): 28 | - FlipperKit/Core (= 0.75.1) 29 | - FlipperKit/Core (0.75.1): 30 | - Flipper (~> 0.75.1) 31 | - FlipperKit/CppBridge 32 | - FlipperKit/FBCxxFollyDynamicConvert 33 | - FlipperKit/FBDefines 34 | - FlipperKit/FKPortForwarding 35 | - FlipperKit/CppBridge (0.75.1): 36 | - Flipper (~> 0.75.1) 37 | - FlipperKit/FBCxxFollyDynamicConvert (0.75.1): 38 | - Flipper-Folly (~> 2.5) 39 | - FlipperKit/FBDefines (0.75.1) 40 | - FlipperKit/FKPortForwarding (0.75.1): 41 | - CocoaAsyncSocket (~> 7.6) 42 | - Flipper-PeerTalk (~> 0.0.4) 43 | - FlipperKit/FlipperKitHighlightOverlay (0.75.1) 44 | - FlipperKit/FlipperKitLayoutPlugin (0.75.1): 45 | - FlipperKit/Core 46 | - FlipperKit/FlipperKitHighlightOverlay 47 | - FlipperKit/FlipperKitLayoutTextSearchable 48 | - YogaKit (~> 1.18) 49 | - FlipperKit/FlipperKitLayoutTextSearchable (0.75.1) 50 | - FlipperKit/FlipperKitNetworkPlugin (0.75.1): 51 | - FlipperKit/Core 52 | - FlipperKit/FlipperKitReactPlugin (0.75.1): 53 | - FlipperKit/Core 54 | - FlipperKit/FlipperKitUserDefaultsPlugin (0.75.1): 55 | - FlipperKit/Core 56 | - FlipperKit/SKIOSNetworkPlugin (0.75.1): 57 | - FlipperKit/Core 58 | - FlipperKit/FlipperKitNetworkPlugin 59 | - glog (0.3.5) 60 | - libevent (2.1.12) 61 | - OpenSSL-Universal (1.1.180) 62 | - RCT-Folly (2020.01.13.00): 63 | - boost-for-react-native 64 | - DoubleConversion 65 | - glog 66 | - RCT-Folly/Default (= 2020.01.13.00) 67 | - RCT-Folly/Default (2020.01.13.00): 68 | - boost-for-react-native 69 | - DoubleConversion 70 | - glog 71 | - RCTRequired (0.64.2) 72 | - RCTTypeSafety (0.64.2): 73 | - FBLazyVector (= 0.64.2) 74 | - RCT-Folly (= 2020.01.13.00) 75 | - RCTRequired (= 0.64.2) 76 | - React-Core (= 0.64.2) 77 | - React (0.64.2): 78 | - React-Core (= 0.64.2) 79 | - React-Core/DevSupport (= 0.64.2) 80 | - React-Core/RCTWebSocket (= 0.64.2) 81 | - React-RCTActionSheet (= 0.64.2) 82 | - React-RCTAnimation (= 0.64.2) 83 | - React-RCTBlob (= 0.64.2) 84 | - React-RCTImage (= 0.64.2) 85 | - React-RCTLinking (= 0.64.2) 86 | - React-RCTNetwork (= 0.64.2) 87 | - React-RCTSettings (= 0.64.2) 88 | - React-RCTText (= 0.64.2) 89 | - React-RCTVibration (= 0.64.2) 90 | - React-callinvoker (0.64.2) 91 | - React-Core (0.64.2): 92 | - glog 93 | - RCT-Folly (= 2020.01.13.00) 94 | - React-Core/Default (= 0.64.2) 95 | - React-cxxreact (= 0.64.2) 96 | - React-jsi (= 0.64.2) 97 | - React-jsiexecutor (= 0.64.2) 98 | - React-perflogger (= 0.64.2) 99 | - Yoga 100 | - React-Core/CoreModulesHeaders (0.64.2): 101 | - glog 102 | - RCT-Folly (= 2020.01.13.00) 103 | - React-Core/Default 104 | - React-cxxreact (= 0.64.2) 105 | - React-jsi (= 0.64.2) 106 | - React-jsiexecutor (= 0.64.2) 107 | - React-perflogger (= 0.64.2) 108 | - Yoga 109 | - React-Core/Default (0.64.2): 110 | - glog 111 | - RCT-Folly (= 2020.01.13.00) 112 | - React-cxxreact (= 0.64.2) 113 | - React-jsi (= 0.64.2) 114 | - React-jsiexecutor (= 0.64.2) 115 | - React-perflogger (= 0.64.2) 116 | - Yoga 117 | - React-Core/DevSupport (0.64.2): 118 | - glog 119 | - RCT-Folly (= 2020.01.13.00) 120 | - React-Core/Default (= 0.64.2) 121 | - React-Core/RCTWebSocket (= 0.64.2) 122 | - React-cxxreact (= 0.64.2) 123 | - React-jsi (= 0.64.2) 124 | - React-jsiexecutor (= 0.64.2) 125 | - React-jsinspector (= 0.64.2) 126 | - React-perflogger (= 0.64.2) 127 | - Yoga 128 | - React-Core/RCTActionSheetHeaders (0.64.2): 129 | - glog 130 | - RCT-Folly (= 2020.01.13.00) 131 | - React-Core/Default 132 | - React-cxxreact (= 0.64.2) 133 | - React-jsi (= 0.64.2) 134 | - React-jsiexecutor (= 0.64.2) 135 | - React-perflogger (= 0.64.2) 136 | - Yoga 137 | - React-Core/RCTAnimationHeaders (0.64.2): 138 | - glog 139 | - RCT-Folly (= 2020.01.13.00) 140 | - React-Core/Default 141 | - React-cxxreact (= 0.64.2) 142 | - React-jsi (= 0.64.2) 143 | - React-jsiexecutor (= 0.64.2) 144 | - React-perflogger (= 0.64.2) 145 | - Yoga 146 | - React-Core/RCTBlobHeaders (0.64.2): 147 | - glog 148 | - RCT-Folly (= 2020.01.13.00) 149 | - React-Core/Default 150 | - React-cxxreact (= 0.64.2) 151 | - React-jsi (= 0.64.2) 152 | - React-jsiexecutor (= 0.64.2) 153 | - React-perflogger (= 0.64.2) 154 | - Yoga 155 | - React-Core/RCTImageHeaders (0.64.2): 156 | - glog 157 | - RCT-Folly (= 2020.01.13.00) 158 | - React-Core/Default 159 | - React-cxxreact (= 0.64.2) 160 | - React-jsi (= 0.64.2) 161 | - React-jsiexecutor (= 0.64.2) 162 | - React-perflogger (= 0.64.2) 163 | - Yoga 164 | - React-Core/RCTLinkingHeaders (0.64.2): 165 | - glog 166 | - RCT-Folly (= 2020.01.13.00) 167 | - React-Core/Default 168 | - React-cxxreact (= 0.64.2) 169 | - React-jsi (= 0.64.2) 170 | - React-jsiexecutor (= 0.64.2) 171 | - React-perflogger (= 0.64.2) 172 | - Yoga 173 | - React-Core/RCTNetworkHeaders (0.64.2): 174 | - glog 175 | - RCT-Folly (= 2020.01.13.00) 176 | - React-Core/Default 177 | - React-cxxreact (= 0.64.2) 178 | - React-jsi (= 0.64.2) 179 | - React-jsiexecutor (= 0.64.2) 180 | - React-perflogger (= 0.64.2) 181 | - Yoga 182 | - React-Core/RCTSettingsHeaders (0.64.2): 183 | - glog 184 | - RCT-Folly (= 2020.01.13.00) 185 | - React-Core/Default 186 | - React-cxxreact (= 0.64.2) 187 | - React-jsi (= 0.64.2) 188 | - React-jsiexecutor (= 0.64.2) 189 | - React-perflogger (= 0.64.2) 190 | - Yoga 191 | - React-Core/RCTTextHeaders (0.64.2): 192 | - glog 193 | - RCT-Folly (= 2020.01.13.00) 194 | - React-Core/Default 195 | - React-cxxreact (= 0.64.2) 196 | - React-jsi (= 0.64.2) 197 | - React-jsiexecutor (= 0.64.2) 198 | - React-perflogger (= 0.64.2) 199 | - Yoga 200 | - React-Core/RCTVibrationHeaders (0.64.2): 201 | - glog 202 | - RCT-Folly (= 2020.01.13.00) 203 | - React-Core/Default 204 | - React-cxxreact (= 0.64.2) 205 | - React-jsi (= 0.64.2) 206 | - React-jsiexecutor (= 0.64.2) 207 | - React-perflogger (= 0.64.2) 208 | - Yoga 209 | - React-Core/RCTWebSocket (0.64.2): 210 | - glog 211 | - RCT-Folly (= 2020.01.13.00) 212 | - React-Core/Default (= 0.64.2) 213 | - React-cxxreact (= 0.64.2) 214 | - React-jsi (= 0.64.2) 215 | - React-jsiexecutor (= 0.64.2) 216 | - React-perflogger (= 0.64.2) 217 | - Yoga 218 | - React-CoreModules (0.64.2): 219 | - FBReactNativeSpec (= 0.64.2) 220 | - RCT-Folly (= 2020.01.13.00) 221 | - RCTTypeSafety (= 0.64.2) 222 | - React-Core/CoreModulesHeaders (= 0.64.2) 223 | - React-jsi (= 0.64.2) 224 | - React-RCTImage (= 0.64.2) 225 | - ReactCommon/turbomodule/core (= 0.64.2) 226 | - React-cxxreact (0.64.2): 227 | - boost-for-react-native (= 1.63.0) 228 | - DoubleConversion 229 | - glog 230 | - RCT-Folly (= 2020.01.13.00) 231 | - React-callinvoker (= 0.64.2) 232 | - React-jsi (= 0.64.2) 233 | - React-jsinspector (= 0.64.2) 234 | - React-perflogger (= 0.64.2) 235 | - React-runtimeexecutor (= 0.64.2) 236 | - React-jsi (0.64.2): 237 | - boost-for-react-native (= 1.63.0) 238 | - DoubleConversion 239 | - glog 240 | - RCT-Folly (= 2020.01.13.00) 241 | - React-jsi/Default (= 0.64.2) 242 | - React-jsi/Default (0.64.2): 243 | - boost-for-react-native (= 1.63.0) 244 | - DoubleConversion 245 | - glog 246 | - RCT-Folly (= 2020.01.13.00) 247 | - React-jsiexecutor (0.64.2): 248 | - DoubleConversion 249 | - glog 250 | - RCT-Folly (= 2020.01.13.00) 251 | - React-cxxreact (= 0.64.2) 252 | - React-jsi (= 0.64.2) 253 | - React-perflogger (= 0.64.2) 254 | - React-jsinspector (0.64.2) 255 | - react-native-safe-area-context (3.3.0): 256 | - React-Core 257 | - react-native-simple-toast (1.1.3): 258 | - React-Core 259 | - Toast (~> 4.0.0) 260 | - React-perflogger (0.64.2) 261 | - React-RCTActionSheet (0.64.2): 262 | - React-Core/RCTActionSheetHeaders (= 0.64.2) 263 | - React-RCTAnimation (0.64.2): 264 | - FBReactNativeSpec (= 0.64.2) 265 | - RCT-Folly (= 2020.01.13.00) 266 | - RCTTypeSafety (= 0.64.2) 267 | - React-Core/RCTAnimationHeaders (= 0.64.2) 268 | - React-jsi (= 0.64.2) 269 | - ReactCommon/turbomodule/core (= 0.64.2) 270 | - React-RCTBlob (0.64.2): 271 | - FBReactNativeSpec (= 0.64.2) 272 | - RCT-Folly (= 2020.01.13.00) 273 | - React-Core/RCTBlobHeaders (= 0.64.2) 274 | - React-Core/RCTWebSocket (= 0.64.2) 275 | - React-jsi (= 0.64.2) 276 | - React-RCTNetwork (= 0.64.2) 277 | - ReactCommon/turbomodule/core (= 0.64.2) 278 | - React-RCTImage (0.64.2): 279 | - FBReactNativeSpec (= 0.64.2) 280 | - RCT-Folly (= 2020.01.13.00) 281 | - RCTTypeSafety (= 0.64.2) 282 | - React-Core/RCTImageHeaders (= 0.64.2) 283 | - React-jsi (= 0.64.2) 284 | - React-RCTNetwork (= 0.64.2) 285 | - ReactCommon/turbomodule/core (= 0.64.2) 286 | - React-RCTLinking (0.64.2): 287 | - FBReactNativeSpec (= 0.64.2) 288 | - React-Core/RCTLinkingHeaders (= 0.64.2) 289 | - React-jsi (= 0.64.2) 290 | - ReactCommon/turbomodule/core (= 0.64.2) 291 | - React-RCTNetwork (0.64.2): 292 | - FBReactNativeSpec (= 0.64.2) 293 | - RCT-Folly (= 2020.01.13.00) 294 | - RCTTypeSafety (= 0.64.2) 295 | - React-Core/RCTNetworkHeaders (= 0.64.2) 296 | - React-jsi (= 0.64.2) 297 | - ReactCommon/turbomodule/core (= 0.64.2) 298 | - React-RCTSettings (0.64.2): 299 | - FBReactNativeSpec (= 0.64.2) 300 | - RCT-Folly (= 2020.01.13.00) 301 | - RCTTypeSafety (= 0.64.2) 302 | - React-Core/RCTSettingsHeaders (= 0.64.2) 303 | - React-jsi (= 0.64.2) 304 | - ReactCommon/turbomodule/core (= 0.64.2) 305 | - React-RCTText (0.64.2): 306 | - React-Core/RCTTextHeaders (= 0.64.2) 307 | - React-RCTVibration (0.64.2): 308 | - FBReactNativeSpec (= 0.64.2) 309 | - RCT-Folly (= 2020.01.13.00) 310 | - React-Core/RCTVibrationHeaders (= 0.64.2) 311 | - React-jsi (= 0.64.2) 312 | - ReactCommon/turbomodule/core (= 0.64.2) 313 | - React-runtimeexecutor (0.64.2): 314 | - React-jsi (= 0.64.2) 315 | - ReactCommon/turbomodule/core (0.64.2): 316 | - DoubleConversion 317 | - glog 318 | - RCT-Folly (= 2020.01.13.00) 319 | - React-callinvoker (= 0.64.2) 320 | - React-Core (= 0.64.2) 321 | - React-cxxreact (= 0.64.2) 322 | - React-jsi (= 0.64.2) 323 | - React-perflogger (= 0.64.2) 324 | - RNCAsyncStorage (1.12.1): 325 | - React-Core 326 | - RNCMaskedView (0.1.11): 327 | - React 328 | - RNGestureHandler (1.10.3): 329 | - React-Core 330 | - RNReanimated (2.2.0): 331 | - DoubleConversion 332 | - FBLazyVector 333 | - FBReactNativeSpec 334 | - glog 335 | - RCT-Folly 336 | - RCTRequired 337 | - RCTTypeSafety 338 | - React 339 | - React-callinvoker 340 | - React-Core 341 | - React-Core/DevSupport 342 | - React-Core/RCTWebSocket 343 | - React-CoreModules 344 | - React-cxxreact 345 | - React-jsi 346 | - React-jsiexecutor 347 | - React-jsinspector 348 | - React-RCTActionSheet 349 | - React-RCTAnimation 350 | - React-RCTBlob 351 | - React-RCTImage 352 | - React-RCTLinking 353 | - React-RCTNetwork 354 | - React-RCTSettings 355 | - React-RCTText 356 | - React-RCTVibration 357 | - ReactCommon/turbomodule/core 358 | - Yoga 359 | - RNScreens (2.18.1): 360 | - React-Core 361 | - RNVectorIcons (8.1.0): 362 | - React-Core 363 | - Toast (4.0.0) 364 | - Yoga (1.14.0) 365 | - YogaKit (1.18.1): 366 | - Yoga (~> 1.14) 367 | 368 | DEPENDENCIES: 369 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 370 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 371 | - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) 372 | - Flipper (~> 0.75.1) 373 | - Flipper-DoubleConversion (= 1.1.7) 374 | - Flipper-Folly (~> 2.5.3) 375 | - Flipper-Glog (= 0.3.6) 376 | - Flipper-PeerTalk (~> 0.0.4) 377 | - Flipper-RSocket (~> 1.3) 378 | - FlipperKit (~> 0.75.1) 379 | - FlipperKit/Core (~> 0.75.1) 380 | - FlipperKit/CppBridge (~> 0.75.1) 381 | - FlipperKit/FBCxxFollyDynamicConvert (~> 0.75.1) 382 | - FlipperKit/FBDefines (~> 0.75.1) 383 | - FlipperKit/FKPortForwarding (~> 0.75.1) 384 | - FlipperKit/FlipperKitHighlightOverlay (~> 0.75.1) 385 | - FlipperKit/FlipperKitLayoutPlugin (~> 0.75.1) 386 | - FlipperKit/FlipperKitLayoutTextSearchable (~> 0.75.1) 387 | - FlipperKit/FlipperKitNetworkPlugin (~> 0.75.1) 388 | - FlipperKit/FlipperKitReactPlugin (~> 0.75.1) 389 | - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.75.1) 390 | - FlipperKit/SKIOSNetworkPlugin (~> 0.75.1) 391 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 392 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 393 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) 394 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 395 | - React (from `../node_modules/react-native/`) 396 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 397 | - React-Core (from `../node_modules/react-native/`) 398 | - React-Core/DevSupport (from `../node_modules/react-native/`) 399 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 400 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 401 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 402 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 403 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 404 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) 405 | - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) 406 | - react-native-simple-toast (from `../node_modules/react-native-simple-toast`) 407 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 408 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 409 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 410 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 411 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 412 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 413 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 414 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 415 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 416 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 417 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 418 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 419 | - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)" 420 | - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" 421 | - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) 422 | - RNReanimated (from `../node_modules/react-native-reanimated`) 423 | - RNScreens (from `../node_modules/react-native-screens`) 424 | - RNVectorIcons (from `../node_modules/react-native-vector-icons`) 425 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 426 | 427 | SPEC REPOS: 428 | trunk: 429 | - boost-for-react-native 430 | - CocoaAsyncSocket 431 | - Flipper 432 | - Flipper-DoubleConversion 433 | - Flipper-Folly 434 | - Flipper-Glog 435 | - Flipper-PeerTalk 436 | - Flipper-RSocket 437 | - FlipperKit 438 | - libevent 439 | - OpenSSL-Universal 440 | - Toast 441 | - YogaKit 442 | 443 | EXTERNAL SOURCES: 444 | DoubleConversion: 445 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 446 | FBLazyVector: 447 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 448 | FBReactNativeSpec: 449 | :path: "../node_modules/react-native/React/FBReactNativeSpec" 450 | glog: 451 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 452 | RCT-Folly: 453 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 454 | RCTRequired: 455 | :path: "../node_modules/react-native/Libraries/RCTRequired" 456 | RCTTypeSafety: 457 | :path: "../node_modules/react-native/Libraries/TypeSafety" 458 | React: 459 | :path: "../node_modules/react-native/" 460 | React-callinvoker: 461 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 462 | React-Core: 463 | :path: "../node_modules/react-native/" 464 | React-CoreModules: 465 | :path: "../node_modules/react-native/React/CoreModules" 466 | React-cxxreact: 467 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 468 | React-jsi: 469 | :path: "../node_modules/react-native/ReactCommon/jsi" 470 | React-jsiexecutor: 471 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 472 | React-jsinspector: 473 | :path: "../node_modules/react-native/ReactCommon/jsinspector" 474 | react-native-safe-area-context: 475 | :path: "../node_modules/react-native-safe-area-context" 476 | react-native-simple-toast: 477 | :path: "../node_modules/react-native-simple-toast" 478 | React-perflogger: 479 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 480 | React-RCTActionSheet: 481 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 482 | React-RCTAnimation: 483 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 484 | React-RCTBlob: 485 | :path: "../node_modules/react-native/Libraries/Blob" 486 | React-RCTImage: 487 | :path: "../node_modules/react-native/Libraries/Image" 488 | React-RCTLinking: 489 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 490 | React-RCTNetwork: 491 | :path: "../node_modules/react-native/Libraries/Network" 492 | React-RCTSettings: 493 | :path: "../node_modules/react-native/Libraries/Settings" 494 | React-RCTText: 495 | :path: "../node_modules/react-native/Libraries/Text" 496 | React-RCTVibration: 497 | :path: "../node_modules/react-native/Libraries/Vibration" 498 | React-runtimeexecutor: 499 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 500 | ReactCommon: 501 | :path: "../node_modules/react-native/ReactCommon" 502 | RNCAsyncStorage: 503 | :path: "../node_modules/@react-native-community/async-storage" 504 | RNCMaskedView: 505 | :path: "../node_modules/@react-native-community/masked-view" 506 | RNGestureHandler: 507 | :path: "../node_modules/react-native-gesture-handler" 508 | RNReanimated: 509 | :path: "../node_modules/react-native-reanimated" 510 | RNScreens: 511 | :path: "../node_modules/react-native-screens" 512 | RNVectorIcons: 513 | :path: "../node_modules/react-native-vector-icons" 514 | Yoga: 515 | :path: "../node_modules/react-native/ReactCommon/yoga" 516 | 517 | SPEC CHECKSUMS: 518 | boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c 519 | CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 520 | DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de 521 | FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b 522 | FBReactNativeSpec: 68b34d0afe1b305fe0c81c08efd16ed4234535a0 523 | Flipper: d3da1aa199aad94455ae725e9f3aa43f3ec17021 524 | Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 525 | Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c 526 | Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 527 | Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 528 | Flipper-RSocket: 127954abe8b162fcaf68d2134d34dc2bd7076154 529 | FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00 530 | glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62 531 | libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 532 | OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b 533 | RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c 534 | RCTRequired: 6d3e854f0e7260a648badd0d44fc364bc9da9728 535 | RCTTypeSafety: c1f31d19349c6b53085766359caac425926fafaa 536 | React: bda6b6d7ae912de97d7a61aa5c160db24aa2ad69 537 | React-callinvoker: 9840ea7e8e88ed73d438edb725574820b29b5baa 538 | React-Core: b5e385da7ce5f16a220fc60fd0749eae2c6120f0 539 | React-CoreModules: 17071a4e2c5239b01585f4aa8070141168ab298f 540 | React-cxxreact: 9be7b6340ed9f7c53e53deca7779f07cd66525ba 541 | React-jsi: 67747b9722f6dab2ffe15b011bcf6b3f2c3f1427 542 | React-jsiexecutor: 80c46bd381fd06e418e0d4f53672dc1d1945c4c3 543 | React-jsinspector: cc614ec18a9ca96fd275100c16d74d62ee11f0ae 544 | react-native-safe-area-context: 8465df05de8106c584b117f0e027e17174d6e02e 545 | react-native-simple-toast: b986e6c1befdc211af3df1bae293278a44e32990 546 | React-perflogger: 25373e382fed75ce768a443822f07098a15ab737 547 | React-RCTActionSheet: af7796ba49ffe4ca92e7277a5d992d37203f7da5 548 | React-RCTAnimation: 6a2e76ab50c6f25b428d81b76a5a45351c4d77aa 549 | React-RCTBlob: 02a2887023e0eed99391b6445b2e23a2a6f9226d 550 | React-RCTImage: ce5bf8e7438f2286d9b646a05d6ab11f38b0323d 551 | React-RCTLinking: ccd20742de14e020cb5f99d5c7e0bf0383aefbd9 552 | React-RCTNetwork: dfb9d089ab0753e5e5f55fc4b1210858f7245647 553 | React-RCTSettings: b14aef2d83699e48b410fb7c3ba5b66cd3291ae2 554 | React-RCTText: 41a2e952dd9adc5caf6fb68ed46b275194d5da5f 555 | React-RCTVibration: 24600e3b1aaa77126989bc58b6747509a1ba14f3 556 | React-runtimeexecutor: a9904c6d0218fb9f8b19d6dd88607225927668f9 557 | ReactCommon: 149906e01aa51142707a10665185db879898e966 558 | RNCAsyncStorage: cb9a623793918c6699586281f0b51cbc38f046f9 559 | RNCMaskedView: f127cd9652acfa31b91dcff613e07ba18b774db6 560 | RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211 561 | RNReanimated: 9c13c86454bfd54dab7505c1a054470bfecd2563 562 | RNScreens: f7ad633b2e0190b77b6a7aab7f914fad6f198d8d 563 | RNVectorIcons: 31cebfcf94e8cf8686eb5303ae0357da64d7a5a4 564 | Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 565 | Yoga: 575c581c63e0d35c9a83f4b46d01d63abc1100ac 566 | YogaKit: f782866e155069a2cca2517aafea43200b01fd5a 567 | 568 | PODFILE CHECKSUM: 17c9d28d1908c839e7181ea0ff0fb8d772b753c4 569 | 570 | COCOAPODS: 1.10.1 571 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DemoIntegrateRN", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node node_modules/react-native/local-cli/cli.js start", 7 | "android": "react-native run-android", 8 | "ios": "react-native run-ios", 9 | "test": "jest", 10 | "lint": "eslint ." 11 | }, 12 | "dependencies": { 13 | "@react-native-community/async-storage": "^1.8.1", 14 | "@react-native-community/masked-view": "^0.1.11", 15 | "@react-navigation/drawer": "^5.1.1", 16 | "@react-navigation/native": "^5.0.9", 17 | "@react-navigation/stack": "^5.1.1", 18 | "apisauce": "^2.1.1", 19 | "lodash": "^4.17.21", 20 | "react": "17.0.2", 21 | "react-native": "0.64.2", 22 | "react-native-gesture-handler": "^1.10.3", 23 | "react-native-reanimated": "^2.2.0", 24 | "react-native-safe-area-context": "^3.3.0", 25 | "react-native-screens": "^2.2.0", 26 | "react-native-simple-toast": "^1.1.3", 27 | "react-native-vector-icons": "^8.1.0", 28 | "react-redux": "^7.2.4", 29 | "redux": "^4.1.1", 30 | "redux-persist": "^6.0.0", 31 | "redux-saga": "^1.1.3" 32 | }, 33 | "devDependencies": { 34 | "@babel/core": "7.15.0", 35 | "@babel/runtime": "7.15.3", 36 | "@react-native-community/eslint-config": "3.0.0", 37 | "babel-jest": "27.0.6", 38 | "babel-plugin-transform-remove-console": "^6.9.4", 39 | "eslint": "7.32.0", 40 | "jest": "27.0.6", 41 | "metro-react-native-babel-preset": "0.66.2", 42 | "react-test-renderer": "17.0.2" 43 | }, 44 | "jest": { 45 | "preset": "react-native" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /react-native.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | assets: ['./assets/fonts/'], 3 | }; 4 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Demo Integrate React Native 2 | 3 | ## Description 4 | Integrating react native with existing Android and iOS native projects. 5 | 6 | ## How to run 7 | * Clone this repository. 8 | * At root directory run `npm install` to install the dependencies. 9 | ##### Android 10 | * Open folder `android` by Android Studio and run the project as normal. 11 | ##### iOS 12 | * At root directory `cd ios/ && pod install` 13 | * Go to `ios` folder and double click `DemoIntegrateRN.xcworkspace` to run the project. 14 | ##### Run the packager 15 | * To run react native part, you need to first start the development server. To do this, run the following command in the root directory `npm start` 16 | * From the native app and clicking the button to navigate to react native part, it should load the JavaScript code from the development server and display react native screens. 17 | 18 | ## Article 19 | https://medium.com/@duytq94/integrating-react-native-with-existing-android-and-ios-native-projects-175cc9517c1 20 | 21 | ## Demo 22 | https://youtu.be/p7yPbCJi8s8 23 | -------------------------------------------------------------------------------- /src/Components/NoDataView.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {StyleSheet, Text, TouchableOpacity, View} from 'react-native'; 3 | import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; 4 | import {fontFamily, fontSize} from '../const'; 5 | import colors from '../Themes/Colors'; 6 | 7 | const NoDataView = props => { 8 | return ( 9 | 10 | 15 | No data 16 | 17 | Try again 18 | 19 | 20 | ); 21 | }; 22 | 23 | const styles = StyleSheet.create({ 24 | viewNoData: { 25 | flex: 1, 26 | alignItems: 'center', 27 | justifyContent: 'center', 28 | }, 29 | textNoData: { 30 | fontFamily: fontFamily.regular, 31 | fontSize: fontSize.small, 32 | color: colors.grey, 33 | }, 34 | btnRetry: { 35 | marginTop: 20, 36 | width: 150, 37 | height: 45, 38 | borderRadius: 30, 39 | backgroundColor: colors.white, 40 | borderWidth: 1, 41 | borderColor: colors.primary, 42 | alignItems: 'center', 43 | justifyContent: 'center', 44 | }, 45 | textRetry: { 46 | fontSize: fontSize.large, 47 | fontFamily: fontFamily.demiBold, 48 | color: colors.primary, 49 | }, 50 | }); 51 | 52 | export default NoDataView; 53 | -------------------------------------------------------------------------------- /src/DetailFollower/DetailFollower.Screen.js: -------------------------------------------------------------------------------- 1 | import React, {Component} from 'react'; 2 | import {StatusBar, Text, TouchableOpacity, View} from 'react-native'; 3 | import {connect} from 'react-redux'; 4 | import styles from './DetailFollower.Style'; 5 | import colors from '../Themes/Colors'; 6 | import {barStyle} from '../const'; 7 | import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'; 8 | 9 | class DetailFollowerScreen extends Component { 10 | handleBackPress = () => { 11 | this.props.navigation.goBack(); 12 | return true; 13 | }; 14 | 15 | render() { 16 | return ( 17 | 18 | {this.renderToolbar()} 19 | 20 | Example this is the detail follower screen 21 | 22 | 23 | ); 24 | } 25 | 26 | renderToolbar = () => { 27 | return ( 28 | 29 |