Merge pull request #2210 from ecency/nt/rn-upgrade

[WIP] RN Upgrade 0.63 -> 0.70.3
This commit is contained in:
Feruz M 2022-11-07 19:52:57 +05:30 committed by GitHub
commit dccb7cf987
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
398 changed files with 22844 additions and 12945 deletions

2
.bundle/config Normal file
View File

@ -0,0 +1,2 @@
BUNDLE_PATH: "vendor/bundle"
BUNDLE_FORCE_RUBY_PLATFORM: 1

View File

@ -8,13 +8,11 @@
; Ignore polyfills
node_modules/react-native/Libraries/polyfills/.*
; These should not be required directly
; require from fbjs/lib instead: require('fbjs/lib/warning')
node_modules/warning/.*
; Flow doesn't support platforms
.*/Libraries/Utilities/LoadingView.js
.*/node_modules/resolve/test/resolver/malformed_package_json/package\.json$
[untyped]
.*/node_modules/@react-native-community/cli/.*/.*
@ -27,8 +25,9 @@ node_modules/react-native/flow/
[options]
emoji=true
esproposal.optional_chaining=enable
esproposal.nullish_coalescing=enable
exact_by_default=true
format.bracket_spacing=false
module.file_ext=.js
module.file_ext=.json
@ -44,10 +43,6 @@ suppress_type=$FlowFixMe
suppress_type=$FlowFixMeProps
suppress_type=$FlowFixMeState
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
[lints]
sketchy-null-number=warn
sketchy-null-mixed=warn
@ -57,8 +52,6 @@ nonstrict-import=warn
deprecated-type=warn
unsafe-getters-setters=warn
unnecessary-invariant=warn
signature-verification-failure=warn
deprecated-utility=error
[strict]
deprecated-type
@ -70,4 +63,4 @@ untyped-import
untyped-type-import
[version]
^0.122.0
^0.182.0

1
.gitattributes vendored
View File

@ -1 +0,0 @@
*.pbxproj -text

13
.gitignore vendored
View File

@ -20,6 +20,7 @@ DerivedData
*.hmap
*.ipa
*.xcuserstate
ios/.xcode.env.local
# Android/IntelliJ
#
@ -28,6 +29,8 @@ build/
.gradle
local.properties
*.iml
*.hprof
.cxx/
# node.js
#
@ -48,15 +51,17 @@ buck-out/
# For more information about the recommended setup visit:
# https://docs.fastlane.tools/best-practices/source-control/
*/fastlane/report.xml
*/fastlane/Preview.html
*/fastlane/screenshots
**/fastlane/report.xml
**/fastlane/Preview.html
**/fastlane/screenshots
**/fastlane/test_output
# Bundle artifact
*.jsbundle
# CocoaPods
# Ruby / CocoaPods
/ios/Pods/
/vendor/bundle/
config.js
!src/screens/steem-connect/config.js

1
.node-version Normal file
View File

@ -0,0 +1 @@
16

View File

@ -1,6 +1,7 @@
module.exports = {
arrowParens: 'avoid',
bracketSameLine: true,
bracketSpacing: false,
jsxBracketSameLine: true,
singleQuote: true,
trailingComma: 'all',
};

1
.ruby-version Normal file
View File

@ -0,0 +1 @@
2.7.5

5
App.js
View File

@ -1,9 +1,8 @@
// eslint-disable-next-line
import bugsnagInstance from './src/config/bugsnag';
// // eslint-disable-next-line
import App from './src/index';
if (__DEV__) {
import('./reactotron-config').then(() => console.log('Reactotron Configured'));
import('./reactotron-config').then(() => { console.log('Reactotron Configured')});
}
export default App;

6
Gemfile Normal file
View File

@ -0,0 +1,6 @@
source 'https://rubygems.org'
# You may use http://rbenv.org/ or https://rvm.io/ to install and use this version
ruby '2.7.5'
gem 'cocoapods', '~> 1.11', '>= 1.11.2'

View File

@ -3,6 +3,7 @@ apply plugin: 'com.google.gms.google-services'
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
import com.android.build.OutputFile
import org.apache.tools.ant.taskdefs.condition.Os
/**
* The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
@ -121,6 +122,15 @@ def jscFlavor = 'org.webkit:android-jsc:+'
* and the benefits of using Hermes will therefore be sharply reduced.
*/
def enableHermes = project.ext.react.get("enableHermes", false);
/**
* Architectures to build native code for.
*/
def reactNativeArchitectures() {
def value = project.getProperties().get("reactNativeArchitectures")
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
}
configurations.all {
resolutionStrategy {
force "com.facebook.soloader:soloader:0.9.0+"
@ -128,12 +138,9 @@ configurations.all {
}
}
android {
compileSdkVersion rootProject.ext.compileSdkVersion
ndkVersion rootProject.ext.ndkVersion
compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
checkReleaseBuilds false
@ -155,17 +162,75 @@ android {
missingDimensionStrategy 'store', 'play'
missingDimensionStrategy 'react-native-camera', 'general'
missingDimensionStrategy 'react-native-camera', 'mlkit'
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
if (isNewArchitectureEnabled()) {
// We configure the CMake build only if you decide to opt-in for the New Architecture.
externalNativeBuild {
cmake {
arguments "-DPROJECT_BUILD_DIR=$buildDir",
"-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
"-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
"-DNODE_MODULES_DIR=$rootDir/../node_modules",
"-DANDROID_STL=c++_shared"
}
}
if (!enableSeparateBuildPerCPUArchitecture) {
ndk {
abiFilters (*reactNativeArchitectures())
}
}
}
}
dexOptions {
javaMaxHeapSize "9g"
}
if (isNewArchitectureEnabled()) {
// We configure the NDK build only if you decide to opt-in for the New Architecture.
externalNativeBuild {
cmake {
path "$projectDir/src/main/jni/CMakeLists.txt"
}
}
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
into("$buildDir/react-ndk/exported")
}
def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
into("$buildDir/react-ndk/exported")
}
afterEvaluate {
// If you wish to add a custom TurboModule or component locally,
// you should uncomment this line.
// preBuild.dependsOn("generateCodegenArtifactsFromSchema")
preDebugBuild.dependsOn(packageReactNdkDebugLibs)
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
// Due to a bug inside AGP, we have to explicitly set a dependency
// between configureCMakeDebug* tasks and the preBuild tasks.
// This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild)
configureCMakeDebug.dependsOn(preDebugBuild)
reactNativeArchitectures().each { architecture ->
tasks.findByName("configureCMakeDebug[${architecture}]")?.configure {
dependsOn("preDebugBuild")
}
tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure {
dependsOn("preReleaseBuild")
}
}
}
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
include (*reactNativeArchitectures())
}
}
signingConfigs {
@ -197,7 +262,7 @@ android {
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
defaultConfig.versionCode * 1000 + versionCodes.get(abi)
}
}
}
@ -205,27 +270,47 @@ android {
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
//noinspection GradleDynamicVersion
implementation 'com.facebook.react:react-native:+' // From node_modules
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
implementation "androidx.core:core-splashscreen:1.0.0"
implementation 'com.android.support:multidex:2.0.1'
implementation project(':react-native-pager-view')
implementation 'com.getkeepsafe.relinker:relinker:1.4.4'
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
//noinspection GradleDynamicVersion
implementation("com.facebook.react:hermes-engine:+") { // From node_modules
exclude group:'com.facebook.fbjni'
}
} else {
implementation jscFlavor
}
}
if (isNewArchitectureEnabled()) {
// If new architecture is enabled, we let you build RN from source
// Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
// This will be applied to all the imported transtitive dependency.
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute(module("com.facebook.react:react-native"))
.using(project(":ReactAndroid"))
.because("On New Architecture we're building React Native from source")
substitute(module("com.facebook.react:hermes-engine"))
.using(project(":ReactAndroid:hermes-engine"))
.because("On New Architecture we're building Hermes from source")
}
}
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
from configurations.implementation
into 'libs'
}
@ -238,3 +323,11 @@ bugsnag {
uploadReactNativeMappings = true
overwrite = true
}
def isNewArchitectureEnabled() {
// To opt-in for the New Architecture, you can either:
// - Set `newArchEnabled` to true inside the `gradle.properties` file
// - Invoke gradle with `-newArchEnabled=true`
// - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
}

View File

@ -11,3 +11,6 @@
# -keep class com.facebook.hermes.unicode.** { *; }
# -keep class com.facebook.jni.** { *; }
# -keep class com.swmansion.reanimated.** { *; }
# -keep class com.facebook.react.turbomodule.** { *; }

View File

@ -4,5 +4,10 @@
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
<application
android:usesCleartextTraffic="true"
tools:targetApi="28"
tools:ignore="GoogleAppIndexingWarning">
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
</application>
</manifest>

View File

@ -0,0 +1,73 @@
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*/
package app.esteem.mobile.android;
// import android.content.Context;
// import com.facebook.flipper.android.AndroidFlipperClient;
// import com.facebook.flipper.android.utils.FlipperUtils;
// import com.facebook.flipper.core.FlipperClient;
// import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
// import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
// import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
// import com.facebook.flipper.plugins.inspector.DescriptorMapping;
// import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
// import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
// import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
// import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
// import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
// import com.facebook.react.ReactInstanceEventListener;
// import com.facebook.react.ReactInstanceManager;
// import com.facebook.react.bridge.ReactContext;
// import com.facebook.react.modules.network.NetworkingModule;
// import okhttp3.OkHttpClient;
public class ReactNativeFlipper {
// public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
// if (FlipperUtils.shouldEnableFlipper(context)) {
// final FlipperClient client = AndroidFlipperClient.getInstance(context);
// client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
// client.addPlugin(new ReactFlipperPlugin());
// client.addPlugin(new DatabasesFlipperPlugin(context));
// client.addPlugin(new SharedPreferencesFlipperPlugin(context));
// client.addPlugin(CrashReporterPlugin.getInstance());
// NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
// NetworkingModule.setCustomClientBuilder(
// new NetworkingModule.CustomClientBuilder() {
// @Override
// public void apply(OkHttpClient.Builder builder) {
// builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
// }
// });
// client.addPlugin(networkFlipperPlugin);
// client.start();
// // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
// // Hence we run if after all native modules have been initialized
// ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
// if (reactContext == null) {
// reactInstanceManager.addReactInstanceEventListener(
// new ReactInstanceEventListener() {
// @Override
// public void onReactContextInitialized(ReactContext reactContext) {
// reactInstanceManager.removeReactInstanceEventListener(this);
// reactContext.runOnNativeModulesQueueThread(
// new Runnable() {
// @Override
// public void run() {
// client.addPlugin(new FrescoFlipperPlugin());
// }
// });
// }
// });
// } else {
// client.addPlugin(new FrescoFlipperPlugin());
// }
// }
// }
}

View File

@ -1,4 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="app.esteem.mobile.android">
<uses-permission android:name="android.permission.INTERNET" />
@ -27,27 +28,21 @@
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:largeHeap="true"
android:theme="@style/AppTheme">
<!-- Add this SplashActivity -->
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
android:theme="@style/BootTheme">
<activity
android:name=".MainActivity"
android:launchMode="singleTask"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
android:windowSoftInputMode="adjustResize"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter android:label="Ecency" android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
@ -155,7 +150,6 @@
<data android:mimeType="image/*" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_notification" />
@ -165,6 +159,10 @@
<meta-data
android:name="com.bugsnag.android.API_KEY"
android:value="88a8a25738939a80ba49f1d5289dbc80" />
<meta-data
tools:replace="android:value"
android:name="google_analytics_adid_collection_enabled"
android:value="false" />
</application>
</manifest>

View File

@ -1,26 +0,0 @@
package app.esteem.mobile.android;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null); //https://stackoverflow.com/questions/57709742/unable-to-instantiate-fragment-com-swmansion-rnscreens-screen
Intent intent = new Intent(this, MainActivity.class);
//workaround for getInitialNotification and onNotificationOpenedApp returning null always
//TOOD: use react-native-bootsplash instead of react-native-splash-screen as recommended by firebase
//firebase issue ref: https://github.com/invertase/react-native-firebase/issues/3469
//ecency project card ref: https://github.com/orgs/ecency/projects/2#card-85455956
Bundle extras = getIntent().getExtras();
if (extras != null) {
intent.putExtras(extras);
}
startActivity(intent);
finish();
}
}

View File

@ -3,11 +3,10 @@ package app.esteem.mobile.android;
import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
import com.facebook.react.ReactRootView;
import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
import android.content.Intent;
import android.content.res.Configuration;
import org.devio.rn.splashscreen.SplashScreen;
import android.os.Bundle;
import com.zoontek.rnbootsplash.RNBootSplash;
public class MainActivity extends ReactActivity {
/**
@ -21,12 +20,7 @@ public class MainActivity extends ReactActivity {
@Override
protected ReactActivityDelegate createReactActivityDelegate() {
return new ReactActivityDelegate(this, getMainComponentName()) {
@Override
protected ReactRootView createRootView() {
return new RNGestureHandlerEnabledRootView(MainActivity.this);
}
};
return new MainActivityDelegate(this, getMainComponentName());
}
@Override
@ -37,9 +31,10 @@ public class MainActivity extends ReactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
RNBootSplash.init(this); // <- initialize the splash screen
super.onCreate(null); //https://stackoverflow.com/questions/57709742/unable-to-instantiate-fragment-com-swmansion-rnscreens-screen
SplashScreen.show(this);
}
//native side reference: https://github.com/facebook/react-native/issues/28823#issuecomment-642032481
@Override
public void onConfigurationChanged(Configuration newConfig) {
@ -47,5 +42,28 @@ public class MainActivity extends ReactActivity {
getReactInstanceManager().onConfigurationChanged(this, newConfig);
Intent intent = new Intent("onConfigurationChanged");
intent.putExtra("newConfig", newConfig);
this.sendBroadcast(intent); }
this.sendBroadcast(intent);
}
public static class MainActivityDelegate extends ReactActivityDelegate {
public MainActivityDelegate(ReactActivity activity, String mainComponentName) {
super(activity, mainComponentName);
}
@Override
protected ReactRootView createRootView() {
ReactRootView reactRootView = new ReactRootView(getContext());
// If you opted-in for the New Architecture, we enable the Fabric Renderer.
reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
return reactRootView;
}
@Override
protected boolean isConcurrentRootEnabled() {
// If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).
// More on this on https://reactjs.org/blog/2022/03/29/react-v18.html
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
}
}
}

View File

@ -8,7 +8,9 @@ import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.config.ReactFeatureFlags;
import com.facebook.soloader.SoLoader;
import app.esteem.mobile.android.newarchitecture.MainApplicationReactNativeHost;
import androidx.multidex.MultiDexApplication;
import com.getkeepsafe.relinker.ReLinker;
import com.bugsnag.android.Bugsnag;
@ -22,8 +24,14 @@ import com.reactnativepagerview.PagerViewPackage;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import com.facebook.react.bridge.JSIModulePackage;
import com.swmansion.reanimated.ReanimatedJSIModulePackage;
public class MainApplication extends MultiDexApplication implements ReactApplication {
private final ReactNativeHost mNewArchitectureNativeHost =
new MainApplicationReactNativeHost(this);
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
@ -45,11 +53,20 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
protected String getJSMainModuleName() {
return "index";
}
@Override
protected JSIModulePackage getJSIModulePackage() {
return new ReanimatedJSIModulePackage();
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
return mNewArchitectureNativeHost;
} else {
return mReactNativeHost;
}
}
@Override
@ -60,6 +77,9 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
ReLinker.loadLibrary(this, "bugsnag-plugin-android-anr");
// Start bugsnag
Bugsnag.start(this /* app context */);
// If you opted-in for the New Architecture, we enable the TurboModule system
ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
SoLoader.init(this, /* native exopackage */ false);
// Uncomment below line to Debug Webview
// WebView.setWebContentsDebuggingEnabled(true);

View File

@ -0,0 +1,116 @@
package app.esteem.mobile.android.newarchitecture;
import android.app.Application;
import androidx.annotation.NonNull;
import com.facebook.react.PackageList;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
import com.facebook.react.bridge.JSIModulePackage;
import com.facebook.react.bridge.JSIModuleProvider;
import com.facebook.react.bridge.JSIModuleSpec;
import com.facebook.react.bridge.JSIModuleType;
import com.facebook.react.bridge.JavaScriptContextHolder;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.UIManager;
import com.facebook.react.fabric.ComponentFactory;
import com.facebook.react.fabric.CoreComponentsRegistry;
import com.facebook.react.fabric.FabricJSIModuleProvider;
import com.facebook.react.fabric.ReactNativeConfig;
import com.facebook.react.uimanager.ViewManagerRegistry;
import app.esteem.mobile.android.BuildConfig;
import app.esteem.mobile.android.newarchitecture.components.MainComponentsRegistry;
import app.esteem.mobile.android.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;
import java.util.ArrayList;
import java.util.List;
/**
* A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both
* TurboModule delegates and the Fabric Renderer.
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
public class MainApplicationReactNativeHost extends ReactNativeHost {
public MainApplicationReactNativeHost(Application application) {
super(application);
}
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
// TurboModules must also be loaded here providing a valid TurboReactPackage implementation:
// packages.add(new TurboReactPackage() { ... });
// If you have custom Fabric Components, their ViewManagers should also be loaded here
// inside a ReactPackage.
return packages;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
@NonNull
@Override
protected ReactPackageTurboModuleManagerDelegate.Builder
getReactPackageTurboModuleManagerDelegateBuilder() {
// Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary
// for the new architecture and to use TurboModules correctly.
return new MainApplicationTurboModuleManagerDelegate.Builder();
}
@Override
protected JSIModulePackage getJSIModulePackage() {
return new JSIModulePackage() {
@Override
public List<JSIModuleSpec> getJSIModules(
final ReactApplicationContext reactApplicationContext,
final JavaScriptContextHolder jsContext) {
final List<JSIModuleSpec> specs = new ArrayList<>();
// Here we provide a new JSIModuleSpec that will be responsible of providing the
// custom Fabric Components.
specs.add(
new JSIModuleSpec() {
@Override
public JSIModuleType getJSIModuleType() {
return JSIModuleType.UIManager;
}
@Override
public JSIModuleProvider<UIManager> getJSIModuleProvider() {
final ComponentFactory componentFactory = new ComponentFactory();
CoreComponentsRegistry.register(componentFactory);
// Here we register a Components Registry.
// The one that is generated with the template contains no components
// and just provides you the one from React Native core.
MainComponentsRegistry.register(componentFactory);
final ReactInstanceManager reactInstanceManager = getReactInstanceManager();
ViewManagerRegistry viewManagerRegistry =
new ViewManagerRegistry(
reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));
return new FabricJSIModuleProvider(
reactApplicationContext,
componentFactory,
ReactNativeConfig.DEFAULT_CONFIG,
viewManagerRegistry);
}
});
return specs;
}
};
}
}

View File

@ -0,0 +1,36 @@
package app.esteem.mobile.android.newarchitecture.components;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.fabric.ComponentFactory;
import com.facebook.soloader.SoLoader;
/**
* Class responsible to load the custom Fabric Components. This class has native methods and needs a
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/
* folder for you).
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
@DoNotStrip
public class MainComponentsRegistry {
static {
SoLoader.loadLibrary("fabricjni");
}
@DoNotStrip private final HybridData mHybridData;
@DoNotStrip
private native HybridData initHybrid(ComponentFactory componentFactory);
@DoNotStrip
private MainComponentsRegistry(ComponentFactory componentFactory) {
mHybridData = initHybrid(componentFactory);
}
@DoNotStrip
public static MainComponentsRegistry register(ComponentFactory componentFactory) {
return new MainComponentsRegistry(componentFactory);
}
}

View File

@ -0,0 +1,48 @@
package app.esteem.mobile.android.newarchitecture.modules;
import com.facebook.jni.HybridData;
import com.facebook.react.ReactPackage;
import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.soloader.SoLoader;
import java.util.List;
/**
* Class responsible to load the TurboModules. This class has native methods and needs a
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/
* folder for you).
*
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
* `newArchEnabled` property). Is ignored otherwise.
*/
public class MainApplicationTurboModuleManagerDelegate
extends ReactPackageTurboModuleManagerDelegate {
private static volatile boolean sIsSoLibraryLoaded;
protected MainApplicationTurboModuleManagerDelegate(
ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) {
super(reactApplicationContext, packages);
}
protected native HybridData initHybrid();
native boolean canCreateTurboModule(String moduleName);
public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {
protected MainApplicationTurboModuleManagerDelegate build(
ReactApplicationContext context, List<ReactPackage> packages) {
return new MainApplicationTurboModuleManagerDelegate(context, packages);
}
}
@Override
protected synchronized void maybeLoadOtherSoLibraries() {
if (!sIsSoLibraryLoaded) {
// If you change the name of your application .so file in the Android.mk file,
// make sure you update the name here as well.
SoLoader.loadLibrary("rndiffapp_appmodules");
sIsSoLibraryLoaded = true;
}
}
}

View File

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.13)
# Define the library name here.
project(rndiffapp_appmodules)
# This file includes all the necessary to let you build your application with the New Architecture.
include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake)

View File

@ -0,0 +1,32 @@
#include "MainApplicationModuleProvider.h"
#include <rncli.h>
#include <rncore.h>
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
const std::string &moduleName,
const JavaTurboModule::InitParams &params) {
// Here you can provide your own module provider for TurboModules coming from
// either your application or from external libraries. The approach to follow
// is similar to the following (for a library called `samplelibrary`:
//
// auto module = samplelibrary_ModuleProvider(moduleName, params);
// if (module != nullptr) {
// return module;
// }
// return rncore_ModuleProvider(moduleName, params);
// Module providers autolinked by RN CLI
auto rncli_module = rncli_ModuleProvider(moduleName, params);
if (rncli_module != nullptr) {
return rncli_module;
}
return rncore_ModuleProvider(moduleName, params);
}
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,16 @@
#pragma once
#include <memory>
#include <string>
#include <ReactCommon/JavaTurboModule.h>
namespace facebook {
namespace react {
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
const std::string &moduleName,
const JavaTurboModule::InitParams &params);
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,45 @@
#include "MainApplicationTurboModuleManagerDelegate.h"
#include "MainApplicationModuleProvider.h"
namespace facebook {
namespace react {
jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata>
MainApplicationTurboModuleManagerDelegate::initHybrid(
jni::alias_ref<jhybridobject>) {
return makeCxxInstance();
}
void MainApplicationTurboModuleManagerDelegate::registerNatives() {
registerHybrid({
makeNativeMethod(
"initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
makeNativeMethod(
"canCreateTurboModule",
MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
});
}
std::shared_ptr<TurboModule>
MainApplicationTurboModuleManagerDelegate::getTurboModule(
const std::string &name,
const std::shared_ptr<CallInvoker> &jsInvoker) {
// Not implemented yet: provide pure-C++ NativeModules here.
return nullptr;
}
std::shared_ptr<TurboModule>
MainApplicationTurboModuleManagerDelegate::getTurboModule(
const std::string &name,
const JavaTurboModule::InitParams &params) {
return MainApplicationModuleProvider(name, params);
}
bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
const std::string &name) {
return getTurboModule(name, nullptr) != nullptr ||
getTurboModule(name, {.moduleName = name}) != nullptr;
}
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,38 @@
#include <memory>
#include <string>
#include <ReactCommon/TurboModuleManagerDelegate.h>
#include <fbjni/fbjni.h>
namespace facebook {
namespace react {
class MainApplicationTurboModuleManagerDelegate
: public jni::HybridClass<
MainApplicationTurboModuleManagerDelegate,
TurboModuleManagerDelegate> {
public:
// Adapt it to the package you used for your Java class.
static constexpr auto kJavaDescriptor =
"Lapp/esteem/mobile/android/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
static void registerNatives();
std::shared_ptr<TurboModule> getTurboModule(
const std::string &name,
const std::shared_ptr<CallInvoker> &jsInvoker) override;
std::shared_ptr<TurboModule> getTurboModule(
const std::string &name,
const JavaTurboModule::InitParams &params) override;
/**
* Test-only method. Allows user to verify whether a TurboModule can be
* created by instances of this class.
*/
bool canCreateTurboModule(const std::string &name);
};
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,65 @@
#include "MainComponentsRegistry.h"
#include <CoreComponentsRegistry.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <react/renderer/components/rncore/ComponentDescriptors.h>
#include <rncli.h>
namespace facebook {
namespace react {
MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
std::shared_ptr<ComponentDescriptorProviderRegistry const>
MainComponentsRegistry::sharedProviderRegistry() {
auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
// Autolinked providers registered by RN CLI
rncli_registerProviders(providerRegistry);
// Custom Fabric Components go here. You can register custom
// components coming from your App or from 3rd party libraries here.
//
// providerRegistry->add(concreteComponentDescriptorProvider<
// AocViewerComponentDescriptor>());
return providerRegistry;
}
jni::local_ref<MainComponentsRegistry::jhybriddata>
MainComponentsRegistry::initHybrid(
jni::alias_ref<jclass>,
ComponentFactory *delegate) {
auto instance = makeCxxInstance(delegate);
auto buildRegistryFunction =
[](EventDispatcher::Weak const &eventDispatcher,
ContextContainer::Shared const &contextContainer)
-> ComponentDescriptorRegistry::Shared {
auto registry = MainComponentsRegistry::sharedProviderRegistry()
->createComponentDescriptorRegistry(
{eventDispatcher, contextContainer});
auto mutableRegistry =
std::const_pointer_cast<ComponentDescriptorRegistry>(registry);
mutableRegistry->setFallbackComponentDescriptor(
std::make_shared<UnimplementedNativeViewComponentDescriptor>(
ComponentDescriptorParameters{
eventDispatcher, contextContainer, nullptr}));
return registry;
};
delegate->buildRegistryFunction = buildRegistryFunction;
return instance;
}
void MainComponentsRegistry::registerNatives() {
registerHybrid({
makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
});
}
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,32 @@
#pragma once
#include <ComponentFactory.h>
#include <fbjni/fbjni.h>
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
namespace facebook {
namespace react {
class MainComponentsRegistry
: public facebook::jni::HybridClass<MainComponentsRegistry> {
public:
// Adapt it to the package you used for your Java class.
constexpr static auto kJavaDescriptor =
"Lapp/esteem/mobile/android/newarchitecture/components/MainComponentsRegistry;";
static void registerNatives();
MainComponentsRegistry(ComponentFactory *delegate);
private:
static std::shared_ptr<ComponentDescriptorProviderRegistry const>
sharedProviderRegistry();
static jni::local_ref<jhybriddata> initHybrid(
jni::alias_ref<jclass>,
ComponentFactory *delegate);
};
} // namespace react
} // namespace facebook

View File

@ -0,0 +1,11 @@
#include <fbjni/fbjni.h>
#include "MainApplicationTurboModuleManagerDelegate.h"
#include "MainComponentsRegistry.h"
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
return facebook::jni::initialize(vm, [] {
facebook::react::MainApplicationTurboModuleManagerDelegate::
registerNatives();
facebook::react::MainComponentsRegistry::registerNatives();
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

View File

@ -1,9 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/splashscreen_bg"/>
<item
android:drawable="@drawable/ecency_logo"
android:gravity="center" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
android:insetTop="@dimen/abc_edit_text_inset_top_material"
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
<selector>
<!--
This file is a copy of abc_edit_text_material (https://bit.ly/3k8fX7I).
The item below with state_pressed="false" and state_focused="false" causes a NullPointerException.
NullPointerException:tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)'
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
For more info, see https://bit.ly/3CdLStv (react-native/pull/29452) and https://bit.ly/3nxOMoR.
-->
<item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
<item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
</selector>
</inset>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_splash"
android:orientation="vertical">
</LinearLayout>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="splashBackground" type="color">#1e2835</item>
<item name="notification_icon" type="color">#1e2835</item>
<color name="primary_dark">#ffffff</color>
<color name="splashscreen_bg">#1e2835</color>
<color name="app_bg">#1e2835</color>
</resources>

View File

@ -1,9 +1,9 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:textColor">#000000</item>
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
<!-- Add the following line to set the default status bar color for all the app. -->
<item name="android:statusBarColor">@color/app_bg</item>
@ -14,10 +14,11 @@
<item name="android:windowBackground">@color/app_bg</item>
</style>
<!-- Adds the splash screen definition -->
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:statusBarColor">@color/splashscreen_bg</item>
<item name="android:background">@drawable/background_splash</item>
<!-- BootTheme should inherit from Theme.SplashScreen -->
<style name="BootTheme" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/splashscreen_bg</item>
<item name="windowSplashScreenAnimatedIcon">@drawable/background_splash</item>
<item name="postSplashScreenTheme">@style/AppTheme</item>
</style>
</resources>

View File

@ -14,22 +14,32 @@ def getNpmVersionArray() { // major [0], minor [1], patch [2]
buildscript {
ext {
buildToolsVersion = "30.0.2"
minSdkVersion = 21
compileSdkVersion = 30
targetSdkVersion = 30
buildToolsVersion = "31.0.0"
minSdkVersion = 23
compileSdkVersion = 33
targetSdkVersion = 33
googlePlayServicesVisionVersion = "17.0.2"
googlePlayServicesVersion = "16.+"
firebaseVersion = "17.3.4"
kotlinVersion = "1.6.0"
if (System.properties['os.arch'] == "aarch64") {
// For M1 Users we need to use the NDK 24 which added support for aarch64
ndkVersion = "24.0.8215888"
} else {
// Otherwise we default to the side-by-side NDK version from AGP.
ndkVersion = "21.4.7075529"
}
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath('com.android.tools.build:gradle:4.1.0')
classpath("com.android.tools.build:gradle:7.2.1")
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.bugsnag:bugsnag-android-gradle-plugin:5.+'
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("de.undercouch:gradle-download-task:5.0.1")
classpath 'com.bugsnag:bugsnag-android-gradle-plugin:7.+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@ -38,7 +48,6 @@ buildscript {
allprojects {
repositories {
google()
mavenCentral()
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
@ -51,19 +60,11 @@ allprojects {
maven { url "https://www.jitpack.io" }
//TODO: remove when replacement for selective groups is available
//the jcenter will be accessible as read-only indefinitely so we should be
//good for now with these selective packages as they are not available off of
//jCenter
jcenter() {
mavenCentral {
// We don't want to fetch react-native from Maven Central as there are
// older versions over there.
content {
// these groups only available in jcenter otherwise we don't want to rely on jcenter.
includeGroup("com.facebook.yoga")
includeGroup("com.facebook.fbjni")
includeGroup("com.henninghall.android")
includeModule("com.yqritc", "android-scalablevideoview")
includeModule("com.wei.android.lib", "fingerprintidentify")
excludeGroup "com.facebook.react"
}
}
}

View File

@ -9,8 +9,8 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
@ -23,4 +23,18 @@
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
org.gradle.jvmargs=-Xmx10248m
# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.125.0
# Use this property to specify which architecture you want to build.
# You can also override it from the CLI using
# ./gradlew <task> -PreactNativeArchitectures=x86_64
reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
# Use this property to enable support to the new architecture.
# This will allow you to use TurboModules and the Fabric render in
# your application. You should enable this flag either if you want
# to write custom TurboModules/Fabric components OR use libraries that
# are providing them.
newArchEnabled=false

Binary file not shown.

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

265
android/gradlew vendored
View File

@ -1,7 +1,7 @@
#!/usr/bin/env sh
#!/bin/sh
#
# Copyright 2015 the original author or authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@ -17,41 +17,82 @@
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn () {
echo "$*"
}
} >&2
die () {
echo
@ -65,30 +106,23 @@ cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@ -97,7 +131,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
@ -105,80 +139,95 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

21
android/gradlew.bat vendored
View File

@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@ -54,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@ -64,28 +64,13 @@ echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell

View File

@ -3,3 +3,10 @@ apply from: file("../node_modules/@react-native-community/cli-platform-android/n
include ':react-native-pager-view'
project(':react-native-pager-view').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-pager-view/android')
include ':app'
includeBuild('../node_modules/react-native-gradle-plugin')
if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") {
include(":ReactAndroid")
project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid')
include(":ReactAndroid:hermes-engine")
project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine')
}

View File

@ -62,8 +62,6 @@ printf "\n.env created with contents:\n"
cat .env
printf "\nEND OF .env\n"
npx jetify
cd ios && pod install && cd ..
cd android && ./gradlew clean && cd ..

View File

@ -5,6 +5,9 @@ module.exports = (api) => {
if (babelEnv !== 'development') {
plugins.push(['transform-remove-console', { exclude: ['error', 'warn'] }]);
}
//Reanimated should be last plugin added in babel
plugins.push(['react-native-reanimated/plugin']);
return {
presets: ['module:metro-react-native-babel-preset'],
sourceMaps: true,

View File

@ -3,14 +3,13 @@ import AppCenter from 'appcenter';
import { name as appName } from './app.json';
import 'core-js';
import 'intl';
import 'intl/locale-data/jsonp/en-US'
import 'intl/locale-data/jsonp/en-US';
// set check frequency options
const EcencyApp = require('./App').default;
AppCenter.setLogLevel(AppCenter.LogLevel.VERBOSE);
// TODO Remove ignoreLogs when referenced issue is fixed properly
// ref: https://github.com/ecency/ecency-mobile/issues/2466
// ignore warnings

11
ios/.xcode.env Normal file
View File

@ -0,0 +1,11 @@
# This `.xcode.env` file is versioned and is used to source the environment
# used when running script phases inside Xcode.
# To customize your local environment, you can create an `.xcode.env.local`
# file that is not versioned.
# NODE_BINARY variable contains the PATH to the node executable.
#
# Customize the NODE_BINARY variable here.
# For example, to use nvm with brew, add the following line
# . "$(brew --prefix nvm)/nvm.sh" --no-use
export NODE_BINARY=$(command -v node)

View File

@ -1,53 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>3.0.35</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2814</string>
<key>LSRequiresIPhoneOS</key>
<true />
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true />
</dict>
</dict>
</dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string />
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false />
</dict>
</plist>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>3.0.35</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>2814</string>
</dict>
</plist>

File diff suppressed because one or more lines are too long

View File

@ -1,125 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1230"
version = "1.3">
<BuildAction
parallelizeBuildables = "NO"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D2A28121D9B038B00D4039D"
BuildableName = "libReact.a"
BlueprintName = "React-tvOS"
ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "Ecency-tvOS.app"
BlueprintName = "Ecency-tvOS"
ReferencedContainer = "container:Ecency.xcodeproj">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "NO"
buildForArchiving = "NO"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
BuildableName = "Ecency-tvOSTests.xctest"
BlueprintName = "Ecency-tvOSTests"
ReferencedContainer = "container:Ecency.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "Ecency-tvOS.app"
BlueprintName = "Ecency-tvOS"
ReferencedContainer = "container:Ecency.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
BuildableName = "Ecency-tvOSTests.xctest"
BlueprintName = "Ecency-tvOSTests"
ReferencedContainer = "container:Ecency.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "Ecency-tvOS.app"
BlueprintName = "Ecency-tvOS"
ReferencedContainer = "container:Ecency.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
BuildableName = "Ecency-tvOS.app"
BlueprintName = "Ecency-tvOS"
ReferencedContainer = "container:Ecency.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,68 +0,0 @@
#import "AppDelegate.h"
#import "RNSplashScreen.h"
#import <AppCenterReactNativeShared/AppCenterReactNativeShared.h>
#import <AppCenterReactNative.h>
#import <AppCenterReactNativeAnalytics.h>
#import <AppCenterReactNativeCrashes.h>
#import <Bugsnag/Bugsnag.h>
#import <Firebase.h>
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <React/RCTLinkingManager.h>
#import "Orientation.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [RCTLinkingManager application:application openURL:url options:options];
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity
restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
return [RCTLinkingManager application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([FIRApp defaultApp] == nil) {
[FIRApp configure];
}
[AppCenterReactNative register];
[AppCenterReactNativeAnalytics registerWithInitiallyEnabled:true];
[AppCenterReactNativeCrashes registerWithAutomaticProcessing];
[Bugsnag start];
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"Ecency"
initialProperties:nil];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
[RNSplashScreen show];
return YES;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
}
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return [Orientation getOrientation];
}
@end

176
ios/Ecency/AppDelegate.mm Normal file
View File

@ -0,0 +1,176 @@
#import "AppDelegate.h"
#import <AppCenterReactNative.h>
#import <AppCenterReactNativeAnalytics.h>
#import <AppCenterReactNativeCrashes.h>
#import <Bugsnag/Bugsnag.h>
#import <Firebase.h>
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
#import <React/RCTAppSetupUtils.h>
#import <React/RCTLinkingManager.h>
#import "RNBootSplash.h"
#import "Orientation.h"
#if RCT_NEW_ARCH_ENABLED
#import <React/CoreModulesPlugins.h>
#import <React/RCTCxxBridgeDelegate.h>
#import <React/RCTFabricSurfaceHostingProxyRootView.h>
#import <React/RCTSurfacePresenter.h>
#import <React/RCTSurfacePresenterBridgeAdapter.h>
#import <ReactCommon/RCTTurboModuleManager.h>
#import <react/config/ReactNativeConfig.h>
static NSString *const kRNConcurrentRoot = @"concurrentRoot";
@interface AppDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate> {
RCTTurboModuleManager *_turboModuleManager;
RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;
std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig;
facebook::react::ContextContainer::Shared _contextContainer;
}
@end
#endif
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
return [RCTLinkingManager application:application openURL:url options:options];
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity
restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
return [RCTLinkingManager application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
RCTAppSetupPrepareApp(application);
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
#if RCT_NEW_ARCH_ENABLED
_contextContainer = std::make_shared<facebook::react::ContextContainer const>();
_reactNativeConfig = std::make_shared<facebook::react::EmptyReactNativeConfig const>();
_contextContainer->insert("ReactNativeConfig", _reactNativeConfig);
_bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];
bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;
#endif
NSDictionary *initProps = [self prepareInitialProps];
UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"Ecency", initProps);
if (@available(iOS 13.0, *)) {
rootView.backgroundColor = [UIColor systemBackgroundColor];
} else {
rootView.backgroundColor = [UIColor whiteColor];
}
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
//third party initiations
if ([FIRApp defaultApp] == nil) {
[FIRApp configure];
}
[AppCenterReactNative register];
[AppCenterReactNativeAnalytics registerWithInitiallyEnabled:true];
[AppCenterReactNativeCrashes registerWithAutomaticProcessing];
[RNBootSplash initWithStoryboard:@"BootSplash" rootView:rootView];
[Bugsnag start];
return YES;
}
/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.
///
/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html
/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).
/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.
- (BOOL)concurrentRootEnabled
{
// Switch this bool to turn on and off the concurrent root
return true;
}
- (NSDictionary *)prepareInitialProps
{
NSMutableDictionary *initProps = [NSMutableDictionary new];
#ifdef RCT_NEW_ARCH_ENABLED
initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);
#endif
return initProps;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return [Orientation getOrientation];
}
#if RCT_NEW_ARCH_ENABLED
#pragma mark - RCTCxxBridgeDelegate
- (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:(RCTBridge *)bridge
{
_turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge
delegate:self
jsInvoker:bridge.jsCallInvoker];
return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);
}
#pragma mark RCTTurboModuleManagerDelegate
- (Class)getModuleClassFromName:(const char *)name
{
return RCTCoreModulesClassProvider(name);
}
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker
{
return nullptr;
}
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
initParams:
(const facebook::react::ObjCTurboModule::InitParams &)params
{
return nullptr;
}
- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass
{
return RCTAppSetupDefaultModuleFromClass(moduleClass);
}
#endif
@end

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14490.49"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="SplashImage" translatesAutoresizingMaskIntoConstraints="NO" id="mLz-pt-VGN">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="mLz-pt-VGN" secondAttribute="bottom" constant="0" id="KJO-J3-fkg"/>
<constraint firstAttribute="trailing" secondItem="mLz-pt-VGN" secondAttribute="trailing" constant="0" id="eqZ-Y5-FHH"/>
<constraint firstItem="mLz-pt-VGN" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="0" id="hVh-5q-gdE"/>
<constraint firstItem="mLz-pt-VGN" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="0" id="ofG-hz-s61"/>
</constraints>
</view>
</objects>
<resources>
<image name="SplashImage"/>
</resources>
</document>

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_0" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" autoresizesSubviews="NO" userInteractionEnabled="NO" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="390" height="844"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView autoresizesSubviews="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" image="BootSplashLogo" translatesAutoresizingMaskIntoConstraints="NO" id="3lX-Ut-9ad">
<rect key="frame" x="145" y="372" width="100" height="100"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" image="YES" notEnabled="YES"/>
</accessibility>
</imageView>
</subviews>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<accessibility key="accessibilityConfiguration">
<accessibilityTraits key="traits" notEnabled="YES"/>
</accessibility>
<constraints>
<constraint firstItem="3lX-Ut-9ad" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="Fh9-Fy-1nT"/>
<constraint firstItem="3lX-Ut-9ad" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="nvB-Ic-PnI"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="0.0" y="0.0"/>
</scene>
</scenes>
<resources>
<image name="BootSplashLogo" width="100" height="100"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@ -0,0 +1,23 @@
{
"images": [
{
"idiom": "universal",
"filename": "bootsplash_logo.png",
"scale": "1x"
},
{
"idiom": "universal",
"filename": "bootsplash_logo@2x.png",
"scale": "2x"
},
{
"idiom": "universal",
"filename": "bootsplash_logo@3x.png",
"scale": "3x"
}
],
"info": {
"version": 1,
"author": "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -44,8 +44,6 @@
<true/>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>hivesigner.com</key>
@ -68,8 +66,6 @@
<string>To get accurate location for sharing</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>To choose and share current location</string>
<key>NSMainNibFile</key>
<string>LaunchScreen</string>
<key>NSMicrophoneUsageDescription</key>
<string>To share recording or video, microphone access is required</string>
<key>NSPhotoLibraryAddUsageDescription</key>
@ -107,7 +103,9 @@
<string>remote-notification</string>
</array>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<string>BootSplash</string>
<key>UIMainStoryboardFile</key>
<string>BootSplash</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>

View File

@ -2,7 +2,8 @@
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}

View File

@ -13,7 +13,7 @@
@implementation EcencyTests
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL (^)(UIView *view))test
{
if (test(view)) {
return YES;
@ -34,23 +34,25 @@
__block NSString *redboxError = nil;
#ifdef DEBUG
RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
if (level >= RCTLogLevelError) {
redboxError = message;
}
});
RCTSetLogFunction(
^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
if (level >= RCTLogLevelError) {
redboxError = message;
}
});
#endif
while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
[[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
[[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
return YES;
}
return NO;
}];
foundElement = [self findSubviewInView:vc.view
matching:^BOOL(UIView *view) {
if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
return YES;
}
return NO;
}];
}
#ifdef DEBUG
@ -61,5 +63,4 @@
XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
}
@end

View File

@ -1,37 +1,60 @@
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
platform :ios, '12.0'
platform :ios, '12.4'
install! 'cocoapods', :deterministic_uuids => false
target 'Ecency' do
config = use_native_modules!
# Flags change depending on the env values.
flags = get_default_flags()
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-Camera', :path => "#{permissions_path}/Camera"
# Pods for Ecency
use_react_native!(:path => config["reactNativePath"])
use_react_native!(
:path => config[:reactNativePath],
# Hermes is now enabled by default. Disable by setting this flag to false.
# Upcoming versions of React Native may rely on get_default_flags(), but
# we make it explicit here to aid in the React Native upgrade process.
:hermes_enabled => true,
:fabric_enabled => flags[:fabric_enabled],
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line.
:flipper_configuration => FlipperConfiguration.disabled,
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
target 'EcencyTests' do
inherit! :complete
# Pods for testing
end
post_install do |installer|
react_native_post_install(
installer,
# Set `mac_catalyst_enabled` to `true` in order to apply patches
# necessary for Mac Catalyst builds
:mac_catalyst_enabled => false
)
__apply_Xcode_12_5_M1_post_install_workaround(installer)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings["ONLY_ACTIVE_ARCH"] = "NO"
end
if target.name == 'TcpSockets'
source_files = target.source_build_phase.files
gcd_async_socket = source_files[0] #First file in build phases is GCDAsyncSocket.m, chage index if not the case
puts "Deleting source file #{gcd_async_socket.inspect} from target #{target.inspect}."
source_files.delete gcd_async_socket
end
end
end
end
target 'Ecency-tvOS' do
# Pods for Ecency-tvOS
target 'Ecency-tvOSTests' do
inherit! :search_paths
# Pods for testing
end
end

File diff suppressed because it is too large Load Diff

View File

@ -24,9 +24,10 @@
"bump-patch": "npm version patch --no-git-tag-version",
"bump-minor": "npm version minor --no-git-tag-version",
"bump-major": "npm version major --no-git-tag-version",
"postinstall": "node_modules/.bin/rn-nodeify --install --hack --yarn && cd ios && pod install"
"postinstall": "npx patch-package && node_modules/.bin/rn-nodeify --install --hack --yarn && cd ios && pod install"
},
"dependencies": {
"@babel/preset-typescript": "^7.16.7",
"@babel/runtime": "^7.5.5",
"@bugsnag/react-native": "^7.11.0",
"@ecency/render-helper": "^2.2.18",
@ -37,29 +38,31 @@
"@hiveio/dhive": "^1.0.1",
"@native-html/iframe-plugin": "^2.6.1",
"@native-html/table-plugin": "^5.3.1",
"@notifee/react-native": "^7.0.4",
"@react-native-async-storage/async-storage": "^1.17.10",
"@react-native-clipboard/clipboard": "^1.8.5",
"@react-native-community/async-storage": "^1.11.0",
"@react-native-community/cameraroll": "^1.3.0",
"@react-native-community/cli-platform-ios": "^4.10.1",
"@react-native-community/netinfo": "^5.3.3",
"@react-native-community/netinfo": "^9.3.5",
"@react-native-community/push-notification-ios": "^1.2.0",
"@react-native-community/toolbar-android": "^0.1.0-rc.2",
"@react-native-community/toolbar-android": "^0.2.1",
"@react-native-firebase/analytics": "^14.9.4",
"@react-native-firebase/app": "^14.9.4",
"@react-native-firebase/dynamic-links": "^14.9.4",
"@react-native-firebase/messaging": "^14.9.4",
"@react-navigation/bottom-tabs": "^6.3.2",
"@react-navigation/drawer": "^6.4.3",
"@react-navigation/native": "^6.0.11",
"@react-navigation/native": "^6.0.13",
"@react-navigation/native-stack": "^6.7.0",
"@react-navigation/stack": "^6.2.2",
"@reduxjs/toolkit": "^1.8.6",
"@tanstack/query-async-storage-persister": "^4.3.9",
"@tanstack/react-query": "^4.3.9",
"@tanstack/react-query-persist-client": "^4.3.9",
"@tradle/react-native-http": "^2.0.0",
"appcenter": "^4.1.0",
"appcenter-analytics": "^4.1.0",
"appcenter-crashes": "^4.1.0",
"appcenter": "4.4.5",
"appcenter-analytics": "4.4.5",
"appcenter-crashes": "4.4.5",
"assert": "^1.1.1",
"axios": "^0.21.2",
"browserify-zlib": "~0.1.4",
@ -70,6 +73,7 @@
"core-js": "3.6.4",
"crypto-js": "^3.1.9-1",
"currency-symbol-map": "^4.0.4",
"deprecated-react-native-prop-types": "^2.3.0",
"diff-match-patch": "^1.0.5",
"dns.js": "^1.0.1",
"domain-browser": "^1.1.1",
@ -79,20 +83,22 @@
"intl": "^1.2.5",
"jsc-android": "^241213.1.0",
"lodash": "^4.17.13",
"lottie-ios": "3.2.3",
"lottie-ios": "3.4.0",
"lottie-react-native": "^5.1.3",
"moment": "^2.29.2",
"path-browserify": "0.0.0",
"process": "^0.11.0",
"punycode": "^1.2.4",
"qs": "^6.11.0",
"querystring-es3": "~0.2.0",
"react": "16.13.1",
"react": "18.1.0",
"react-intl": "^3.9.2",
"react-native": "0.63.4",
"react-native": "0.70.3",
"react-native-actions-sheet": "^0.6.1",
"react-native-actionsheet": "ecency/react-native-actionsheet",
"react-native-animatable": "^1.3.3",
"react-native-autoheight-webview": "^1.5.8",
"react-native-bootsplash": "^4.3.2",
"react-native-camera": "^4.2.1",
"react-native-chart-kit": "^6.11.0",
"react-native-config": "luggit/react-native-config#master",
@ -103,7 +109,7 @@
"react-native-extended-stylesheet": "^0.10.0",
"react-native-fast-image": "^8.3.2",
"react-native-fingerprint-scanner": "hieuvp/react-native-fingerprint-scanner",
"react-native-gesture-handler": "^1.9.0",
"react-native-gesture-handler": "^2.8.0",
"react-native-highlight-words": "^1.0.1",
"react-native-iap": "^7.5.6",
"react-native-image-crop-picker": "^0.35.2",
@ -113,34 +119,32 @@
"react-native-level-fs": "^3.0.0",
"react-native-linear-gradient": "^2.4.2",
"react-native-media-controls": "^2.3.0",
"react-native-modal": "11.5.6",
"react-native-modal": "13.0.1",
"react-native-modal-dropdown": "^1.0.2",
"react-native-modal-popover": "^2.1.0",
"react-native-modal-translucent": "^5.0.0",
"react-native-navigation-bar-color": "^1.0.0",
"react-native-orientation-locker": "^1.4.0",
"react-native-os": "^1.0.1",
"react-native-os": "^1.2.6",
"react-native-permissions": "^3.3.0",
"react-native-portalize": "^1.0.7",
"react-native-progress": "^5.0.0",
"react-native-push-notification": "^7.3.1",
"react-native-qrcode-scanner": "^1.5.5",
"react-native-qrcode-svg": "^6.0.3",
"react-native-randombytes": "^3.6.1",
"react-native-reanimated": "^1",
"react-native-receive-sharing-intent": "ecency/react-native-receive-sharing-intent",
"react-native-reanimated": "^2.4.1",
"react-native-receive-sharing-intent": "^2.0.0",
"react-native-render-html": "^6.0.5",
"react-native-restart": "^0.0.23",
"react-native-safe-area-context": "^3.4.1",
"react-native-screens": "3.13.1",
"react-native-restart": "^0.0.24",
"react-native-safe-area-context": "^4.4.1",
"react-native-screens": "3.14.0",
"react-native-scrollable-tab-view": "ecency/react-native-scrollable-tab-view",
"react-native-slider": "^0.11.0",
"react-native-snap-carousel": "^3.8.0",
"react-native-splash-screen": "^3.3.0",
"react-native-svg": "^12.1.1",
"react-native-swiper": "^1.6.0-rc.3",
"react-native-tcp": "^4.0.0",
"react-native-udp": "^2.1.0",
"react-native-udp": "^4.1.4",
"react-native-unique-id": "^2.0.0",
"react-native-vector-icons": "^6.6.0",
"react-native-version": "^4.0.0",
@ -149,18 +153,18 @@
"react-native-webview": "^11.17.1",
"react-native-youtube-iframe": "^2.1.1",
"react-navigation-redux-helpers": "^4.0.1",
"react-redux": "^7.1.1",
"react-redux": "^8.0.4",
"reactotron-react-native": "^5.0.3",
"readable-stream": "1.0.33",
"redux": "^4.0.4",
"redux-persist": "^6.0.0",
"redux-persist-filesystem-storage": "^4.1.0",
"redux-promise": "^0.6.0",
"redux-thunk": "^2.3.0",
"rn-fetch-blob": "^0.12.0",
"rn-placeholder": "^1.3.2",
"rtl-detect": "^1.0.4",
"speakingurl": "^14.0.1",
"stacktrace-parser": "0.1.4",
"stream-browserify": "^1.0.0",
"stream-browserify": "^3.0.0",
"string_decoder": "~0.10.25",
"timers-browserify": "^1.0.1",
"tty-browserify": "0.0.0",
@ -169,16 +173,16 @@
"vm-browserify": "0.0.4"
},
"devDependencies": {
"@babel/core": "^7.8.4",
"@babel/core": "^7.12.9",
"@babel/helper-environment-visitor": "^7.16.7",
"@babel/runtime": "^7.8.4",
"@babel/runtime": "^7.12.5",
"@bugsnag/source-maps": "^2.2.0",
"@react-native-community/eslint-config": "^1.1.0",
"@react-native-community/eslint-config": "^2.0.0",
"@types/react-redux": "^7.1.16",
"babel-eslint": "^10.0.1",
"babel-jest": "^25.1.0",
"babel-jest": "^26.6.3",
"babel-plugin-transform-remove-console": "^6.9.4",
"eslint": "5.16.0",
"eslint": "^7.32.0",
"eslint-config-airbnb": "^17.1.0",
"eslint-config-prettier": "^6.7.0",
"eslint-plugin-eslint-comments": "^3.1.1",
@ -190,16 +194,14 @@
"eslint-plugin-react-hooks": "^2.3.0",
"eslint-plugin-react-native": "^3.7.0",
"husky": "^3.1.0",
"jest": "^25.1.0",
"jetifier": "^1.6.3",
"jest": "^26.6.3",
"lint-staged": "^7.2.0",
"metro-react-native-babel-preset": "^0.60.0",
"metro-react-native-babel-preset": "0.72.3",
"prettier": "^2.0.2",
"prettier-eslint": "^9.0.1",
"react-test-renderer": "16.13.1",
"reactotron-react-native": "^5.0.0",
"react-native-codegen": "^0.0.13",
"react-test-renderer": "18.1.0",
"reactotron-redux": "^3.1.3",
"redux-devtools-extension": "^2.13.5",
"rn-nodeify": "^10.3.0"
},
"lint-staged": {

View File

@ -0,0 +1,84 @@
diff --git a/node_modules/@esteemapp/react-native-multi-slider/examples/Basic/android/build.gradle b/node_modules/@esteemapp/react-native-multi-slider/examples/Basic/android/build.gradle
index cd8664f..77169be 100644
--- a/node_modules/@esteemapp/react-native-multi-slider/examples/Basic/android/build.gradle
+++ b/node_modules/@esteemapp/react-native-multi-slider/examples/Basic/android/build.gradle
@@ -10,7 +10,7 @@ buildscript {
}
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
@@ -24,7 +24,7 @@ allprojects {
repositories {
google()
mavenLocal()
- jcenter()
+ mavenCentral() //patched
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
diff --git a/node_modules/@esteemapp/react-native-multi-slider/examples/Basic/package.json b/node_modules/@esteemapp/react-native-multi-slider/examples/Basic/package.json
index d878530..61f12f2 100644
--- a/node_modules/@esteemapp/react-native-multi-slider/examples/Basic/package.json
+++ b/node_modules/@esteemapp/react-native-multi-slider/examples/Basic/package.json
@@ -19,5 +19,57 @@
},
"jest": {
"preset": "react-native"
+ },
+ "react-native": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
+ },
+ "browser": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,13 @@
diff --git a/node_modules/@react-native-community/async-storage/android/build.gradle b/node_modules/@react-native-community/async-storage/android/build.gradle
index a0f2770..22072f9 100644
--- a/node_modules/@react-native-community/async-storage/android/build.gradle
+++ b/node_modules/@react-native-community/async-storage/android/build.gradle
@@ -2,7 +2,7 @@
buildscript {
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {

View File

@ -0,0 +1,22 @@
diff --git a/node_modules/@react-native-community/cameraroll/android/build.gradle b/node_modules/@react-native-community/cameraroll/android/build.gradle
index 5582c37..55c446d 100644
--- a/node_modules/@react-native-community/cameraroll/android/build.gradle
+++ b/node_modules/@react-native-community/cameraroll/android/build.gradle
@@ -2,7 +2,7 @@
buildscript {
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {
@@ -32,7 +32,7 @@ android {
repositories {
google()
- jcenter()
+ mavenCentral() //patched
mavenCentral()
}

View File

@ -0,0 +1,22 @@
diff --git a/node_modules/@react-native-community/push-notification-ios/android/build.gradle b/node_modules/@react-native-community/push-notification-ios/android/build.gradle
index 3231b29..c956229 100644
--- a/node_modules/@react-native-community/push-notification-ios/android/build.gradle
+++ b/node_modules/@react-native-community/push-notification-ios/android/build.gradle
@@ -10,7 +10,7 @@ buildscript {
}
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
@@ -24,7 +24,7 @@ allprojects {
repositories {
mavenLocal()
google()
- jcenter()
+ mavenCentral() //patched
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"

View File

@ -0,0 +1,13 @@
diff --git a/node_modules/@react-native-community/toolbar-android/android/build.gradle b/node_modules/@react-native-community/toolbar-android/android/build.gradle
index e414765..3c432e8 100644
--- a/node_modules/@react-native-community/toolbar-android/android/build.gradle
+++ b/node_modules/@react-native-community/toolbar-android/android/build.gradle
@@ -2,7 +2,7 @@
buildscript {
repositories {
google()
- jcenter()
+ mavenCentral()
}
dependencies {

View File

@ -0,0 +1,22 @@
diff --git a/node_modules/lottie-react-native/build.gradle b/node_modules/lottie-react-native/build.gradle
index 184fdbf..9228bb0 100644
--- a/node_modules/lottie-react-native/build.gradle
+++ b/node_modules/lottie-react-native/build.gradle
@@ -3,7 +3,7 @@
buildscript {
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.0'
@@ -14,7 +14,7 @@ allprojects {
repositories {
mavenLocal()
google()
- jcenter()
+ mavenCentral() //patched
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/node_modules/react-native/android")

View File

@ -0,0 +1,155 @@
diff --git a/node_modules/react-native/index.js b/node_modules/react-native/index.js
index d59ba34..7ae53ac 100644
--- a/node_modules/react-native/index.js
+++ b/node_modules/react-native/index.js
@@ -435,32 +435,40 @@ module.exports = {
},
// Deprecated Prop Types
get ColorPropType(): $FlowFixMe {
- invariant(
- false,
- 'ColorPropType has been removed from React Native. Migrate to ' +
- "ColorPropType exported from 'deprecated-react-native-prop-types'.",
- );
+ //TODO: remove patch after migrating all instances of ViewPropTypes to deprecated-react-native-props-types
+ // invariant(
+ // false,
+ // 'ColorPropType has been removed from React Native. Migrate to ' +
+ // "ColorPropType exported from 'deprecated-react-native-prop-types'.",
+ // );
+ return require('deprecated-react-native-prop-types').ColorPropType;
},
get EdgeInsetsPropType(): $FlowFixMe {
- invariant(
- false,
- 'EdgeInsetsPropType has been removed from React Native. Migrate to ' +
- "EdgeInsetsPropType exported from 'deprecated-react-native-prop-types'.",
- );
+ //TODO: remove patch after migrating all instances of ViewPropTypes to deprecated-react-native-props-types
+ // invariant(
+ // false,
+ // 'EdgeInsetsPropType has been removed from React Native. Migrate to ' +
+ // "EdgeInsetsPropType exported from 'deprecated-react-native-prop-types'.",
+ // );
+ return require('deprecated-react-native-prop-types').EdgeInsetsPropType;
},
get PointPropType(): $FlowFixMe {
- invariant(
- false,
- 'PointPropType has been removed from React Native. Migrate to ' +
- "PointPropType exported from 'deprecated-react-native-prop-types'.",
- );
+ //TODO: remove patch after migrating all instances of ViewPropTypes to deprecated-react-native-props-types
+ // invariant(
+ // false,
+ // 'PointPropType has been removed from React Native. Migrate to ' +
+ // "PointPropType exported from 'deprecated-react-native-prop-types'.",
+ // );
+ return require('deprecated-react-native-prop-types').PointPropType;
},
get ViewPropTypes(): $FlowFixMe {
- invariant(
- false,
- 'ViewPropTypes has been removed from React Native. Migrate to ' +
- "ViewPropTypes exported from 'deprecated-react-native-prop-types'.",
- );
+ //TODO: remove patch after migrating all instances of ViewPropTypes to deprecated-react-native-props-types
+ // invariant(
+ // false,
+ // 'ViewPropTypes has been removed from React Native. Migrate to ' +
+ // "ViewPropTypes exported from 'deprecated-react-native-prop-types'.",
+ // );
+ return require('deprecated-react-native-prop-types').ViewPropTypes;
},
};
diff --git a/node_modules/react-native/sdks/hermes/hermes-engine.podspec b/node_modules/react-native/sdks/hermes/hermes-engine.podspec
new file mode 100644
index 0000000..8d331e0
--- /dev/null
+++ b/node_modules/react-native/sdks/hermes/hermes-engine.podspec
@@ -0,0 +1,84 @@
+# Copyright (c) Meta Platforms, Inc. and affiliates.
+#
+# This source code is licensed under the MIT license found in the
+# LICENSE file in the root directory of this source tree.
+
+require "json"
+require "open3"
+
+# sdks/hermesc/osx-bin/ImportHermesc.cmake
+import_hermesc_file=File.join(__dir__, "..", "hermesc", "osx-bin", "ImportHermesc.cmake")
+
+# package.json
+package_file = File.join(__dir__, "..", "..", "package.json")
+package = JSON.parse(File.read(package_file))
+version = package['version']
+
+# We need to check the current git branch/remote to verify if
+# we're on a React Native release branch to actually build Hermes.
+currentbranch, err = Open3.capture3("git rev-parse --abbrev-ref HEAD")
+currentremote, err = Open3.capture3("git config --get remote.origin.url")
+
+source = {}
+git = "https://github.com/facebook/hermes.git"
+
+if ENV.has_key?('HERMES_ENGINE_TARBALL_PATH')
+ Pod::UI.puts '[Hermes] Using pre-built Hermes binaries from local path.' if Object.const_defined?("Pod::UI")
+ source[:http] = "file://#{ENV['HERMES_ENGINE_TARBALL_PATH']}"
+elsif version == '1000.0.0'
+ Pod::UI.puts '[Hermes] Hermes needs to be compiled, installing hermes-engine may take a while...'.yellow if Object.const_defined?("Pod::UI")
+ source[:git] = git
+ source[:commit] = `git ls-remote https://github.com/facebook/hermes main | cut -f 1`.strip
+elsif currentremote.strip.end_with?("facebook/react-native.git") and currentbranch.strip.end_with?("-stable")
+ Pod::UI.puts '[Hermes] Detected that you are on a React Native release branch, building Hermes from source...'.yellow if Object.const_defined?("Pod::UI")
+ hermestag_file = File.join(__dir__, "..", ".hermesversion")
+ hermestag = File.read(hermestag_file).strip
+ source[:git] = git
+ source[:tag] = hermestag
+else
+ source[:http] = "https://github.com/facebook/react-native/releases/download/v#{version}/hermes-runtime-darwin-v#{version}.tar.gz"
+end
+
+module HermesHelper
+ # BUILD_TYPE = :debug
+ BUILD_TYPE = :release
+end
+
+Pod::Spec.new do |spec|
+ spec.name = "hermes-engine"
+ spec.version = version
+ spec.summary = "Hermes is a small and lightweight JavaScript engine optimized for running React Native."
+ spec.description = "Hermes is a JavaScript engine optimized for fast start-up of React Native apps. It features ahead-of-time static optimization and compact bytecode."
+ spec.homepage = "https://hermesengine.dev"
+ spec.license = package["license"]
+ spec.author = "Facebook"
+ spec.source = source
+ spec.platforms = { :osx => "10.13", :ios => "12.4" }
+
+ spec.preserve_paths = ["destroot/bin/*"].concat(HermesHelper::BUILD_TYPE == :debug ? ["**/*.{h,c,cpp}"] : [])
+ spec.source_files = "destroot/include/**/*.h"
+ spec.header_mappings_dir = "destroot/include"
+
+ spec.ios.vendored_frameworks = "destroot/Library/Frameworks/universal/hermes.xcframework"
+ spec.osx.vendored_frameworks = "destroot/Library/Frameworks/macosx/hermes.framework"
+
+ spec.xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++17", "CLANG_CXX_LIBRARY" => "compiler-default", "GCC_PREPROCESSOR_DEFINITIONS" => "HERMES_ENABLE_DEBUGGER=1" }
+
+ if source[:git] then
+ spec.prepare_command = <<-EOS
+ # When true, debug build will be used.
+ # See `build-apple-framework.sh` for details
+ DEBUG=#{HermesHelper::BUILD_TYPE == :debug}
+
+ # Set HERMES_OVERRIDE_HERMESC_PATH if pre-built HermesC is available
+ #{File.exist?(import_hermesc_file) ? "export HERMES_OVERRIDE_HERMESC_PATH=#{import_hermesc_file}" : ""}
+ #{File.exist?(import_hermesc_file) ? "echo \"Overriding HermesC path...\"" : ""}
+
+ # Build iOS framework
+ ./utils/build-ios-framework.sh
+
+ # Build Mac framework
+ ./utils/build-mac-framework.sh
+ EOS
+ end
+end

View File

@ -0,0 +1,20 @@
diff --git a/node_modules/react-native-camera/android/build.gradle b/node_modules/react-native-camera/android/build.gradle
index 4aed495..fc83d00 100644
--- a/node_modules/react-native-camera/android/build.gradle
+++ b/node_modules/react-native-camera/android/build.gradle
@@ -10,7 +10,6 @@ buildscript {
repositories {
google()
mavenCentral()
- jcenter()
}
dependencies {
@@ -56,7 +55,6 @@ android {
repositories {
google()
- jcenter()
mavenCentral()
maven { url "https://jitpack.io" }
maven {

View File

@ -0,0 +1,84 @@
diff --git a/node_modules/react-native-config/Example/android/build.gradle b/node_modules/react-native-config/Example/android/build.gradle
index 50dcb4c..b331665 100644
--- a/node_modules/react-native-config/Example/android/build.gradle
+++ b/node_modules/react-native-config/Example/android/build.gradle
@@ -9,7 +9,7 @@ buildscript {
}
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {
classpath("com.android.tools.build:gradle:4.1.0")
@@ -32,7 +32,7 @@ allprojects {
}
google()
- jcenter()
+ mavenCentral() //patched
maven { url 'https://www.jitpack.io' }
}
}
diff --git a/node_modules/react-native-config/Example/package.json b/node_modules/react-native-config/Example/package.json
index c444c38..187e9b1 100644
--- a/node_modules/react-native-config/Example/package.json
+++ b/node_modules/react-native-config/Example/package.json
@@ -34,5 +34,57 @@
},
"jest": {
"preset": "react-native"
+ },
+ "react-native": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
+ },
+ "browser": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
diff --git a/node_modules/react-native-highlight-words/index.js b/node_modules/react-native-highlight-words/index.js
index e15cc90..15f0b34 100644
--- a/node_modules/react-native-highlight-words/index.js
+++ b/node_modules/react-native-highlight-words/index.js
@@ -2,14 +2,15 @@ import React from 'react';
import {Text} from 'react-native';
import {findAll} from 'highlight-words-core';
import PropTypes from 'prop-types';
+import { TextPropTypes } from 'deprecated-react-native-prop-types';
Highlighter.propTypes = {
autoEscape: PropTypes.bool,
- highlightStyle: Text.propTypes.style,
+ highlightStyle: TextPropTypes.style,
searchWords: PropTypes.arrayOf(PropTypes.string).isRequired,
textToHighlight: PropTypes.string.isRequired,
sanitize: PropTypes.func,
- style: Text.propTypes.style
+ style: TextPropTypes.style
};
/**

View File

@ -0,0 +1,13 @@
diff --git a/node_modules/react-native-iap/android/build.gradle b/node_modules/react-native-iap/android/build.gradle
index 98fb247..00423e1 100644
--- a/node_modules/react-native-iap/android/build.gradle
+++ b/node_modules/react-native-iap/android/build.gradle
@@ -55,7 +55,7 @@ android {
repositories {
google()
mavenCentral()
- jcenter()
+ mavenCentral() //patched
}
dependencies {

View File

@ -0,0 +1,148 @@
diff --git a/node_modules/react-native-modal-dropdown/example/android/build.gradle b/node_modules/react-native-modal-dropdown/example/android/build.gradle
index eed9972..61bdb60 100644
--- a/node_modules/react-native-modal-dropdown/example/android/build.gradle
+++ b/node_modules/react-native-modal-dropdown/example/android/build.gradle
@@ -2,7 +2,7 @@
buildscript {
repositories {
- jcenter()
+ mavenCentral() //patched
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
@@ -15,7 +15,7 @@ buildscript {
allprojects {
repositories {
mavenLocal()
- jcenter()
+ mavenCentral() //patched
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
diff --git a/node_modules/react-native-modal-dropdown/example/package.json b/node_modules/react-native-modal-dropdown/example/package.json
index f6a90bf..c193d34 100644
--- a/node_modules/react-native-modal-dropdown/example/package.json
+++ b/node_modules/react-native-modal-dropdown/example/package.json
@@ -13,5 +13,57 @@
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start"
},
- "private": true
+ "private": true,
+ "react-native": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
+ },
+ "browser": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
+ }
}
diff --git a/node_modules/react-native-modal-dropdown/expo-example/package.json b/node_modules/react-native-modal-dropdown/expo-example/package.json
index a2e74a6..ec044ab 100644
--- a/node_modules/react-native-modal-dropdown/expo-example/package.json
+++ b/node_modules/react-native-modal-dropdown/expo-example/package.json
@@ -17,5 +17,57 @@
"@babel/core": "^7.8.6",
"babel-preset-expo": "~8.1.0"
},
- "private": true
+ "private": true,
+ "react-native": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
+ },
+ "browser": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
+ }
}

View File

@ -0,0 +1,161 @@
diff --git a/node_modules/react-native-modal-popover/lib/Popover.js b/node_modules/react-native-modal-popover/lib/Popover.js
index ddd7fb2..742105f 100644
--- a/node_modules/react-native-modal-popover/lib/Popover.js
+++ b/node_modules/react-native-modal-popover/lib/Popover.js
@@ -203,10 +203,12 @@ class Popover extends React.PureComponent {
this.onOrientationChange();
}
componentDidMount() {
- react_native_1.Dimensions.addEventListener('change', this.onOrientationChange);
+ this.eventSub = react_native_1.Dimensions.addEventListener('change', this.onOrientationChange);
}
componentWillUnmount() {
- react_native_1.Dimensions.removeEventListener('change', this.onOrientationChange);
+ if(this.eventSub){
+ this.eventSub.remove();
+ }
}
UNSAFE_componentWillReceiveProps(nextProps) {
const willBeVisible = nextProps.visible;
diff --git a/node_modules/react-native-modal-popover/lib/PopoverController.js b/node_modules/react-native-modal-popover/lib/PopoverController.js
index 005c07f..71e84f4 100644
--- a/node_modules/react-native-modal-popover/lib/PopoverController.js
+++ b/node_modules/react-native-modal-popover/lib/PopoverController.js
@@ -62,10 +62,12 @@ class PopoverController extends React.PureComponent {
this.closePopover = () => this.setState({ showPopover: false });
}
componentDidMount() {
- react_native_1.Dimensions.addEventListener('change', this.onOrientationChange);
+ this.eventSub = react_native_1.Dimensions.addEventListener('change', this.onOrientationChange);
}
componentWillUnmount() {
- react_native_1.Dimensions.removeEventListener('change', this.onOrientationChange);
+ if(this.eventSub){
+ this.eventSub.remove();
+ }
}
render() {
return this.props.children({
diff --git a/node_modules/react-native-modal-popover/lib/PopoverTouchable.js b/node_modules/react-native-modal-popover/lib/PopoverTouchable.js
index 09c205f..4291920 100644
--- a/node_modules/react-native-modal-popover/lib/PopoverTouchable.js
+++ b/node_modules/react-native-modal-popover/lib/PopoverTouchable.js
@@ -58,10 +58,12 @@ class PopoverTouchable extends React.PureComponent {
};
}
componentDidMount() {
- react_native_1.Dimensions.addEventListener('change', this.onOrientationChange);
+ this.eventSub = react_native_1.Dimensions.addEventListener('change', this.onOrientationChange);
}
componentWillUnmount() {
- react_native_1.Dimensions.removeEventListener('change', this.onOrientationChange);
+ if(this.eventSub){
+ this.eventSub.remove();
+ }
}
render() {
const children = React.Children.toArray(this.props.children);
diff --git a/node_modules/react-native-modal-popover/lib/usePopover.js b/node_modules/react-native-modal-popover/lib/usePopover.js
index 75cc72a..a2ce0cd 100644
--- a/node_modules/react-native-modal-popover/lib/usePopover.js
+++ b/node_modules/react-native-modal-popover/lib/usePopover.js
@@ -45,9 +45,11 @@ function usePopover(calculateStatusBar = false) {
requestAnimationFrame(openPopover);
}
};
- react_native_1.Dimensions.addEventListener('change', onOrientationChange);
+ const eventSub = react_native_1.Dimensions.addEventListener('change', onOrientationChange);
return () => {
- react_native_1.Dimensions.removeEventListener('change', onOrientationChange);
+ if(eventSub){
+ eventSub.remove();
+ }
};
}, [showPopover, openPopover]);
return result;
diff --git a/node_modules/react-native-modal-popover/src/Popover.tsx b/node_modules/react-native-modal-popover/src/Popover.tsx
index 87a449c..fb288e2 100644
--- a/node_modules/react-native-modal-popover/src/Popover.tsx
+++ b/node_modules/react-native-modal-popover/src/Popover.tsx
@@ -171,11 +171,13 @@ export class Popover extends React.PureComponent<PopoverProps, PopoverState> {
}
componentDidMount() {
- Dimensions.addEventListener('change', this.onOrientationChange);
+ this.eventSub = Dimensions.addEventListener('change', this.onOrientationChange);
}
componentWillUnmount() {
- Dimensions.removeEventListener('change', this.onOrientationChange);
+ if(this.eventSub){
+ this.eventSub.remove()
+ }
}
private computeGeometry = (
diff --git a/node_modules/react-native-modal-popover/src/PopoverController.tsx b/node_modules/react-native-modal-popover/src/PopoverController.tsx
index a5e6e32..6d50cd8 100644
--- a/node_modules/react-native-modal-popover/src/PopoverController.tsx
+++ b/node_modules/react-native-modal-popover/src/PopoverController.tsx
@@ -39,11 +39,13 @@ export class PopoverController extends React.PureComponent<Props, State> {
};
componentDidMount() {
- Dimensions.addEventListener('change', this.onOrientationChange);
+ this.eventSub = Dimensions.addEventListener('change', this.onOrientationChange);
}
componentWillUnmount() {
- Dimensions.removeEventListener('change', this.onOrientationChange);
+ if(this.eventSub){
+ this.eventSub.remove();
+ }
}
private onOrientationChange = () => {
diff --git a/node_modules/react-native-modal-popover/src/PopoverTouchable.tsx b/node_modules/react-native-modal-popover/src/PopoverTouchable.tsx
index cbb7526..a43caf5 100644
--- a/node_modules/react-native-modal-popover/src/PopoverTouchable.tsx
+++ b/node_modules/react-native-modal-popover/src/PopoverTouchable.tsx
@@ -18,6 +18,7 @@ export interface State {
}
export class PopoverTouchable extends React.PureComponent<Props, State> {
+
static propTypes = {
onPopoverDisplayed: PropTypes.func,
};
@@ -33,11 +34,13 @@ export class PopoverTouchable extends React.PureComponent<Props, State> {
}
componentDidMount() {
- Dimensions.addEventListener('change', this.onOrientationChange);
+ this.eventSub = Dimensions.addEventListener('change', this.onOrientationChange);
}
componentWillUnmount() {
- Dimensions.removeEventListener('change', this.onOrientationChange);
+ if(this.eventSub){
+ this.eventSub.remove();
+ }
}
private onOrientationChange = () => {
diff --git a/node_modules/react-native-modal-popover/src/usePopover.ts b/node_modules/react-native-modal-popover/src/usePopover.ts
index 2d05b78..7e68dbf 100644
--- a/node_modules/react-native-modal-popover/src/usePopover.ts
+++ b/node_modules/react-native-modal-popover/src/usePopover.ts
@@ -78,9 +78,11 @@ export function usePopover(calculateStatusBar = false): UsePopoverHook {
requestAnimationFrame(openPopover);
}
};
- Dimensions.addEventListener('change', onOrientationChange);
+ const eventSub = Dimensions.addEventListener('change', onOrientationChange);
return () => {
- Dimensions.removeEventListener('change', onOrientationChange);
+ if(eventSub){
+ eventSub.remove();
+ }
};
}, [showPopover, openPopover]);

View File

@ -0,0 +1,12 @@
diff --git a/node_modules/react-native-navigation-bar-color/android/build.gradle b/node_modules/react-native-navigation-bar-color/android/build.gradle
index 24026a4..b1f1d05 100644
--- a/node_modules/react-native-navigation-bar-color/android/build.gradle
+++ b/node_modules/react-native-navigation-bar-color/android/build.gradle
@@ -1,6 +1,6 @@
buildscript {
repositories {
- jcenter()
+ mavenCentral() //patched
}
dependencies {

View File

@ -0,0 +1,20 @@
diff --git a/node_modules/react-native-os/android/build.gradle b/node_modules/react-native-os/android/build.gradle
index 7055b60..af9f183 100644
--- a/node_modules/react-native-os/android/build.gradle
+++ b/node_modules/react-native-os/android/build.gradle
@@ -4,7 +4,7 @@ def safeExtGet(prop, fallback) {
buildscript {
repositories {
- jcenter()
+ mavenCentral() //patched
}
dependencies {
@@ -44,5 +44,5 @@ repositories {
}
dependencies {
- compile 'com.facebook.react:react-native:+'
+ implementation 'com.facebook.react:react-native:+'
}

View File

@ -0,0 +1,22 @@
diff --git a/node_modules/react-native-pager-view/android/build.gradle b/node_modules/react-native-pager-view/android/build.gradle
index 260b52f..e929c19 100644
--- a/node_modules/react-native-pager-view/android/build.gradle
+++ b/node_modules/react-native-pager-view/android/build.gradle
@@ -4,7 +4,7 @@ buildscript {
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {
@@ -51,7 +51,7 @@ android {
repositories {
mavenCentral()
- jcenter()
+ mavenCentral() //patched
google()
def found = false

View File

@ -0,0 +1,20 @@
diff --git a/node_modules/react-native-randombytes/build.gradle b/node_modules/react-native-randombytes/build.gradle
index cfc3084..76e05a9 100644
--- a/node_modules/react-native-randombytes/build.gradle
+++ b/node_modules/react-native-randombytes/build.gradle
@@ -1,6 +1,6 @@
buildscript {
repositories {
- jcenter()
+ mavenCentral() //patched
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
@@ -13,6 +13,6 @@ buildscript {
allprojects {
repositories {
mavenLocal()
- jcenter()
+ mavenCentral() //patched
}
}

View File

@ -0,0 +1,71 @@
diff --git a/node_modules/react-native-receive-sharing-intent/android/build.gradle b/node_modules/react-native-receive-sharing-intent/android/build.gradle
index 02cc8f2..6adbabd 100644
--- a/node_modules/react-native-receive-sharing-intent/android/build.gradle
+++ b/node_modules/react-native-receive-sharing-intent/android/build.gradle
@@ -4,7 +4,7 @@ buildscript {
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {
@@ -52,7 +52,6 @@ android {
repositories {
mavenCentral()
- jcenter()
google()
def found = false
diff --git a/node_modules/react-native-receive-sharing-intent/android/src/main/java/com/reactnativereceivesharingintent/ReceiveSharingIntentModule.java b/node_modules/react-native-receive-sharing-intent/android/src/main/java/com/reactnativereceivesharingintent/ReceiveSharingIntentModule.java
index f752144..c9be5d2 100644
--- a/node_modules/react-native-receive-sharing-intent/android/src/main/java/com/reactnativereceivesharingintent/ReceiveSharingIntentModule.java
+++ b/node_modules/react-native-receive-sharing-intent/android/src/main/java/com/reactnativereceivesharingintent/ReceiveSharingIntentModule.java
@@ -18,18 +18,21 @@ public class ReceiveSharingIntentModule extends ReactContextBaseJavaModule {
private final ReactApplicationContext reactContext;
private ReceiveSharingIntentHelper receiveSharingIntentHelper;
+ private Intent oldIntent;
public ReceiveSharingIntentModule(ReactApplicationContext reactContext) {
super(reactContext);
this.reactContext = reactContext;
Application applicationContext = (Application) reactContext.getApplicationContext();
receiveSharingIntentHelper = new ReceiveSharingIntentHelper(applicationContext);
+
}
protected void onNewIntent(Intent intent) {
Activity mActivity = getCurrentActivity();
if(mActivity == null) { return; }
+ oldIntent = mActivity.getIntent();
mActivity.setIntent(intent);
}
@@ -40,7 +43,9 @@ public class ReceiveSharingIntentModule extends ReactContextBaseJavaModule {
if(mActivity == null) { return; }
Intent intent = mActivity.getIntent();
receiveSharingIntentHelper.sendFileNames(reactContext, intent, promise);
- mActivity.setIntent(null);
+ if (oldIntent != null) {
+ mActivity.setIntent(oldIntent);
+ }
}
@ReactMethod
diff --git a/node_modules/react-native-receive-sharing-intent/src/ReceiveSharingIntent.ts b/node_modules/react-native-receive-sharing-intent/src/ReceiveSharingIntent.ts
index 735c191..91dab4b 100644
--- a/node_modules/react-native-receive-sharing-intent/src/ReceiveSharingIntent.ts
+++ b/node_modules/react-native-receive-sharing-intent/src/ReceiveSharingIntent.ts
@@ -33,7 +33,7 @@ class ReceiveSharingIntentModule implements IReceiveSharingIntent {
}
clearReceivedFiles(){
- this.isClear = true;
+ ReceiveSharingIntent.clearFileNames();
}

View File

@ -0,0 +1,171 @@
diff --git a/node_modules/react-native-scrollable-tab-view/DefaultTabBar.js b/node_modules/react-native-scrollable-tab-view/DefaultTabBar.js
index da58b52..c16e40b 100644
--- a/node_modules/react-native-scrollable-tab-view/DefaultTabBar.js
+++ b/node_modules/react-native-scrollable-tab-view/DefaultTabBar.js
@@ -1,6 +1,7 @@
const React = require('react');
const { ViewPropTypes } = ReactNative = require('react-native');
const PropTypes = require('prop-types');
+const { TextPropTypes } = require('deprecated-react-native-prop-types');
const createReactClass = require('create-react-class');
const {
StyleSheet,
@@ -18,7 +19,7 @@ const DefaultTabBar = createReactClass({
backgroundColor: PropTypes.string,
activeTextColor: PropTypes.string,
inactiveTextColor: PropTypes.string,
- textStyle: Text.propTypes.style,
+ textStyle: TextPropTypes.style,
tabStyle: ViewPropTypes.style,
renderTab: PropTypes.func,
underlineStyle: ViewPropTypes.style,
diff --git a/node_modules/react-native-scrollable-tab-view/Example/android/build.gradle b/node_modules/react-native-scrollable-tab-view/Example/android/build.gradle
index eed9972..61bdb60 100644
--- a/node_modules/react-native-scrollable-tab-view/Example/android/build.gradle
+++ b/node_modules/react-native-scrollable-tab-view/Example/android/build.gradle
@@ -2,7 +2,7 @@
buildscript {
repositories {
- jcenter()
+ mavenCentral() //patched
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
@@ -15,7 +15,7 @@ buildscript {
allprojects {
repositories {
mavenLocal()
- jcenter()
+ mavenCentral() //patched
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
diff --git a/node_modules/react-native-scrollable-tab-view/Example/package.json b/node_modules/react-native-scrollable-tab-view/Example/package.json
index 43348c7..3b037c0 100644
--- a/node_modules/react-native-scrollable-tab-view/Example/package.json
+++ b/node_modules/react-native-scrollable-tab-view/Example/package.json
@@ -1,26 +1,78 @@
{
- "name": "Example",
- "version": "0.0.1",
- "private": true,
- "scripts": {
- "start": "node node_modules/react-native/local-cli/cli.js start",
- "test": "jest"
- },
- "dependencies": {
- "create-react-class": "^15.6.2",
- "react": "16.0.0",
- "react-native": "0.48.4",
- "react-native-scrollable-tab-view": "file:../",
- "react-native-vector-icons": "^4.4.0",
- "react-navigation": "^1.0.0-beta.13"
- },
- "devDependencies": {
- "babel-jest": "21.2.0",
- "babel-preset-react-native": "4.0.0",
- "jest": "21.2.1",
- "react-test-renderer": "16.0.0"
- },
- "jest": {
- "preset": "react-native"
- }
+ "name": "Example",
+ "version": "0.0.1",
+ "private": true,
+ "scripts": {
+ "start": "node node_modules/react-native/local-cli/cli.js start",
+ "test": "jest"
+ },
+ "dependencies": {
+ "create-react-class": "^15.6.2",
+ "react": "16.0.0",
+ "react-native": "0.48.4",
+ "react-native-scrollable-tab-view": "file:../",
+ "react-native-vector-icons": "^4.4.0",
+ "react-navigation": "^1.0.0-beta.13"
+ },
+ "devDependencies": {
+ "babel-jest": "21.2.0",
+ "babel-preset-react-native": "4.0.0",
+ "jest": "21.2.1",
+ "react-test-renderer": "16.0.0"
+ },
+ "jest": {
+ "preset": "react-native"
+ },
+ "react-native": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
+ },
+ "browser": {
+ "zlib": "browserify-zlib",
+ "console": "console-browserify",
+ "constants": "constants-browserify",
+ "crypto": "react-native-crypto",
+ "dns": "dns.js",
+ "net": "react-native-tcp",
+ "domain": "domain-browser",
+ "http": "@tradle/react-native-http",
+ "https": "https-browserify",
+ "os": "react-native-os",
+ "path": "path-browserify",
+ "querystring": "querystring-es3",
+ "fs": "react-native-level-fs",
+ "_stream_transform": "readable-stream/transform",
+ "_stream_readable": "readable-stream/readable",
+ "_stream_writable": "readable-stream/writable",
+ "_stream_duplex": "readable-stream/duplex",
+ "_stream_passthrough": "readable-stream/passthrough",
+ "dgram": "react-native-udp",
+ "stream": "stream-browserify",
+ "timers": "timers-browserify",
+ "tty": "tty-browserify",
+ "vm": "vm-browserify",
+ "tls": false
+ }
}
diff --git a/node_modules/react-native-scrollable-tab-view/ScrollableTabBar.js b/node_modules/react-native-scrollable-tab-view/ScrollableTabBar.js
index 1500b2d..0be6fea 100644
--- a/node_modules/react-native-scrollable-tab-view/ScrollableTabBar.js
+++ b/node_modules/react-native-scrollable-tab-view/ScrollableTabBar.js
@@ -1,6 +1,7 @@
const React = require('react');
const { ViewPropTypes } = ReactNative = require('react-native');
const PropTypes = require('prop-types');
+const { TextPropTypes } = require('deprecated-react-native-prop-types');
const createReactClass = require('create-react-class');
const {
View,
@@ -27,7 +28,7 @@ const ScrollableTabBar = createReactClass({
style: ViewPropTypes.style,
tabStyle: ViewPropTypes.style,
tabsContainerStyle: ViewPropTypes.style,
- textStyle: Text.propTypes.style,
+ textStyle: TextPropTypes.style,
renderTab: PropTypes.func,
underlineStyle: ViewPropTypes.style,
onScroll: PropTypes.func,

View File

@ -0,0 +1,42 @@
diff --git a/node_modules/react-native-slider/lib/Slider.js b/node_modules/react-native-slider/lib/Slider.js
index c640410..fbba022 100644
--- a/node_modules/react-native-slider/lib/Slider.js
+++ b/node_modules/react-native-slider/lib/Slider.js
@@ -5,6 +5,7 @@ var _react=require("react");var _react2=_interopRequireDefault(_react);
var _reactNative=require("react-native");
+var _depPropTypes=require("deprecated-react-native-prop-types");
@@ -555,7 +556,7 @@ return false;}}]);return Slider;}(_react.PureComponent);Slider.propTypes={ /**
* The style applied to the thumb.
*/thumbStyle:_reactNative.ViewPropTypes.style, /**
* Sets an image for the thumb.
- */thumbImage:_reactNative.Image.propTypes.source, /**
+ */thumbImage:_depPropTypes.ImagePropTypes.source, /**
* Set this to true to visually see the thumb touch rect in green.
*/debugTouchArea:_propTypes2.default.bool, /**
* Set to true to animate values with default 'timing' animation type
diff --git a/node_modules/react-native-slider/src/Slider.js b/node_modules/react-native-slider/src/Slider.js
index 37deee5..db33538 100644
--- a/node_modules/react-native-slider/src/Slider.js
+++ b/node_modules/react-native-slider/src/Slider.js
@@ -15,6 +15,7 @@ import {
} from "react-native";
import PropTypes from 'prop-types';
+import { ImagePropTypes } from 'deprecated-react-native-prop-types';
var TRACK_SIZE = 4;
var THUMB_SIZE = 20;
@@ -146,7 +147,7 @@ export default class Slider extends PureComponent {
/**
* Sets an image for the thumb.
*/
- thumbImage: Image.propTypes.source,
+ thumbImage: ImagePropTypes.source,
/**
* Set this to true to visually see the thumb touch rect in green.

View File

@ -0,0 +1,22 @@
diff --git a/node_modules/react-native-tcp/android/build.gradle b/node_modules/react-native-tcp/android/build.gradle
index c582eb7..8e7c4c4 100644
--- a/node_modules/react-native-tcp/android/build.gradle
+++ b/node_modules/react-native-tcp/android/build.gradle
@@ -4,7 +4,7 @@ def safeExtGet(prop, fallback) {
buildscript {
repositories {
- jcenter()
+ mavenCentral() //patched
}
dependencies {
@@ -44,6 +44,6 @@ repositories {
}
dependencies {
- compile 'com.facebook.react:react-native:+'
- compile 'com.koushikdutta.async:androidasync:2.1.6'
+ implementation 'com.facebook.react:react-native:+'
+ implementation 'com.koushikdutta.async:androidasync:2.1.6'
}

View File

@ -0,0 +1,22 @@
diff --git a/node_modules/react-native-vector-icons/android/build.gradle b/node_modules/react-native-vector-icons/android/build.gradle
index 7a686f2..ea53690 100755
--- a/node_modules/react-native-vector-icons/android/build.gradle
+++ b/node_modules/react-native-vector-icons/android/build.gradle
@@ -5,7 +5,7 @@ buildscript {
if (project == rootProject) {
repositories {
google()
- jcenter()
+ mavenCentral() //patched
}
dependencies {
@@ -38,7 +38,7 @@ android {
repositories {
mavenLocal()
google()
- jcenter()
+ mavenCentral() //patched
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"

Some files were not shown because too many files have changed in this diff Show More